Module:Clade/example explained

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 = --local headers = -- 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

						            --:wikitext('\n' .. frame:callParserFunction{ name ='#tag:syntaxhighlight', args = { nowikiOutput, lang = "lua" } }) -- wrap with <syntaxhighlight>
							
					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