Module:Clade/example: Difference between revisions
Appearance
Content deleted Content added
add newline fix |
use nowiki to reused code for code and output columns |
||
Line 41: | Line 41: | ||
if params[v] then |
if params[v] then |
||
if params[v] then |
if params[v] then |
||
if v=="code" and isNoWikiStripMarker(params['code'..i]) then |
|||
⚫ | |||
local nowikiOutput = mw.text.unstripNoWiki(params["code"..i]) |
|||
row:tag('td'):css('text-align', 'left') |
|||
:wikitext('\n' .. frame:callParserFunction( '#tag:pre', nowikiOutput ) ) -- wrap with <pre> |
|||
elseif v=="output" and isNoWikiStripMarker(params['code'..i]) then |
|||
local nowikiOutput = mw.text.unstripNoWiki(params["code"..i]) |
|||
local parsedOutput = frame:preprocess (nowikiOutput) |
|||
row:tag('td'):css('text-align', 'left'):wikitext('\n' .. parsedOutput) |
|||
else |
|||
⚫ | |||
end |
|||
else |
else |
||
row:tag('td') |
row:tag('td') |
||
Line 51: | Line 62: | ||
return tostring(exampleTable) |
return tostring(exampleTable) |
||
end |
end |
||
function isNoWikiStripMarker(str) |
|||
return string.match (str, '^%s*\127[^\127]*UNIQ%-%-nowiki%-%x%x%x%x%x%x%x%x%-QINU[^\127]*\127%s*$') |
|||
end |
|||
function firstToUpper(str) |
function firstToUpper(str) |
||
return (str:gsub("^%l", string.upper)) |
return (str:gsub("^%l", string.upper)) |
Revision as of 15:23, 11 October 2021
local p = {}
function p.example(frame)
local params = mw.getCurrentFrame():getParent().args
-- build HTML table
local exampleTable = mw.html.create('table')
exampleTable:addClass('wikitable')
local align = params['align'] or 'center'
if align == 'center' then
exampleTable:css('margin-left', 'auto')
exampleTable:css('margin-right','auto')
elseif align == 'right' then
exampleTable:css('float',align)
end
local columns = {'description','code','output','comment'}
--local headers = {'Description','Code','Output','Comment'}
-- create header row and add requested headers
local row = exampleTable:tag('tr')
local headerText
for k,v in pairs(columns) do
if params[v] then
if params[v]~='' then headerText=params[v] else headerText = firstToUpper(v) end
row:tag('th'):wikitext(headerText)
end
end
-- now deal with the data rows
local i=0
while i<10 do
i=i+1
local moreRows = false
for k,v in pairs(columns) do
if params[v..i] then moreRows = true end
end
if not moreRows then break end
row = exampleTable:tag('tr')
for k,v in pairs(columns) do
if params[v] then
if params[v] then
if v=="code" and isNoWikiStripMarker(params['code'..i]) then
local nowikiOutput = mw.text.unstripNoWiki(params["code"..i])
row:tag('td'):css('text-align', 'left')
:wikitext('\n' .. frame:callParserFunction( '#tag:pre', nowikiOutput ) ) -- wrap with <pre>
elseif v=="output" and isNoWikiStripMarker(params['code'..i]) then
local nowikiOutput = mw.text.unstripNoWiki(params["code"..i])
local parsedOutput = frame:preprocess (nowikiOutput)
row:tag('td'):css('text-align', 'left'):wikitext('\n' .. parsedOutput)
else
row:tag('td'):css('text-align', 'left'):wikitext('\n' ..params[v..i])
end
else
row:tag('td')
end
end
end
end
return tostring(exampleTable)
end
function isNoWikiStripMarker(str)
return string.match (str, '^%s*\127[^\127]*UNIQ%-%-nowiki%-%x%x%x%x%x%x%x%x%-QINU[^\127]*\127%s*$')
end
function firstToUpper(str)
return (str:gsub("^%l", string.upper))
end
function p.templateStyle( frame, src )
return frame:extensionTag( 'templatestyles', '', { src = src } );
end
-- this must be at end
return p