Help:Lua:修订间差异

帮助页面
添加的内容 删除的内容
(文本替换 - 替换“(維|维)基文本”为“wikitext”)
(文本替换 - 替换“的的”为“的”)
 

(未显示同一用户的2个中间版本)

第69行: 第69行:
* <code>scribunto-doc-page-header</code> — 查看文档页面本身时显示的标题。 模块的名称(有Module:前缀)传递为<code>$1</code>。 默认以斜体显示简要说明。
* <code>scribunto-doc-page-header</code> — 查看文档页面本身时显示的标题。 模块的名称(有Module:前缀)传递为<code>$1</code>。 默认以斜体显示简要说明。


注意模块不可以被直接分类,也不可以直接添加跨维基链接。
注意模块不可以被直接分类,也不可以直接添加跨链接。这些应该放在文档页面里面的{{tag|includeonly}}标签中,当文档页面被引用到模块页面时,这些分类和跨站链接就会应用于模块页面
这些应该放在文档页面里面的{{tag|includeonly}}标签中,当文档页面被引用到模块页面时,这些分类和跨维基链接就会应用于模块页面。


== Lua语言 ==
== Lua语言 ==
第1,725行: 第1,724行:
在当前框架环境下展开wikitext,比如,模板、解析器函数以及像<code><nowiki>{{{1}}}</nowiki></code>这样的参数都会展开。某些特殊的写成XML格式的标记,比如<code>&lt;pre&gt;</code>、<code>&lt;nowiki&gt;</code>、<code>&lt;gallery&gt;</code>和<code>&lt;ref&gt;</code>都会被替换为“strip marker”——一类特殊的字符串,由删除符(ASCII 127)开头,在从<code>#invoke</code>返回后被替换成HTML。
在当前框架环境下展开wikitext,比如,模板、解析器函数以及像<code><nowiki>{{{1}}}</nowiki></code>这样的参数都会展开。某些特殊的写成XML格式的标记,比如<code>&lt;pre&gt;</code>、<code>&lt;nowiki&gt;</code>、<code>&lt;gallery&gt;</code>和<code>&lt;ref&gt;</code>都会被替换为“strip marker”——一类特殊的字符串,由删除符(ASCII 127)开头,在从<code>#invoke</code>返回后被替换成HTML。


如果你使用单个模板,使用[[#frame:expandTemplate|<code>frame:expandTemplate</code>]]而非尝试建造wikitext以使用这个方法。这样更快且更不容易出错,尤其是参数包含管道符或其他维基标记时。
如果你使用单个模板,使用[[#frame:expandTemplate|<code>frame:expandTemplate</code>]]而非尝试建造wikitext以使用这个方法。这样更快且更不容易出错,尤其是参数包含管道符或其他wikitext标记时。


同理,展开单个解析器函数时应使用[[#frame:callParserFunction|<code>frame:callParserFunction</code>]]。
同理,展开单个解析器函数时应使用[[#frame:callParserFunction|<code>frame:callParserFunction</code>]]。
第2,354行: 第2,353行:
* JSON对象会丢弃含有null值的键。
* JSON对象会丢弃含有null值的键。
* 不能直接分辨带有序列整数键的是JSON数组还是JSON对象。
* 不能直接分辨带有序列整数键的是JSON数组还是JSON对象。
* 带有序列整数键从1开始的JSON对象会被解析到作为有相同值的JSON数组的相同的表结构,尽管这些不一定总是相等,除非使用了<code>mw.text.JSON_PRESERVE_KEYS</code>。
* 带有序列整数键从1开始的JSON对象会被解析到作为有相同值的JSON数组的相同的表结构,尽管这些不一定总是相等,除非使用了<code>mw.text.JSON_PRESERVE_KEYS</code>。


==== mw.text.jsonEncode ====
==== mw.text.jsonEncode ====
第2,411行: 第2,410行:


* 以下字符:<code>"</code>、<code>&</code>、<code>'</code>、<code><</code>、<code>=</code>、<code>></code>、<code>[</code>、<code>]</code>、<code>{</code>、<code>|</code>、<code>}</code>
* 以下字符:<code>"</code>、<code>&</code>、<code>'</code>、<code><</code>、<code>=</code>、<code>></code>、<code>[</code>、<code>]</code>、<code>{</code>、<code>|</code>、<code>}</code>
* 字符串开头或新行后面的以下字符:<code>#</code>、<code>*</code>、<code>:</code>、<code>;</code>、空格、制表符('\t')
* 字符串开头或新行后面的以下字符:<code>#</code>、<code>*</code>、<code>:</code>、<code>;</code>、空格、制表符('\t')
* 空行会有关联的新行或返回转义的字符(Blank lines will have one of the associated newline or carriage return characters escaped)
* 空行会有关联的新行或返回转义的字符(Blank lines will have one of the associated newline or carriage return characters escaped)
* 字符串开始处或新行后的<code>----</code>会使得第一个<code>-</code>被转义
* 字符串开始处或新行后的<code>----</code>会使得第一个<code>-</code>被转义
* <code>__</code>会使一个下划线被转义
* <code>__</code>会使一个下划线被转义
* <code>://</code>会使冒号被转义
* <code>://</code>会使冒号被转义
第2,560行: 第2,559行:
* '''isContentPage''':这个页面是否在内容命名空间内。
* '''isContentPage''':这个页面是否在内容命名空间内。
* '''isExternal''':此页面是否具有跨wiki的前缀。
* '''isExternal''':此页面是否具有跨wiki的前缀。
* '''isLocal''':此页面是否在此项目中。例如,在英语维基百科上,任何其他语言维基百科都被视为“本地”(Local),而维基典等则被视为非“本地”。
* '''isLocal''':此页面是否在此项目中。例如,在英语维基百科上,任何其他语言维基百科都被视为“本地”(Local),而维基典等则被视为非“本地”。
* '''isRedirect''':是否是重定向页面的标题。{{red|此函数[[#Expensive properties|可能为高开销]]}}。
* '''isRedirect''':是否是重定向页面的标题。{{red|此函数[[#Expensive properties|可能为高开销]]}}。
* '''isSpecialPage''':该页面是否可能是特殊页面(即“Special”命名空间中的页面)。
* '''isSpecialPage''':该页面是否可能是特殊页面(即“Special”命名空间中的页面)。
第3,166行: 第3,165行:
Scribunto扩展包括一个用于测试用例的基类<code>Scribunto_LuaEngineTestBase</code>,该类将针对LuaSandbox和LuaStandalone引擎运行测试。
Scribunto扩展包括一个用于测试用例的基类<code>Scribunto_LuaEngineTestBase</code>,该类将针对LuaSandbox和LuaStandalone引擎运行测试。
库的测试用例应该扩展这个类,并且不应该覆盖<code>static function suite()</code>。
库的测试用例应该扩展这个类,并且不应该覆盖<code>static function suite()</code>。
在Scribunto扩展中,测试用例应该在<code>tests/engines/LuaCommon/''Name''LibraryTest.php</code>并添加到{{phpi|ScribuntoHooks::unitTestsList()}}中的数组中(在<code>common/Hooks.php</code>中),扩展应该在自己的<code>[[Manual:Hooks/UnitTestsList|UnitTestsList]]</code>钩子函数中添加测试用例,可能取决于是否设置了<code>$wgAutoloadClasses['Scribunto_LuaEngineTestBase']</code>。
在Scribunto扩展中,测试用例应该在<code>tests/engines/LuaCommon/''Name''LibraryTest.php</code>并添加到{{phpi|ScribuntoHooks::unitTestsList()}}中的数组中(在<code>common/Hooks.php</code>中),扩展应该在自己的<code>[[mw:Manual:Hooks/UnitTestsList|UnitTestsList]]</code>钩子函数中添加测试用例,可能取决于是否设置了<code>$wgAutoloadClasses['Scribunto_LuaEngineTestBase']</code>。


大多数时候,制作测试用例需要做的包括:
大多数时候,制作测试用例需要做的包括:
第3,212行: 第3,211行:
有(至少)两种方式来运行PHPUnit测试:
有(至少)两种方式来运行PHPUnit测试:


# 针对核心运行phpunit,允许tests/phpunit/suites/ExtensionsTestSuite.php使用[[Manual:Hooks/UnitTestsList|UnitTestsList]]钩子找到扩展的测试。 如果您的扩展的测试类名称都包含一个唯一的组件(例如扩展的名称),则可以使用<code>--filter</code>选项以仅运行您的扩展的测试。
# 针对核心运行phpunit,允许tests/phpunit/suites/ExtensionsTestSuite.php使用[[mw:Manual:Hooks/UnitTestsList|UnitTestsList]]钩子找到扩展的测试。 如果您的扩展的测试类名称都包含一个唯一的组件(例如扩展的名称),则可以使用<code>--filter</code>选项以仅运行您的扩展的测试。
# 对扩展目录运行phpunit,这将获取以“Test.php”结尾的任何文件。
# 对扩展目录运行phpunit,这将获取以“Test.php”结尾的任何文件。