Module:SNES button: Difference between revisions
No edit summary |
(No difference)
|
Revision as of 07:39, 20 July 2018
local p = {}
function p.main(frame) local args = frame:getParent().args
args[1] = args[1] or 'A'
return p._main(args) end
function p._main(args) local ret = mw.html.create('span') :addClass('snes-button-wrapper')
for _, v in ipairs(args) do local b = mw.text.trim(v:lower())
if b:find('[+;,()/]') then symbol(ret, b) elseif b:find('[<>^vd]') then dpad(ret, b) else button(ret, b) end end
ret:done()
return tostring(ret) end
function symbol(parent, arg) local arg2 = mw.text.split(arg, ) local ret = parent:tag('span') ret:addClass('snes-button-delimiter') :wikitext(arg2[1]) :done() end
function dpad(parent, arg) local ret = parent:tag('span')
ret:addClass('snes-button-dpad')
:tag('span') :addClass('snes-button-dpad-vert') :done() :tag('span') :addClass('snes-button-dpad-horz') :done() :tag('span') :addClass('snes-button-dpad-mid') :done() :tag('span') :addClass('snes-button-dpad-templatearg') :wikitext(arg) :done() :done()
if arg:find('%^') then ret:addClass('snes-button-dpad-up') end
if arg:find('>') then ret:addClass('snes-button-dpad-right') end
if arg:find('v') then ret:addClass('snes-button-dpad-down') end
if arg:find('<') then ret:addClass('snes-button-dpad-left') end
end
function button(parent, arg) local buttonClass
local arg2 = mw.text.split(arg, ) arg2[1] = arg2[1]:upper() arg2 = table.concat(arg2)
local exactClass = 'snes-button-' .. arg2
if arg == 'a' or arg == 'b' or arg == 'x' or arg == 'y' then buttonClass = 'snes-button-face' elseif arg == 'l' or arg == 'r' then buttonClass = 'snes-button-bumper' elseif arg == 'start' or arg == 'select' then buttonClass = 'snes-button-mid' end
local ret = parent:tag('span')
ret:addClass(buttonClass) :addClass(exactClass) :wikitext(arg2) :done()
end
return p