Mediawiki标签扩展-链接标签不被处理


Mediawiki tag extension - chained tags do not get processed

我正在尝试为Mediawiki开发一个简单的标签扩展。到目前为止,我基本上是把输入输出出来。当有链式标签时,问题就出现了。例如,对于这个例子:

function efSampleParserInit( Parser &$parser ) {
        $parser->setHook( 'sample', 'efSampleRender' );
        return true;
}
function efSampleRender( $input, array $args, Parser $parser, PPFrame $frame ) {
    return "hello ->" .  $input . "<- hello";
}

如果我在一篇文章中这样写:

This is the text <sample type="1">hello my <sample type="2">brother</sample> John</sample>

只处理第一个sample标签。另一个不是。我想我应该工作与$parser对象,我收到,所以我返回解析的输入,但我不知道如何做到这一点。

此外,Mediawiki的参考资料几乎不存在,如果有类似氧气参考之类的东西就太好了。

使用$parser->recursiveTagParse(),如Manual:Tag_extensions#我如何在扩展中呈现wikittext .

它是一种笨拙的界面,并且没有很好的文档。这样一件看似自然的事情却很难完成,其根本原因是它违背了标签扩展的原始设计意图。它们最初被认为是低级过滤器,可以接收未解析的原始文本并生成HTML,完全绕过正常的解析。因此,例如,如果您想在wiki页面上包含一些用Markdown编写的内容(例如StackOverflow帖子),那么您可以安装一个合适的扩展,然后写入

<markdown>
**Look,** here's some Markdown text!
</markdown>

, MediaWiki解析器会在标签,然后把它交给扩展进行解析。

当然,大多数编写MediaWiki标签扩展的人并不是真的想要替换解析器,而只是对它进行一些调整。但是根据设置标记扩展接口的方式,唯一的方法是递归地调用解析器。我有时会想,在MediaWiki中添加一种新的解析器扩展类型会很好,这种类型的看起来像标签扩展,但不会以如此激烈的方式中断正常的解析。唉,到目前为止,我的动机和大量的空闲时间还不足以真正做些什么。