查看“Module:Documentation”的源代码
←
Module:Documentation
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您必须确认您的电子邮件地址才能编辑页面。请通过
参数设置
设置并确认您的电子邮件地址。
您可以查看和复制此页面的源代码。
local p = {} -- Load modules (language wikis exclusive) local lan = require( 'Module:Lan' ).call -- Customizable strings local i18n = { -- 默认设置,有必要时修改 defaultDocPage = 'doc', -- 文档页后缀 defaultSandboxPage = 'sandbox', -- 沙盒页后缀 defaultTestCasePage = 'testcases', -- 测试用例页后缀 defaultPreload = 'Template:Documentation/preload', -- 存储文档页标准内容的页面 defaultStyles = 'Module:Documentation/styles.css', -- 此模块使用TemplateStyles时的样式表,如您的wiki不使用,则移除或设为nil -- 格式字符串,不应当翻译 commonInternalLink = '[[%s]]', commonInternalLinkPipe = '[[%s|%s]]', commonExternalLink = '[%s]', commonExternalLinkWithName = '[%s %s]', commonNamespacedPage = '%s:%s', commonNamespacedPageWithSub = '%s:%s/%s', -- 命名空间名称,若您的语言偏爱本地化名称,请翻译,虽然翻译与否基本上不会影响实际效果 namespaceCategory = 'Category', namespaceSpecial = 'Special', namespaceUser = 'User', -- 特殊页面名称,若您的语言偏爱本地化名称,请翻译,虽然保持原文仍会链接到正确的页面 specialPurge = 'Purge', specialEdit = 'EditPage', specialHistory = 'PageHistory', -- 如果在您的语言中,类型名称在显示上有区别,请翻译 pageType_page = lan{ [ 'zh-hans' ] = '页面', [ 'zh-hant' ] = '頁面' }, pageType_template = '模板', pageType_module = lan{ [ 'zh-hans' ] = '模块', [ 'zh-hant' ] = '模組' }, pageType_stylesheet = lan{ [ 'zh-hans' ] = '样式表', [ 'zh-hant' ] = '樣式表' }, pageType_script = lan{ [ 'zh-hans' ] = '脚本', [ 'zh-hant' ] = '腳本' }, pageType_json = 'JSON', pageType_message = lan{ [ 'zh-hans' ] = '界面信息', [ 'zh-hant' ] = '介面信息' }, -- 如果您的wiki使用不一样的链接显示方式,请修改下列内容 linkBar = mw.text.nowiki( '[ ' ) .. '%s' .. mw.text.nowiki( ' ]' ), -- 整个链接条使用的整体样式 linkFormat = '%s', -- 单个链接使用的样式 linkSeparator = mw.text.nowiki( mw.getCurrentFrame():callParserFunction( 'int:pipe-separator' ) ), -- 不同链接间的分隔符 -- 不同类型链接的显示名称,有必要时修改 linkTextPurge = mw.getCurrentFrame():callParserFunction( 'int:purge' ), linkTextView = mw.getCurrentFrame():callParserFunction( 'int:view' ), linkTextEdit = mw.getCurrentFrame():callParserFunction( 'int:edit' ), linkTextHistory = mw.getCurrentFrame():callParserFunction( 'int:history_short' ), linkTextCreate = mw.getCurrentFrame():callParserFunction( 'int:create' ), -- p.create()中使用的字符串:使用{{doc}}或{{subst:doc}}时显示的内容 createOutputFormat = '<noinclude>%s%s</noinclude>', -- 整体格式 createSplitDocPagePrompt = '\n<!-- 请将分类/语言链接放在文档页面 -->', -- 要创建的文档页面为独立页面时显示的字符串 createNoSubstCategory = '需要替换模板的页面', -- 使用{{doc}}时未使用替代语法所添加的追踪分类 -- p.docPage()中使用的字符串:文档页显示的内容 docPagePrompt = lan{ -- 文档页{{documentation header}}中显示的消息。参数:代码页是或不是模块时显示的词语;代码页的链接 [ 'zh-hans' ] = '这是文档页面,它%s被放置到%s。查看[[Template:Documentation]]以获取更多信息。', [ 'zh-hant' ] = '這是文件頁面,它%s被放置到%s。查看[[Template:Documentation]]以獲得更多信息。' }, docPagePromptWill = lan{ -- 代码页为模块时使用的词语 [ 'zh-hans' ] = '将', [ 'zh-hant' ] = '將' }, docPagePromptShould = lan{ -- 代码页不为模块时使用的词语 [ 'zh-hans' ] = '应该', [ 'zh-hant' ] = '應該' }, docPageBadDocPrompt = lan{ -- 被标记为baddoc时显示的附加消息 [ 'zh-hans' ] = "<br>'''此%s的文档页面需要改进或添加附加的信息。'''", [ 'zh-hant' ] = "<br>'''此%s的文件頁面需要改進或添加附加的信息。'''" }, docPageCategory = '文档页面', -- 文档页的追踪分类 -- p.page()中使用的字符串:代码页显示的内容 pageNoDocPrompt = lan{ -- 独立文档页不存在时显示的消息,所有参数均为页面类型 [ 'zh-hans' ] = "'''此%s没有文档页面。如果你知道此%s的使用方法,请帮助为其创建文档页面。'''", [ 'zh-hant' ] = "'''此%s没有文件頁面。如果你知道此%s的使用方法,請幫助為其建立文件頁面。'''" }, pageNoDocCategory = '没有文档的%s', -- 没有文档页的代码页追踪分类,参数为页面类型 pageNoDocCategoryDefault = '没有文档的页面', -- 没有文档页的代码页追踪分类(fallback) pageBadDocPrompt = lan{ -- 文档页被标记为baddoc时显示的消息,参数为页面类型 [ 'zh-hans' ] = "'''此%s的文档页面需要改进或添加附加信息。'''\n", [ 'zh-hant' ] = "'''此%s的文件頁面需要改進或添加附加信息。'''\n" }, pageBadDocCategory = '文档质量较低的%s', -- 文档页被标记为baddoc时的代码页追踪分类,参数为页面类型 pageBadDocCategoryDefault = '文档质量较低的页面', -- 文档页被标记为baddoc时的代码页追踪分类(fallback) pageDocHeaderTitle = lan{ -- 文档页页首的标题 [ 'zh-hans' ] = '文档页面', [ 'zh-hant' ] = '文件頁面' }, pageDocJumpToCode = lan{ -- 跳转至代码链接的显示文本 [ 'zh-hans' ] = '跳转至代码 ↴', [ 'zh-hant' ] = '跳轉至程式碼 ↴' }, pageDocHeaderBottom = lan{ -- 文档页页首下部显示的消息 [ 'zh-hans' ] = '上述文档引用自%s。', [ 'zh-hant' ] = '上述文件引用自%s。' }, } -- Customizable functions local function pageCategoryHandler( category ) return i18n.commonInternalLink:format( i18n.commonNamespacedPage:format( i18n.namespaceCategory, category ) ) end -- Load modules local loadStyles = require( 'Module:TSLoader' ).call local static = require( 'Module:Static' ) if not static.Documentation then static.Documentation = {} end -- Internal functions local function getType( namespace, page ) local pageType = 'page' if namespace == 'Module' then pageType = 'module' elseif page.fullText:gsub( '/' .. i18n.defaultDocPage .. '$', '' ):find( '%.css$' ) then pageType = 'stylesheet' elseif page.fullText:gsub( '/' .. i18n.defaultDocPage .. '$', '' ):find( '%.js$' ) then pageType = 'script' elseif page.fullText:gsub( '/' .. i18n.defaultDocPage .. '$', '' ):find( '%.json$' ) then pageType = 'json' elseif namespace == 'MediaWiki' then pageType = 'message' end return pageType end local function getDisplayType( pageType ) return i18n[ 'pageType_' .. pageType ] or i18n.pageType_page end -- Exported functions function p.create( f ) -- Creating a documentation page or transclusion through {{subst:doc}} local args = require( 'Module:ProcessArgs' ).norm() local page = mw.title.getCurrentTitle() local docPage = args.page or i18n.commonNamespacedPageWithSub:format( page.nsText, page.baseText, i18n.defaultDocPage ) local out if not args.content and tostring( page ) == docPage then local pageType = mw.ustring.lower( args.type or getType( page.nsText, page ) ) local pageTypeDisplay = getDisplayType( pageType ) out = f:preprocess( mw.title.new( i18n.defaultPreload ):getContent():gsub( '$1' , pageTypeDisplay ) ) else local templateArgs = {} for _, key in ipairs{ 'type', 'page', 'content', 'nodoc', 'baddoc' } do local val = args[ key ] if val then if key == 'content' then val = '\n' .. val .. '\n' end table.insert( templateArgs, key .. '=' .. val ) end end out = '{{documentation|' .. table.concat( templateArgs, '|' ) .. '}}' out = out:gsub( '|}}', '}}' ) out = i18n.createOutputFormat:format( out, args.content and '' or i18n.createSplitDocPagePrompt ) end if not mw.isSubsting() then out = f:preprocess( out ) if not args.nocat then out = out .. i18n.commonInternalLink:format( i18n.commonNamespacedPage:format( i18n.namespaceCategory, i18n.createNoSubstCategory ) ) end end return out end function p.docPage( f ) -- Header on the documentation page local args = require( 'Module:ProcessArgs' ).merge( true ) local badDoc = args.baddoc if badDoc then static.Documentation.badDoc = '1' end local page = mw.title.getCurrentTitle() local subpage = page.subpageText if subpage == i18n.defaultSandboxPage or subpage == i18n.defaultTestCasePage then page = page.basePageTitle end local docPage = mw.title.new( args.page or i18n.commonNamespacedPageWithSub:format( page.nsText, page.baseText, i18n.defaultDocPage ) ) if docPage ~= page then return end local namespace = page.nsText local pageType = mw.ustring.lower( args.type or getType( namespace, page ) ) local pageTypeDisplay = getDisplayType( pageType ) local body = mw.html.create( 'div' ):addClass( 'documentation' ) body :addClass( badDoc and 'documentation-badDoc' or '' ) :tag( 'div' ) :attr( 'id', 'documentation-header-tools' ) :wikitext( i18n.linkBar:format( i18n.linkFormat:format( i18n.commonInternalLinkPipe:format( i18n.commonNamespacedPageWithSub:format( i18n.namespaceSpecial, i18n.specialPurge, page.fullText ), i18n.linkTextPurge ) ) ) ) :done() :wikitext( i18n.docPagePrompt:format( pageType == 'module' and i18n.docPagePromptWill or i18n.docPagePromptShould, i18n.commonInternalLink:format( i18n.commonNamespacedPage:format( namespace, page.baseText ) ) ) ) if badDoc then body:wikitext( i18n.docPageBadDocPrompt:format( pageTypeDisplay ) ) end if not ( args.nocat or namespace == i18n.namespaceUser ) then body:wikitext( i18n.commonInternalLink:format( i18n.commonNamespacedPage:format( i18n.namespaceCategory, i18n.docPageCategory ) ) ) end return loadStyles( i18n.defaultStyles ) .. tostring( body ) end function p.page( f ) -- Wrapper around the documentation on the main page -- mw.text.trim uses mw.ustring.gsub, which silently fails on large strings local function trim( s ) return ( s:gsub( '^[\t\r\n\f ]+', '' ):gsub( '[\t\r\n\f ]+$', '' ) ) --return string.gsub( s, '^[\t\r\n\f ]*(.-)[\t\r\n\f ]*$', '%1' ) end local args = require( 'Module:ProcessArgs' ).merge( true ) local page = mw.title.getCurrentTitle() local subpage = page.subpageText if subpage == i18n.defaultSandboxPage or subpage == i18n.defaultTestCasePage then page = page.basePageTitle end local namespace = page.nsText local docText = trim( args.content or '' ) if docText == '' then docText = nil end local docPage local noDoc if docText then docPage = page else docPage = mw.title.new( args.page or i18n.commonNamespacedPageWithSub:format( namespace, page.text, i18n.defaultDocPage ) ) noDoc = args.nodoc or not docPage.exists end local badDoc = args.baddoc local pageType = mw.ustring.lower( args.type or getType( namespace, page ) ) local pageTypeDisplay = getDisplayType( pageType ) if not docText and not noDoc then docText = trim( f:expandTemplate{ title = ':' .. docPage.fullText } ) if static.Documentation.badDoc and static.Documentation.badDoc == '1' then badDoc = 1 end if docText == '' then docText = nil noDoc = 1 end end if docText then docText = '\n' .. docText .. '\n' end local docClass = '' local message local category if noDoc then docClass = 'documentation-noDoc' message = i18n.pageNoDocPrompt:format( pageTypeDisplay, pageTypeDisplay ) if not ( args.nocat or namespace == i18n.namespaceUser ) then category = i18n.pageNoDocCategory:format( pageTypeDisplay ) if not mw.title.new( i18n.commonNamespacedPage:format( i18n.namespaceCategory, category ) ).exists then category = i18n.pageNoDocCategoryDefault end end elseif badDoc then docClass = 'documentation-badDoc' message = i18n.pageBadDocPrompt:format( pageTypeDisplay ) if not ( args.nocat or namespace == i18n.namespaceUser ) then category = i18n.pageBadDocCategory:format( pageTypeDisplay ) if not mw.title.new( i18n.commonNamespacedPage:format( i18n.namespaceCategory, category ) ).exists then category = i18n.pageBadDocCategoryDefault end end end -- Generates the link bar local links = mw.html.create( 'span' ) :attr( 'id', 'documentation-header-tools' ) local linkList = {} if not noDoc then if page ~= docPage then table.insert( linkList, i18n.linkFormat:format( i18n.commonInternalLinkPipe:format( docPage.fullText, i18n.linkTextView ) ) ) end table.insert( linkList, i18n.linkFormat:format( i18n.commonInternalLinkPipe:format( i18n.commonNamespacedPageWithSub:format( i18n.namespaceSpecial, i18n.specialEdit, docPage.fullText ), i18n.linkTextEdit ) ) ) table.insert( linkList, i18n.linkFormat:format( i18n.commonInternalLinkPipe:format( i18n.commonNamespacedPageWithSub:format( i18n.namespaceSpecial, i18n.specialHistory, docPage.fullText ), i18n.linkTextHistory ) ) ) else table.insert( linkList, i18n.linkFormat:format( i18n.commonExternalLinkWithName:format( docPage:canonicalUrl{ action = 'edit', preload = i18n.defaultPreload, preloadparams = pageTypeDisplay }, i18n.linkTextCreate ) ) ) end table.insert( linkList, i18n.linkFormat:format( i18n.commonInternalLinkPipe:format( i18n.commonNamespacedPageWithSub:format( i18n.namespaceSpecial, i18n.specialPurge, docPage.fullText ), i18n.linkTextPurge ) ) ) links:wikitext( i18n.linkBar:format( table.concat( linkList, i18n.linkSeparator ) ) ) local body = mw.html.create( 'div' ):addClass( 'documentation' ) body :addClass( docClass ) local header = mw.html.create( 'div' ) :addClass( 'documentation-header-top' ) header :node( links ) :tag( 'span' ) :addClass( 'documentation-header-title' ) :wikitext( i18n.pageDocHeaderTitle ) local codePages = { module = true, stylesheet = true, script = true, } if not noDoc and codePages[ pageType ] then header :tag( 'span' ) :attr( 'id', 'documentation-jump-to-code' ) :wikitext( i18n.commonInternalLinkPipe:format( '#the-code', i18n.pageDocJumpToCode ) ) end body :node( header ):done() :wikitext( message ) :wikitext( docText ) if not noDoc and page ~= docPage then body :tag( 'div' ) :addClass( 'documentation-header-bottom' ) :node( links ) :wikitext( i18n.pageDocHeaderBottom:format( i18n.commonInternalLink:format( docPage.fullText ) ) ) end if category then body:wikitext( pageCategoryHandler( category ) ) end local anchor = '' if not noDoc and pageType ~= 'template' and pageType ~= 'message' then anchor = mw.html.create( 'div' ):attr( 'id', 'the-code' ) end return loadStyles( i18n.defaultStyles ) .. tostring( body ) .. tostring( anchor ) end return p
该页面使用的模板:
Template:Dd
(
查看源代码
)
Template:Dependency declaration
(
查看源代码
)
Template:Documentation header
(
查看源代码
)
Template:Template link
(
查看源代码
)
Template:Tl
(
查看源代码
)
Template:Transclude
(
查看源代码
)
Module:Documentation/doc
(
查看源代码
)
返回
Module:Documentation
。
导航菜单
个人工具
中文
创建账号
登录
命名空间
模块
讨论
English
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
最新文件
随机页面
官方Discord
浏览NeuroWiki
人物列表
直播记录
梗列表
事件列表
物品列表
场景列表
辟谣专区
帮助
帮助
沙盒
NeuroWiki政策文件
编辑规范
怎么正确编辑&更新?
工具
链入页面
相关更改
上传文件
特殊页面
页面信息