Module documentation

This module implements {{Keys}}.

local p = {}

function p.keys(frame)
	local args = frame
	if frame == mw.getCurrentFrame() then
		args = frame:getParent().args
	end
	
	local symbols = mw.loadData('Module:Keys/Symbols')
	local keys = {}
	for _, key in ipairs(args) do
		table.insert(keys, tostring(p.key(mw.text.trim(key), symbols)))
	end
	
	return table.concat(keys, ' + ')
end

function p.key(key, symbols)
	if key == '' or key == nil then return '' end
	
	local value = symbols[key:lower()] or key
	
	if string.find(value, 'File') then
		return mw.html.create('kbd')
			:addClass('custom-key custom-key-image')
			:attr('title', key:lower())
			:wikitext(value)
	else
		return mw.html.create('kbd')
			:addClass('custom-key')
			:attr('title', value)
			:wikitext(value)
	end
end

return p