跳转到内容

模块:Namespace pagename/data/doc

本页使用了标题或全文手工转换
维基百科,自由的百科全书

这是Module:Namespace pagename/data的文档页面

本页是 Module:Namespace pagename 的资料页,以 mw.loadData 载入,存放页面类型的名称、各命名空间的默认字尾,以及各种判定规则。本页只有资料,判断逻辑在 Module:Namespace pagename;命名空间本身的名称在 Module:Namespace/data。

各项设定的使用时机与先后顺序见 Module:Namespace pagename#判定顺序。

数据结构

[编辑]

NS

[编辑]

命名空间编号常量,供本页其他设定以名称而非数字索引使用。主模块也会读取,但目前只用到 NS.USER 与 NS.MODULE_TALK。

EVENT(1728)与 EVENT_TALK(1729)虽已定义,但 Module:Namespace/data 未收录其名称,因此这两个命名空间的输出目前是空字符串。

ContentModelMap

[编辑]

内容模型到页面类型的直接映射,命中后不再检查重定向、子页面与页面内容。

内容模型 页面类型 输出(繁体)
css、sanitized-css style 样式
javascript script 工具
json json 数据

NamespaceSuffixConfig

[编辑]

DefaultSuffixList

[编辑]

每个命名空间在没有判断出页面类型时附加的字尾。键是命名空间编号,值为 false 表示不加字尾;未列出的命名空间同样不加字尾。

字尾本身由本页开头的区域变数 suffixTemplates 定义:

名称 en zh-hans zh-hant 用户
page page 页 页 界面、帮助与各讨论命名空间
pageWithSpace page 页 页 目前未被使用
pageName page 页面 页面 特殊
pageNameWithSpace page 页面 页面 项目
userPage page 页 页面 用户
  • “不加字尾”的命名空间:媒体、条目、文件、模板、分类、主题、维基专题、草稿、MOS、字幕、模块、结构式讨论。
  • 英文输出的特殊处理:page 与 pageName 的英文值没有前置空白,因此英文会输出 Talkpage、Helppage、MediaWikipage、Specialpage、User talkpage。要修正请改用带空白的 pageWithSpace/pageNameWithSpace。

EnablePageTypeNamespaces

[编辑]

会进一步检测页面类型(内容模型、重定向、子页面名称、页面内容)的命名空间白名单。不在此列的命名空间一律只输出“命名空间名称+默认字尾”。

目前为:用户(2)、项目(4)、文件(6)、模板(10)、草稿(118)、模块(828)。

此白名单不影响固定沙盒(SandboxPageNames)与编辑提示(NoticeRules),这两项在白名单检查之前就已判断。

AllowTemplateType

[编辑]

允许判定为文件、沙盒、测试样例的命名空间。目前为:用户(2)、模板(10)、模块(828)。

AllowTempType

[编辑]

允许判定为临时页的命名空间。目前为:用户(2)、项目(4)、模板(10)、草稿(118)、模块(828)。

Error

[编辑]

错误讯息,%s 会替换成用户的输入值。

键 用途
pg-error 第二参数无法解析成合法页面名称时输出。
ns-error 目前未被主模块使用。

SandboxPageNames

[编辑]

各命名空间的固定沙盒页名。键是命名空间编号,值是“页面名称 → true”的表,比对的是 title.text(不含命名空间前缀的完整页面名)。

命名空间 页面名称
项目(4) 沙盒、重定向沙盒
用户讨论(3) Sandbox for user warnings~zhwiki
模板(10) 沙盒、X1、X2、X3
分类(14) 沙盒
草稿(118) 沙盒
文件(6) 沙盒.png、沙盒.svg

此外主模块另有一条硬编码规则:用户命名空间下符合 ×××/沙盒(仅一层子页面)的页面也视为沙盒。更深层的 ×××/×××/沙盒 则由 SubpageRules 的 sandbox 规则命中。

SubpageRules

[编辑]

依子页面名称判定页面类型。键是页面类型(须在 #Type 中有对应项),值可包含:

栏位 说明
names 子页面名称的清单。比对前会把 title.subpageText 的第一个字转成小写,因此 /Doc 会命中而 /DOC 不会。
matcher.allowNs 允许的命名空间清单。
matcher.subpageOnly 是否只匹配子页面。

未设 matcher 的规则只在子页面上生效,且命名空间须在 AllowTemplateType(temp 则是 AllowTempType)之中。

目前规则:

类型 names matcher
doc doc -
sandbox sandbox、沙盒 -
testcases testcases、测试样例、測試樣例 -
temp temp、temporary -
intro intro、introduction、说明、說明 模板命名空间,且必须是子页面

NoticeRules

[编辑]

编辑提示类页面的判定规则。matcher 以命名空间编号为键,每项可包含:

栏位 说明
rootText 根页面名称须等于此值。
subpageText 最后一层子页面名称须等于此值(区分大小写)。
onlyFirstLevel 只匹配第一层子页面(title.rootText == title.baseText)。

目前规则:

类型 命中的页面
editnotice Template:Editnotices/×××、User:×××/Editnotice、User talk:×××/Editnotice
mailnotice User:×××/Emailnotice

命中后输出会直接取代整个结果,不附加命名空间名称;#Type 中的 %u 会换成指向 title.rootText 的用户链接。

ContentRules

[编辑]

依页面内容判定类型,是判定顺序中的最后一步。键是页面类型,值是阵列,每项可以是 mw.ustring.match 的 Lua 模式,或接受 (nsid, content) 的函数。

sandbox 不受 AllowTemplateType 限制(只要命名空间在 EnablePageTypeNamespaces 之中即会检测),doc 与 testcases 则另须命名空间在 AllowTemplateType 之中。

类型 侦测的标记
sandbox {{Sandbox…}}、{{Template sandbox notice}},以及简繁两种“请在这行文字底下进行您的测试……”提示
doc {{Documentation subpage}}、{{Template doc inline}}、{{Template doc viewed directly}}
testcases {{Template testcases notice}}、{{Test cases notice}}、{{测试样例}}、{{測試樣例}}

读取页面内容会用到 title:getContent(),计入解析器的昂贵函数配额,因此主模块提供 skipCheckContent 参数可略过这一步。

Type

[编辑]

页面类型的显示名称,格式与 Module:Namespace/data 的语言表相同,由 Module:Lan2 依用户语言回退挑选。分两类:

接在命名空间名称后面当字尾,英文值开头的空白请勿删除:

类型 en zh-hans zh-hant
style styles 样式 样式
script scripts 脚本 工具
json data 数据 数据(zh-tw:资料)
redirect redirect 重定向 重定向
doc documentation 文档 文件
sandbox sandbox 沙盒 沙盒
testcases testcases 测试样例 测试样例
temp temporary page 临时页 临时页
intro introductory page 说明页 说明页

直接取代整个输出,英文值不需要前置空白:

类型 en zh-hans zh-hant 备注
external Interlanguage link 跨语言链接 跨语言链接
editnotice editnotice 编辑提示 编辑提示
mailnotice %u's mailnotice %u的电邮提示 %u的电邮提示 %u 会换成用户链接
shortcut Shortcut of %s %s快捷方式 %s捷径 目前未被主模块使用

shortcut 之所以未被使用,是因为伪命名空间的显示已交由 Module:Namespace 依 Module:Namespace/data 的 PseudoNamespace.messages 产生。

编辑指引

[编辑]
  • 新增页面类型时,须同时在 Type 加入名称,并在 SubpageRules、ContentRules 或 NoticeRules 加入对应的判定规则;字尾型的类型记得在英文值前面留一个空白。
  • 让既有类型适用于更多命名空间时,改 EnablePageTypeNamespaces、AllowTemplateType 或 AllowTempType,不要在主模块里加特例。
  • 新增命名空间时,除了本页的 NS 与 DefaultSuffixList,还要在 Module:Namespace/data 补上名称,否则输出会缺少命名空间名称。
  • 改动后请用 Template:Namespace pagename/testcases 验证,该页已涵盖各命名空间与各页面类型的组合。

参见

[编辑]