Help:Lua/mw

来自滚动的天空Wiki

mw库是由Scribunto扩展提供的重要的库,提供与MediaWiki有关的许多功能。

addWarning[编辑]

mw.addWarning(text)

预览时显示一条警告信息。

allToString[编辑]

mw.allToString(...)

对所有的参数调用tostring(),然后用制表符作为分隔符连接起来。

clone[编辑]

mw.clone(value)

深复制一个值。所有的表和其的元表被重构,但是新表和旧表共用函数。

getCurrentFrame[编辑]

mw.getCurrentFrame()

返回当前的框架对象,通常是最近的#invoke中的框架对象。

incrementExpensiveFunctionCount[编辑]

mw.incrementExpensiveFunctionCount()

使得“高开销解析器函数”计数器加一,并在其超过限制时抛出异常。

isSubsting[编辑]

mw.isSubsting()

如果当前的#invoke被替换引用时返回true,否则false。

loadData[编辑]

mw.loadData(name)

有时一个模块需要大量表的数据。例如,用于转换计量单位的通用模块可能需要一个表存储已识别的单位及其转换系数。而且有时这些模块会在一个页面中使用多次。每次{{#invoke:}}都解析大表的数据,消耗大量时间。而mw.loadData()正是为了避免这个问题。

mw.loadData类似于require(),但是有以下区别:

  • 加载的模块每页只会解析一次,而不是每次调用{{#invoke:}}就解析一次。
  • 加载的模块不会记录在package.loaded中。

从加载的模块返回的值必须是表。其他数据类型不支持。而且:

  • 返回的表(以及其所有子表)只能包含布尔值、数字、字符串和其他表。其他的数据类型,比如函数,不允许。
  • 返回的表(和所有子表)不能有元表。
  • 所有的表的键必须是布尔值、数字、字符串。
  • mw.loadData()返回的表是只读的,具有元方法,可以进行字段访问,也可以用pairs()和ipairs()迭代。但是其他方法,如#操作符、next()和table库的函数不会起作用。

dumpObject[编辑]

mw.dumpObject(object)

将object序列化为人类可读的字符串并返回。

log[编辑]

mw.log(...)

在控制台中输出一段文字。会调用mw.allToString()

在控制台中,该函数与print相同。

logObject[编辑]

mw.logObject(object)mw.logObject(object, prefix)

调用mw.dumpObject()然后输出到控制台中。如果给了prefix,则会在输出的内容前面加上“prefix = ”。例如,

mw.logObject("32", "a")

将会在控制台输出:

a = 32