Module:Su: Difference between revisions
From Zoophilia Wiki
Jump to navigationJump to search
meta>Mr. Stradivarius create replacement for Template:Su |
meta>Mr. Stradivarius use a more Lua-like syntax for the luaMain function |
||
Line 14: | Line 14: | ||
end | end | ||
end | end | ||
return p.luaMain( | |||
-- Define the variables to pass to luaMain. | |||
local sup = args.p | |||
local sub = args.b | |||
local options = { | |||
align = args.a, | |||
fontWidth = args.w | |||
} | |||
return p.luaMain(sup, sub, options) | |||
end | end | ||
function p.luaMain( | function p.luaMain(sup, sub, options) | ||
options = options or {} | |||
local span = mw.html.create('span') | local span = mw.html.create('span') | ||
-- Set the styles | -- Set the styles. | ||
span:css{ | span:css{ | ||
['display'] = 'inline-block', | ['display'] = 'inline-block', | ||
Line 27: | Line 36: | ||
['line-height'] = '1.2em', | ['line-height'] = '1.2em', | ||
} | } | ||
if | if options.fontWidth == 'f' or options.fontWidth == 'fixed' then | ||
span:css{ | span:css{ | ||
['font-family'] = 'monospace,courier', | ['font-family'] = 'monospace,courier', | ||
Line 33: | Line 42: | ||
} | } | ||
else | else | ||
span:css('font-size', | span:css('font-size', options.fontWidth and options.fontWidth or '85%') | ||
end | end | ||
if | if options.align == 'r' or options.align == 'right' then | ||
span:css('text-align', 'right') | span:css('text-align', 'right') | ||
elseif | elseif options.align == 'c' or options.align == 'center' then | ||
span:css('text-align', 'center') | span:css('text-align', 'center') | ||
else | else | ||
Line 43: | Line 52: | ||
end | end | ||
-- Add the wikitext | -- Add the wikitext. | ||
span | span | ||
:wikitext( | :wikitext(sup) | ||
:tag('br', {selfClosing = true}):done() | :tag('br', {selfClosing = true}):done() | ||
:wikitext( | :wikitext(sub) | ||
return tostring(span) | return tostring(span) |
Revision as of 06:04, 17 June 2014
Documentation for this module may be created at Module:Su/doc
-- This module implements {{su}}.
local p = {}
function p.main(frame)
-- Use arguments from the parent frame only, and remove any blank arguments.
-- We don't need to trim whitespace from any arguments, as this module only
-- uses named arguments, and whitespace is trimmed from them automatically.
local origArgs = frame:getParent().args
local args = {}
for k, v in pairs(origArgs) do
if v ~= '' then
args[k] = v
end
end
-- Define the variables to pass to luaMain.
local sup = args.p
local sub = args.b
local options = {
align = args.a,
fontWidth = args.w
}
return p.luaMain(sup, sub, options)
end
function p.luaMain(sup, sub, options)
options = options or {}
local span = mw.html.create('span')
-- Set the styles.
span:css{
['display'] = 'inline-block',
['margin-bottom'] = '-0.3em',
['vertical-align'] = args.b and '-0.4em' or '0.8em',
['line-height'] = '1.2em',
}
if options.fontWidth == 'f' or options.fontWidth == 'fixed' then
span:css{
['font-family'] = 'monospace,courier',
['font-size'] = '85%'
}
else
span:css('font-size', options.fontWidth and options.fontWidth or '85%')
end
if options.align == 'r' or options.align == 'right' then
span:css('text-align', 'right')
elseif options.align == 'c' or options.align == 'center' then
span:css('text-align', 'center')
else
span:css('text-align', 'left')
end
-- Add the wikitext.
span
:wikitext(sup)
:tag('br', {selfClosing = true}):done()
:wikitext(sub)
return tostring(span)
end
return p