#arraymap在输出中不包含分隔符

时间:2011-09-30 05:00:36

标签: mediawiki

很多次,我想创建一个采用值列表的模板,并将它们显示在一个表中,每个都在各自的行上。我试图在一个范围内隐藏逗号,但这打破了表格。

<span style="display:none;">{{#arraymap: {{{programmers|}}}|,|x|</span><!--
-->{{!}} Programmer: {{!!}} x
{{!-}}<span style="display:none;">}}</span>

是否有一种方法可以隐藏分隔符并仍然可以获得一个表格,或者,是否有一种单独的方法可以完全执行此操作?

如果你想要一个完整的简化测试用例,我有以下输入:

{{authors|programmers=Ryan Scheel, Ryan Dean}}

我想要以下输出:

{| class="wikitable"
|-
! colspan="2" style="text-align:center;" ! Authors
|-
| Programmer: || Ryan Scheel
|-
| Programmer: || Ryan Dean
|}

或以模板形式:

{{{!}} class="wikitable"
{{!-}}
! colspan="2" style="text-align:center;" ! Authors
{{!-}}
{{!}} Programmer: {{!!}} Ryan Scheel
{{!-}}
{{!}} Programmer: {{!!}} Ryan Dean
{{!}}}

1 个答案:

答案 0 :(得分:3)

我通过将空的第5个参数传递给函数 [1] 来解决您的问题。该参数定义了用。替换分隔符的内容。

{{#arraymap: Ryan Scheel, Ryan Dean|,|x|<nowiki />
{{!-}}
{{!}} Programmer: {{!!}} x
|<!-- empty 5th parameter -->}}

扩展结果如下:

{|
<nowiki />
|-
| Programmer: || Ryan Scheel<nowiki />
|-
| Programmer: || Ryan Dean
|}

我在测试期间为了自己的方便而略微修改了你的例子,随意根据你的喜好调整它。我将|-(HTML&lt; tr&gt;)放在|(HTML&lt; td&gt;)之前,因为它更符合逻辑。

更重要的是,正如您可能已经知道的那样,解析器函数的参数被称为 [2] 。问题是wiki表标记({||-等)应该位于源代码行的开头,否则不会被解释为 [3] 。所以,为了插入一个换行符,在|-之前的这个例子中,我使用了漂亮的<nowiki />技巧; - )

作为旁注,您的第! colspan="2" (...) ! Authors行有误,“作者”之前的!必须是|


[1] http://www.mediawiki.org/wiki/Extension:Semantic_Forms/Semantic_Forms_and_templates

上的文件

[2]与模板的未命名参数相反!

[3]据我所知,唯一的例外是您可以在之前添加空格和HTML注释。