2015-03-05 3 views
2

Я работаю над модулем 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-объекты?

+0

Вы пробовали кормить его HTML-сущностями? '{{ | |} } 'Это работало хорошо для меня при использовании шаблонов внутри шаблонов. А иногда MW просто странно :) – guaka

ответ

1

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

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

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

еще лучше, как правило, люди избегают гнездиться шаблоны на всех и просто сделать:

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

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

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

Смежные вопросы