2023年政策修订增补工作正在进行中,欢迎参与!
  • Moegirl.ICU:萌娘百科流亡社群 581077156(QQ),欢迎对萌娘百科运营感到失望的编辑者加入
  • Moegirl.ICU:账号认领正在试运行,有意者请参照账号认领流程

帮助:模块中使用标签

萌娘百科,万物皆可萌的百科全书!转载请标注来源页面的网页链接,并声明引自萌娘百科。内容不可商用。
跳转到导航 跳转到搜索
Commons-emblem-notice.svg
这个页面“Help:模块中使用标签”是萌娘百科的帮助文档
  • 本文用于介绍萌娘百科中一些特定功能的操作方法;
  • 本文仅是一篇论述,不属于方针或指引。如果本指南与相关方针或指引发生冲突或存在不一致的情况,请以方针或指引的条文为准。

MediaWiki为模块中提供了很多标签使用方法,皆为面向对象的。本页面介绍它们。

函数

mw.html.create(【标签名字】)是使用对象的第一步。这个函数将返回一个标签对象。如果没有提供参数,则返回一个没有标签的空标签对象。

对象元方法

__tostring

这个元方法使对象变为字符串。因此你可以使用tostring()

对象方法

:wikitext(text)

向这个对象中输入text,添加在关闭标签(空标签对象添加在末尾)的前面。text可以是nil、字符串或数字。不能输入标签对象。如要使用,请先tostring()。返回结果为对象自身。

:attr(attr,value)

向对象增加一个值为valueattrHTML属性。请注意这个方法会覆盖原有属性。返回结果为对象自身。

:addClass(class)

向对象增加class类。不会覆盖原有的。class可以是包含一个或多个类的一个字符串。返回结果为对象自身。

:cssText(css)

向对象增加css的CSS文本。不会覆盖原有的。返回结果为对象自身。

:css(style,value)

向对象增加一个值为valuecssCSS属性。不会覆盖原有的。返回结果为对象自身。

:tag(name)

创建一个新的name标签对象,然后向原来对象中输入这个新对象,添加在关闭标签的前面(空标签对象添加在末尾),并将原来对象设置为新对象的一个属性(父对象)。返回结果为新的对象。

:done()
  1. 返回这个标签对象的父对象。
  2. 如果没有,则新建一个空的标签对象,然后将原对象设为新对象的子对象,并返回新对象。请注意这个方法不对对象造成任何更改,因此若不在赋值时使用则不能放在最后一个方法!!!

注意

  • Lua中缩进是会被忽视的,但缩进方便阅读。建议:
    • 对所有写在同一对象后的方法增加一缩进。
    • 每一次使用:tag(name)增加一缩进。
    • 每一次使用:done()(第一种情况)减少一缩进。
  • Lua中写在同一对象后的方法都属于同一语句,排列方法实际上是一个方法用前一个方法的返回结果。因此,当你写下面代码,变量obj在:done()之前是没有值的。并且只有:done()后面可以加分号。当然你可以全都不换行,但那怎么好看呢?
obj = mw.html.create("div")
   :addClass("foo")
   :tag("span")
        :css("color","#114514")
        :wikitext("bar")
        :done()
  • 此外,如果不:done(),obj就成了一个span而不是div。
  • 不过,div对象仍然存在于内存中。您可以这样调用它:
obj = obj:done()

记住不能漏掉“obj =”,因为:done()不作任何操作,只返回值。

  • 让我们来看看下面两个的区别:
obj = mw.html.create("div")
obj:addClass("foo")
   :tag("span")
        :css("color","#114514")
        :wikitext("bar")
        :done()
   :wikitext("emm")
obj = mw.html.create("div")
   :addClass("foo")
   :tag("span")
   obj:css("color","#114514")
        :wikitext("bar")
        :done()
   :wikitext("emm")

两者区别在于,第一个执行完毕后是div,而第二个是span。这就告诉我们使用:done()一定要弄清变量是否有指向自己想要的对象,自己是在赋值还是直接操作。