代码之家  ›  专栏  ›  技术社区  ›  Coderer

Mediawiki模板中的字符串函数?

  •  6
  • Coderer  · 技术社区  · 14 年前

    我最近一直坚持使用的一种更有趣的“编程语言”是Mediawiki模板。你可以用它们提供的有限语法做大量令人惊讶的事情,但是最近我遇到了一个困扰我的问题:在模板参数上使用字符串函数。我想做的(有些简化)是:

    {{myTemp|a=1,2,3,4}}
    

    然后写一个模板,可以像

    You told me _a_ starts with {{#split:{{{a}}}, ",", 0}}
    

    目前,我可以用嵌入的javascript来实现这一点,捕获regexp匹配和document.write,但是a)它是巨大的,b)它是黑客的,c)如果有人关闭javascript,它将可怕地崩溃。(注意,“split”只是一个例子;concatenate、捕获regexp匹配等会更好)

    我意识到 正确的 解决方案是让调用者使用单独的参数来调用模板,但由于各种原因,在我的特定情况下这很难实现。如果根本不可能的话,我想这就是答案,但如果有 一些让模板在后端执行字符串操作的方法,那就太好了。

    2 回复  |  直到 13 年前
        1
  •  6
  •   relet    13 年前

    连接很容易。指派 x = y concat z

    {{#vardefine:x|{{{y}}}{{{z}}}}}
    

    此外,为了增加马克的答案,还有 RegexParserFunctions

    Ceterum Censeo:Mediawiki永远不会被黑客攻击。

        2
  •  2
  •   Reinstate Monica - Goodbye SE    14 年前

    您可以通过扩展来实现这一点,例如 StringFunctions . 但也见 ParserFunctions ParserFunctions/Extended . (您将在 Category:Parser function extensions )

    一个伟大的概述 Help:Extension:ParserFunctions .