Module:Clade/example
Appearance
From Wikipedia, the free encyclopedia
Beta This module is rated as beta, and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected.
See {{Clade example }}.
Usage
[edit ]{{#invoke:Clade|example}}
The above documentation is transcluded from Module:Clade/example/doc. (edit | history)
Editors can experiment in this module's sandbox (create | mirror) and testcases (create) pages.
Subpages of this module.
Editors can experiment in this module's sandbox (create | mirror) and testcases (create) pages.
Subpages of this module.
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]) local parsedNowikiOutput = frame:preprocess ('<syntaxhighlight lang="wikitext">' .. nowikiOutput .. '</syntaxhighlight>') row:tag('td'):css('text-align', 'left') --:wikitext('\n' .. frame:callParserFunction( '#tag:pre', nowikiOutput ) ) -- wrap with <pre> :wikitext('\n' .. parsedNowikiOutput ) -- use 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