Module:Keys

From Miranda NG
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Module documentation[view] [edit] [history] [purge]
Todo: Add ability to wrap line

This module implements {{Hotkey}}. Please see the template page for documentation.

local getArgs = require('Module:Arguments').getArgs
local p = {}
 
function p.main(frame)
	local args = getArgs(frame)
	return p._main(args)
end
 
function p._main(args)
	local langCode = args.lang:lower()
	local keys = {}
	
	for _, key in ipairs(args) do
		table.insert(keys, p.key(key, langCode))
	end
	
	return table.concat(keys, '+')
end

function p.key(key, langCode)
	if not key then
		return ''
	end
	
	local symbols = mw.loadData('Module:Keys/Symbols')
	local symbol = (symbols[key:lower()] or key)
		
	if type(symbol) == 'table' then
		if symbol[langCode] then
			symbol = symbol[langCode]
		else
			symbol = symbol['default']
		end
	end
	
		
	return '<kbd class="key nowrap" style="' .. table.concat({
		'border: 1px solid #AAA',
		'background-color: #F9F9F9',
		'background-image: -webkit-linear-gradient(#EEE, #F9F9F9, #EEE)',
		'background-image: -o-linear-gradient(#EEE, #F9F9F9, #EEE)',
		'background-image: linear-gradient(#EEE, #F9F9F9, #EEE)',
		'padding: 0.1em 0.3em',
		'font-family: inherit',
		'font-size: 85%'
	}, ';') .. '">' .. symbol .. '</kbd>'
end
 
return p