Module:Keys

From Miranda NG
Jump to: navigation, search
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