Module:Su: Difference between revisions
Jump to navigation
Jump to search
Content added Content deleted
(use _main instead of luaMain) |
m (1 revision imported from wikipedia:Module:Su) |
||
(6 intermediate revisions by 4 users not shown) | |||
Line 20: | Line 20: | ||
local options = { |
local options = { |
||
align = args.a, |
align = args.a, |
||
fontSize = args.w |
fontSize = args.w, |
||
lineHeight = args.lh, |
|||
verticalAlign = args.va |
|||
} |
} |
||
return p._main(sup, sub, options) |
return p._main(sup, sub, options) |
||
Line 33: | Line 35: | ||
['display'] = 'inline-block', |
['display'] = 'inline-block', |
||
['margin-bottom'] = '-0.3em', |
['margin-bottom'] = '-0.3em', |
||
['vertical-align'] = sub and '-0.4em' or '0.8em', |
['vertical-align'] = options.verticalAlign or sub and '-0.4em' or '0.8em', |
||
['line-height'] = '1.2em' |
['line-height'] = options.lineHeight or '1.2em' |
||
} |
} |
||
if options.fontSize == 'f' or options.fontSize == 'fixed' then |
if options.fontSize == 'f' or options.fontSize == 'fixed' then |
||
span:css{ |
span:css{ |
||
['font-family'] = 'monospace |
['font-family'] = 'monospace', |
||
['font-size'] = ' |
['font-size'] = '80%' |
||
} |
} |
||
else |
else |
||
span:css('font-size', |
span:css('font-size', options.fontSize or '80%') |
||
end |
end |
||
if options.align == 'r' or options.align == 'right' then |
if options.align == 'r' or options.align == 'right' then |
||
Line 54: | Line 56: | ||
-- Add the wikitext. |
-- Add the wikitext. |
||
span |
span |
||
: |
:tag('sup') |
||
:css('font-size', 'inherit') |
|||
:css('line-height', 'inherit') |
|||
:css('vertical-align', 'baseline') |
|||
:wikitext(sup) |
|||
:done() |
|||
:tag('br', {selfClosing = true}):done() |
:tag('br', {selfClosing = true}):done() |
||
: |
:tag('sub') |
||
:css('font-size', 'inherit') |
|||
:css('line-height', 'inherit') |
|||
:css('vertical-align', 'baseline') |
|||
:wikitext(sub) |
|||
return tostring(span) |
return tostring(span) |
Latest revision as of 00:54, 15 February 2022
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,
fontSize = args.w,
lineHeight = args.lh,
verticalAlign = args.va
}
return p._main(sup, sub, options)
end
function p._main(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'] = options.verticalAlign or sub and '-0.4em' or '0.8em',
['line-height'] = options.lineHeight or '1.2em'
}
if options.fontSize == 'f' or options.fontSize == 'fixed' then
span:css{
['font-family'] = 'monospace',
['font-size'] = '80%'
}
else
span:css('font-size', options.fontSize or '80%')
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
:tag('sup')
:css('font-size', 'inherit')
:css('line-height', 'inherit')
:css('vertical-align', 'baseline')
:wikitext(sup)
:done()
:tag('br', {selfClosing = true}):done()
:tag('sub')
:css('font-size', 'inherit')
:css('line-height', 'inherit')
:css('vertical-align', 'baseline')
:wikitext(sub)
return tostring(span)
end
return p