Editing Module:Template test case
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 94: | Line 94: | ||
function Template:getFullPage() | function Template:getFullPage() | ||
if | if self.template then | ||
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 146: | Line 144: | ||
if format == 'code' then | if format == 'code' then | ||
invocation = '<code>' .. mw.text.nowiki(invocation) .. '</code>' | invocation = '<code>' .. mw.text.nowiki(invocation) .. '</code>' | ||
elseif format == 'plain' then | elseif format == 'plain' then | ||
invocation = mw.text.nowiki(invocation) | invocation = mw.text.nowiki(invocation) | ||
Line 160: | Line 156: | ||
function Template:getOutput() | function Template:getOutput() | ||
return self._invocation:getOutput{ | |||
template = self:getName(), | template = self:getName(), | ||
requireMagicWord = self.requireMagicWord, | requireMagicWord = self.requireMagicWord, | ||
} | } | ||
end | end | ||
Line 181: | Line 175: | ||
columns = 'renderColumns', | columns = 'renderColumns', | ||
rows = 'renderRows', | rows = 'renderRows', | ||
tablerows = ' | tablerows = 'renderTableRows', | ||
inline = 'renderInline', | inline = 'renderInline', | ||
default = 'renderDefault' | default = 'renderDefault' | ||
} | } | ||
Line 213: | Line 206: | ||
generalOptions.showcaption = yesno(generalOptions.showcaption) ~= false | generalOptions.showcaption = yesno(generalOptions.showcaption) ~= false | ||
generalOptions.collapsible = yesno(generalOptions.collapsible) | generalOptions.collapsible = yesno(generalOptions.collapsible) | ||
obj.options = generalOptions | obj.options = generalOptions | ||
Line 297: | Line 288: | ||
-- Add tracking categories. At the moment we are only tracking templates | -- Add tracking categories. At the moment we are only tracking templates | ||
-- that use any "heading" parameters | -- that use any "heading" parameters. | ||
obj.categories = {} | obj.categories = {} | ||
for k, v in pairs(options) do | for k, v in pairs(options) do | ||
if type(k) == 'string' and k:find('heading') then | if type(k) == 'string' and k:find('heading') then | ||
obj.categories['Test cases using heading parameters'] = true | obj.categories['Test cases using heading parameters'] = true | ||
break | |||
end | end | ||
end | end | ||
Line 327: | Line 317: | ||
local out = obj:getOutput() | local out = obj:getOutput() | ||
-- Remove the random parts from strip markers. | -- Remove the random parts from strip markers. | ||
out = out:gsub('( | out = out:gsub('(%cUNIQ).-(QINU%c)', '%1%2') | ||
return out | return out | ||
end | end | ||
Line 341: | Line 331: | ||
function TestCase:makeCollapsible(s) | function TestCase:makeCollapsible(s) | ||
local isEqual = self:templateOutputIsEqual() | local isEqual = self:templateOutputIsEqual() | ||
local root = mw.html.create('table') | local root = mw.html.create('table') | ||
root | root | ||
:addClass('collapsible') | |||
:addClass(isEqual and 'collapsed' or nil) | |||
:addClass(' | |||
:css('background-color', 'transparent') | :css('background-color', 'transparent') | ||
:css('width', '100%') | :css('width', '100%') | ||
Line 387: | Line 342: | ||
:tag('th') | :tag('th') | ||
:css('background-color', isEqual and 'lightgreen' or 'yellow') | :css('background-color', isEqual and 'lightgreen' or 'yellow') | ||
:wikitext(title) | :wikitext(self.options.title or self.templates[1]:makeHeader()) | ||
:done() | :done() | ||
:done() | :done() | ||
Line 395: | Line 350: | ||
:wikitext(s) | :wikitext(s) | ||
:newline() | :newline() | ||
return tostring(root) | return tostring(root) | ||
end | end | ||
Line 450: | Line 404: | ||
-- Template output | -- Template output | ||
for i, obj in ipairs(self.templates) do | for i, obj in ipairs(self.templates) do | ||
dataRow:tag('td') | |||
:newline() | |||
:wikitext(self.options.before) | |||
:wikitext(self:getTemplateOutput(obj)) | |||
:wikitext(self.options.after) | |||
end | end | ||
Line 499: | Line 434: | ||
for _, obj in ipairs(self.templates) do | for _, obj in ipairs(self.templates) do | ||
-- Build the row HTML | |||
if self.options.showheader then | |||
tableroot:tag('tr'):tag('td') | |||
:css('text-align', 'center') | |||
:css('font-weight', 'bold') | |||
:wikitext(obj:makeHeader()) | |||
end | |||
tableroot:tag('tr'):tag('td') | |||
:newline() | |||
:wikitext(self:getTemplateOutput(obj)) | |||
end | |||
return tostring(root) | |||
end | |||
function TestCase:renderTableRows() | |||
local root = mw.html.create() | |||
if self.options.showcode then | |||
root | |||
:wikitext(self.templates[1]:getInvocation()) | |||
:newline() | |||
end | |||
local tableroot = root:tag('table') | |||
for i, obj in ipairs(self.templates) do | |||
local dataRow = tableroot:tag('tr') | local dataRow = tableroot:tag('tr') | ||
-- | -- Row header | ||
if self.options.showheader then | if self.options.showheader then | ||
dataRow:tag('th') | |||
:attr('scope', 'row') | |||
:css('text-align', 'left') | |||
:wikitext(obj:makeHeader()) | |||
dataRow:tag('td') | |||
:css('padding', '0 1em') | |||
:wikitext('→') | |||
end | end | ||
-- Template output | -- Template output | ||
dataRow:tag('td') | |||
:newline() | |||
:wikitext(self.options.before) | |||
:wikitext(self:getTemplateOutput(obj)) | |||
:wikitext(self.options.after) | |||
end | end | ||
return tostring(root) | return tostring(root) | ||
end | end | ||
Line 549: | Line 490: | ||
for i, obj in ipairs(self.templates) do | for i, obj in ipairs(self.templates) do | ||
local line = {} | local line = {} | ||
line[#line + 1] = | line[#line + 1] = '* ' | ||
if self.options.showcode then | if self.options.showcode then | ||
line[#line + 1] = obj:getInvocation('code') | line[#line + 1] = obj:getInvocation('code') | ||
Line 556: | Line 497: | ||
line[#line + 1] = ' ' | line[#line + 1] = ' ' | ||
end | end | ||
line[#line + 1] = self:getTemplateOutput(obj) | |||
ret[#ret + 1] = table.concat(line) | ret[#ret + 1] = table.concat(line) | ||
end | end | ||
if self.options.addline then | if self.options.addline then | ||
local line = {} | local line = {} | ||
line[#line + 1] = | line[#line + 1] = '* ' | ||
line[#line + 1] = self.options.addline | line[#line + 1] = self.options.addline | ||
ret[#ret + 1] = table.concat(line) | ret[#ret + 1] = table.concat(line) | ||
end | end | ||
return table.concat(ret, '\n') | return table.concat(ret, '\n') | ||
end | end | ||
Line 649: | Line 519: | ||
ret[#ret + 1] = obj:makeHeader() | ret[#ret + 1] = obj:makeHeader() | ||
end | end | ||
ret[#ret + 1] = self:getTemplateOutput(obj) | |||
end | end | ||
return table.concat(ret, '\n\n') | return table.concat(ret, '\n\n') | ||
Line 745: | Line 609: | ||
function TableInvocation:getOutput(options) | function TableInvocation:getOutput(options) | ||
return mw.getCurrentFrame():expandTemplate{ | return mw.getCurrentFrame():expandTemplate{ | ||
title = options.template, | title = options.template, |