Latest revision |
Your text |
Line 94: |
Line 94: |
|
| |
|
| function Template:getFullPage() | | function Template:getFullPage() |
| if not self.template then | | if self.template then |
| return self.title.prefixedText
| |
| elseif self.template:sub(1, 7) == '#invoke' then
| |
| return 'Module' .. self.template:sub(8):gsub('|.*', '')
| |
| else
| |
| local strippedTemplate, hasColon = self.template:gsub('^:', '', 1) | | local strippedTemplate, hasColon = self.template:gsub('^:', '', 1) |
| hasColon = hasColon > 0 | | hasColon = hasColon > 0 |
Line 110: |
Line 106: |
| return mw.site.namespaces[10].name .. ':' .. strippedTemplate | | return mw.site.namespaces[10].name .. ':' .. strippedTemplate |
| end | | end |
| | else |
| | return self.title.prefixedText |
| end | | end |
| end | | end |
Line 183: |
Line 181: |
| tablerows = 'renderRows', | | tablerows = 'renderRows', |
| inline = 'renderInline', | | inline = 'renderInline', |
| cells = 'renderCells',
| |
| default = 'renderDefault' | | default = 'renderDefault' |
| } | | } |
Line 213: |
Line 210: |
| generalOptions.showcaption = yesno(generalOptions.showcaption) ~= false | | generalOptions.showcaption = yesno(generalOptions.showcaption) ~= false |
| generalOptions.collapsible = yesno(generalOptions.collapsible) | | generalOptions.collapsible = yesno(generalOptions.collapsible) |
| generalOptions.notcollapsed = yesno(generalOptions.notcollapsed)
| |
| generalOptions.wantdiff = yesno(generalOptions.wantdiff)
| |
| obj.options = generalOptions | | obj.options = generalOptions |
|
| |
|
Line 347: |
Line 342: |
| local isEqual = self:templateOutputIsEqual() | | local isEqual = self:templateOutputIsEqual() |
| local root = mw.html.create('table') | | local root = mw.html.create('table') |
| if self.options.wantdiff then
| |
| root | | root |
| :addClass('mw-collapsible') | | :addClass('mw-collapsible') |
| if self.options.notcollapsed == false then
| | :addClass(isEqual and 'mw-collapsed' or nil) |
| root | |
| :addClass('mw-collapsed')
| |
| end
| |
| root
| |
| :css('background-color', 'transparent')
| |
| :css('width', '100%')
| |
| :css('border', 'solid silver 1px')
| |
| :tag('tr')
| |
| :tag('th')
| |
| :css('background-color', isEqual and 'yellow' or '#90a8ee')
| |
| :wikitext(title)
| |
| :done()
| |
| :done()
| |
| :tag('tr')
| |
| :tag('td')
| |
| :newline()
| |
| :wikitext(s)
| |
| :newline()
| |
| else
| |
| root
| |
| :addClass('mw-collapsible')
| |
| if self.options.notcollapsed == false then
| |
| root
| |
| :addClass('mw-collapsed')
| |
| end
| |
| if self.options.notcollapsed ~= true or false then
| |
| root
| |
| :addClass(isEqual and 'mw-collapsed' or nil)
| |
| end
| |
| root
| |
| :css('background-color', 'transparent') | | :css('background-color', 'transparent') |
| :css('width', '100%') | | :css('width', '100%') |
Line 395: |
Line 359: |
| :wikitext(s) | | :wikitext(s) |
| :newline() | | :newline() |
| end
| |
| return tostring(root) | | return tostring(root) |
| end | | end |
Line 575: |
Line 538: |
| end | | end |
| return table.concat(ret, '\n') | | return table.concat(ret, '\n') |
| end
| |
|
| |
| function TestCase:renderCells()
| |
| local root = mw.html.create()
| |
| local dataRow = root:tag('tr')
| |
| dataRow
| |
| :css('vertical-align', 'top')
| |
| :addClass(self.options.class)
| |
| :cssText(self.options.style)
| |
|
| |
| -- Row header
| |
| if self.options.rowheader then
| |
| dataRow:tag('th')
| |
| :attr('scope', 'row')
| |
| :newline()
| |
| :wikitext(self.options.rowheader or self:message('row-header'))
| |
| end
| |
| -- Caption
| |
| if self.options.showcaption then
| |
| dataRow:tag('th')
| |
| :attr('scope', 'row')
| |
| :newline()
| |
| :wikitext(self.options.caption or self:message('columns-header'))
| |
| end
| |
|
| |
| -- Show code
| |
| if self.options.showcode then
| |
| dataRow:tag('td')
| |
| :newline()
| |
| :wikitext(self:getInvocation('code'))
| |
| end
| |
|
| |
| -- Template output
| |
| for i, obj in ipairs(self.templates) do
| |
| if self.options.output == 'nowiki+' then
| |
| dataRow:tag('td')
| |
| :newline()
| |
| :wikitext(self.options.before)
| |
| :wikitext(self:getTemplateOutput(obj))
| |
| :wikitext(self.options.after)
| |
| :wikitext('<pre style="white-space: pre-wrap;">')
| |
| :wikitext(mw.text.nowiki(self.options.before or ""))
| |
| :wikitext(mw.text.nowiki(self:getTemplateOutput(obj)))
| |
| :wikitext(mw.text.nowiki(self.options.after or ""))
| |
| :wikitext('</pre>')
| |
| elseif self.options.output == 'nowiki' then
| |
| dataRow:tag('td')
| |
| :newline()
| |
| :wikitext(mw.text.nowiki(self.options.before or ""))
| |
| :wikitext(mw.text.nowiki(self:getTemplateOutput(obj)))
| |
| :wikitext(mw.text.nowiki(self.options.after or ""))
| |
| else
| |
| dataRow:tag('td')
| |
| :newline()
| |
| :wikitext(self.options.before)
| |
| :wikitext(self:getTemplateOutput(obj))
| |
| :wikitext(self.options.after)
| |
| end
| |
| end
| |
|
| |
|
| |
| return tostring(root)
| |
| end | | end |
|
| |
|
Line 745: |
Line 646: |
|
| |
|
| function TableInvocation:getOutput(options) | | function TableInvocation:getOutput(options) |
| if (options.template:sub(1, 7) == '#invoke') then
| |
| local moduleCall = mw.text.split(options.template, '|', true)
| |
| local args = mw.clone(self.invokeArgs)
| |
| table.insert(args, 1, moduleCall[2])
| |
| return mw.getCurrentFrame():callParserFunction(moduleCall[1], args)
| |
| end
| |
| return mw.getCurrentFrame():expandTemplate{ | | return mw.getCurrentFrame():expandTemplate{ |
| title = options.template, | | title = options.template, |