Как предотвратить экранирование тегов, связанных с таблицей, вне контекста таблицы

Я работаю над модулем Scribunto, который принимает переменное количество аргументов для создания таблицы. У меня есть шаблон, который вызывает модуль, и отдельный шаблон для строк в таблице. Тем не менее, один из компонентов всегда будет вне контекста таблицы, который, в свою очередь, кажется, экранирует <tr> а также <td> теги.

вызывающий шаблон не содержит ничего, кроме {{#invoke:Module|module}}

шаблон строки содержит следующий пример кода:

|-
| {{{1}}}
| {{{2}}}

Любые страницы, которые используют этот шаблон, включают его

{{InvokeTemplate
| {{InvokeTemplate row | data1 | data2}}
}}

Я попытался создать таблицу в модуле lua

args = frame:getParent().args
t = mw.create.html('table')
t
    :tag('tr')
        :tag('th')
            :wikitext('Header1')
        :tag('th')
            :wikitext('Header2')
    :wikitext(args[1])

return tostring(t)

На данный момент шаблон строки не был в контексте таблицы, таким образом, шаблон строки не отображался. Затем я попытался использовать HTML в шаблоне строки, но теги были переведены в сущности. Наконец, я попытался добавить теги создания таблицы в вызывающий шаблон, используя {| а также |}и изменив модуль lua на t = mw.create.html(), но в то время как теги шаблона строки были в порядке, теги в модуле lua были переведены.

Как запретить MediaWiki переводить эти теги в HTML-объекты?

1 ответ

В дополнение к тому, что сказал Каспер: AFAIK ваш модуль должен выводить вики-текст, а не HTML. Кроме того, вызов вложенного шаблона делает все это довольно хрупким, возможно, компенсируя любой выигрыш, полученный с помощью Lua.

Этот вызов с явным параметром уже будет менее хрупким:

{{InvokeTemplate
|1= {{InvokeTemplate row | data1 | data2}}
}}

Более того, обычно люди вообще избегают вложения шаблонов и просто делают:

{{Table header}}
{{Table row | A | B }}
...
{{Table footer}}

В качестве альтернативы, если вы используете Lua, вы должны создать шаблон, который передает неограниченное количество параметров модулю, который создает вики-текст для всей таблицы, включая заголовок.

Но из вашего примера совсем не понятно, зачем вам нужны шаблоны и т. Д., Чтобы скрыть синтаксис таблицы, поэтому сложнее предложить конкретное решение. https://meta.wikimedia.org/wiki/Help:Advanced_templates может помочь со многими причудами шаблона.

Другие вопросы по тегам