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 140: | Line 138: | ||
function Template:getInvocation(format) | function Template:getInvocation(format) | ||
local invocation = self._invocation:getInvocation | local invocation = self._invocation:getInvocation(self:getName()) | ||
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 153: | ||
function Template:getOutput() | function Template:getOutput() | ||
return self._invocation:getOutput(self:getName()) | |||
end | end | ||
Line 181: | Line 169: | ||
columns = 'renderColumns', | columns = 'renderColumns', | ||
rows = 'renderRows', | rows = 'renderRows', | ||
inline = 'renderInline', | inline = 'renderInline', | ||
default = 'renderDefault' | default = 'renderDefault' | ||
} | } | ||
Line 211: | Line 197: | ||
generalOptions.showcode = yesno(generalOptions.showcode) | generalOptions.showcode = yesno(generalOptions.showcode) | ||
generalOptions.showheader = yesno(generalOptions.showheader) ~= false | generalOptions.showheader = yesno(generalOptions.showheader) ~= false | ||
generalOptions.collapsible = yesno(generalOptions.collapsible) | generalOptions.collapsible = yesno(generalOptions.collapsible) | ||
obj.options = generalOptions | obj.options = generalOptions | ||
Line 281: | Line 264: | ||
return ret | return ret | ||
end)(templateOptions) | end)(templateOptions) | ||
-- Make the template objects | -- Make the template objects | ||
obj.templates = {} | obj.templates = {} | ||
for i, | for i, t in ipairs(templateOptions) do | ||
table.insert(obj.templates, Template.new(invocationObj, | table.insert(obj.templates, Template.new(invocationObj, t)) | ||
end | end | ||
-- 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 | ||
categories['Test cases using heading parameters'] = true | |||
break | |||
end | end | ||
end | end | ||
Line 327: | Line 301: | ||
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 315: | ||
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 326: | ||
: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 334: | ||
:wikitext(s) | :wikitext(s) | ||
:newline() | :newline() | ||
return tostring(root) | return tostring(root) | ||
end | end | ||
Line 411: | Line 349: | ||
if self.options.showheader then | if self.options.showheader then | ||
-- Caption | -- Caption | ||
tableroot | |||
:addClass(self.options.class) | |||
:cssText(self.options.style) | |||
:tag('caption') | |||
:wikitext(self.options.caption or self:message('columns-header')) | |||
-- Headers | -- Headers | ||
Line 450: | Line 386: | ||
-- 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 416: | ||
for _, obj in ipairs(self.templates) do | for _, obj in ipairs(self.templates) do | ||
-- Build the row HTML | |||
-- | |||
if self.options.showheader then | if self.options.showheader then | ||
tableroot:tag('tr'):tag('td') | |||
:css('text-align', 'center') | |||
:css('font-weight', 'bold') | |||
:wikitext(obj:makeHeader()) | |||
end | end | ||
tableroot:tag('tr'):tag('td') | |||
:newline() | |||
:wikitext(self:getTemplateOutput(obj)) | |||
end | end | ||
Line 549: | Line 436: | ||
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 443: | ||
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 | ||
return table.concat(ret, '\n') | return table.concat(ret, '\n') | ||
end | end | ||
Line 649: | Line 459: | ||
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 696: | Line 500: | ||
end | end | ||
function NowikiInvocation:getInvocation( | function NowikiInvocation:getInvocation(template) | ||
template = template:gsub('%%', '%%%%') -- Escape "%" with "%%" | |||
local invocation, count = self.invocation:gsub( | local invocation, count = self.invocation:gsub( | ||
self.cfg.templateNameMagicWordPattern, | self.cfg.templateNameMagicWordPattern, | ||
template | template | ||
) | ) | ||
if | if count < 1 then | ||
error(self:message( | error(self:message( | ||
'nowiki-magic-word-error', | 'nowiki-magic-word-error', | ||
Line 711: | Line 515: | ||
end | end | ||
function NowikiInvocation:getOutput( | function NowikiInvocation:getOutput(template) | ||
local invocation = self:getInvocation( | local invocation = self:getInvocation(template) | ||
return mw.getCurrentFrame():preprocess(invocation) | return mw.getCurrentFrame():preprocess(invocation) | ||
end | end | ||
Line 732: | Line 536: | ||
end | end | ||
function TableInvocation:getInvocation( | function TableInvocation:getInvocation(template) | ||
if self.code then | if self.code then | ||
local nowikiObj = NowikiInvocation.new(self.code, self.cfg) | local nowikiObj = NowikiInvocation.new(self.code, self.cfg) | ||
return nowikiObj:getInvocation( | return nowikiObj:getInvocation(template) | ||
else | else | ||
return require('Module:Template invocation').invocation( | return require('Module:Template invocation').invocation( | ||
template, | |||
self.invokeArgs | self.invokeArgs | ||
) | ) | ||
Line 744: | Line 548: | ||
end | end | ||
function TableInvocation:getOutput( | function TableInvocation:getOutput(template) | ||
return mw.getCurrentFrame():expandTemplate{ | return mw.getCurrentFrame():expandTemplate{ | ||
title = | title = template, | ||
args = self.invokeArgs | args = self.invokeArgs | ||
} | } |