模组:Namespace pagename/data/doc
这是Module:Namespace pagename/data的文档页面
| 此页面是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 验证,该页已涵盖各命名空间与各页面类型的组合。
参见
[编辑]- Module:Namespace pagename-使用本页资料的主模组
- Module:Namespace/data-命名空间名称的资料
- Module:Lan2-语言回退
- Template:Namespace pagename、Template:Namespace pagename/testcases-包装模板与测试样例