Jump to content

Module:Clade/example

From Wikiversity

Documentation for this module may be created at Module:Clade/example/doc

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 
					row:tag('td'):css('text-align', 'left'):wikitext('\n' ..params[v..i]) 
				else
					row:tag('td')
				end
			end
		end
    end

	return tostring(exampleTable)
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