Module:Table style

From Ekatra Wiki
Revision as of 09:56, 8 October 2022 by Shnehrashmi (talk | contribs) (Created page with "local TableTools = require('Module:TableTools') local getArgs = require('Module:Arguments').getArgs local p = {} local raw_styles = mw.loadData('Module:Table style/data') local styles = {} for k, v in pairs(raw_styles) do local style = v.style local names = v.aliases styles[k] = style for _, name in pairs(names) do styles[name] = style end end function p.main(frame) local args = getArgs(frame) return p._main(args) end function p._main(args) local str = "" f...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Documentation for this module may be created at Module:Table style/doc

local TableTools = require('Module:TableTools')
local getArgs = require('Module:Arguments').getArgs
local p = {}

local raw_styles = mw.loadData('Module:Table style/data')
local styles = {}
for k, v in pairs(raw_styles) do
	local style = v.style
	local names = v.aliases
	styles[k] = style
	for _, name in pairs(names) do
		styles[name] = style
	end
end

function p.main(frame)
	local args = getArgs(frame)
	return p._main(args)
end

function p._main(args)
	local str = ""
	for _, arg in pairs(args) do
		if styles[arg] ~= nil and styles[arg] ~= '' then
	    	str = str .. styles[arg]
	    else
	    	str = str .. arg .. ";"
	    end
	end
	if str ~= '' then
		-- Only add attribute wrapper if any valid style codes were given.
		str = 'style="' .. str .. '"'
	end
	return str
end

function p.supported_codes(frame)
	frame = mw.getCurrentFrame()
	local t = mw.html.create('table')
		:addClass('wikitable')
	t:tag('tr')
		:tag('th'):wikitext('Code')
		:tag('th'):wikitext('Aliases')
		:tag('th'):wikitext('Output CSS Style')
	for k, v in TableTools.sortedPairs(raw_styles, function(a, b) return a < b end) do
		local row = t:tag('tr')
		row:tag('td'):tag('code'):wikitext(k)
		local aliasList = frame:expandTemplate{
			title = 'bulleted list',
			args = v.aliases
		}
		row:tag('td'):wikitext(aliasList)
		row:tag('td'):tag('code'):wikitext(v.style)
	end
	return t
end

return p