Как предотвратить экранирование тегов, связанных с таблицей, вне контекста таблицы
Я работаю над модулем 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 может помочь со многими причудами шаблона.