Module:Infobox road/length: Difference between revisions
Appearance
Content deleted Content added
Fix too small font per MOS:FONTSIZE. rm duplicate "font-size 90%" applied to text that is already at 90%. |
take sandbox live |
||
Line 1: | Line 1: | ||
local p = {} |
local p = {} |
||
local |
local concat = table.concat |
||
local insert = table.insert |
|||
local format = mw.ustring.format |
|||
local frame = mw.getCurrentFrame() |
|||
function p._length(num, args) |
|||
⚫ | |||
local precision = math._precision |
|||
local round = math._round |
|||
local format = math._precision_format |
|||
local lengths = {} |
|||
⚫ | |||
local mi = args["length_mi" .. num] or '' |
local mi = args["length_mi" .. num] or '' |
||
local prec = tonumber(args["length_round" .. num]) |
|||
⚫ | |||
⚫ | |||
prec = prec or precision(mi) |
|||
⚫ | |||
lengths.km = format(tostring(n * 1.609344), tostring(prec)) |
|||
else |
|||
lengths.km = '0' |
|||
end |
|||
⚫ | |||
prec = prec or precision(km) |
|||
lengths.km = format(km, tostring(prec)) |
|||
⚫ | |||
lengths.comp = "mi" |
|||
⚫ | |||
⚫ | |||
local n = tonumber(km) |
|||
prec = prec or precision(km) |
|||
if n then |
|||
lengths.mi = format(tostring(n / 1.609344), tostring(prec)) |
|||
else |
|||
lengths.mi = '0' |
|||
end |
|||
else |
|||
prec = prec or precision(mi) |
|||
lengths.mi = format(mi, tostring(prec)) |
|||
lengths.orig = "mi" |
|||
lengths.comp = "km" |
|||
end |
|||
return lengths |
|||
end |
|||
function p._length(num, args) |
|||
local ref = args["length_ref" .. num] or '' |
local ref = args["length_ref" .. num] or '' |
||
local notes = args["length_notes" .. num] or '' |
local notes = args["length_notes" .. num] or '' |
||
local lengths = getLengths(args, num) |
|||
⚫ | |||
⚫ | |||
⚫ | |||
first = mi |
|||
second = km |
|||
unit = "mi" |
|||
⚫ | |||
else |
else |
||
first = |
first = km |
||
second = |
second = mi |
||
⚫ | |||
⚫ | |||
end |
end |
||
if first == '0' and second == '0' then |
|||
if mi == '' and km == '' then |
|||
return nil |
|||
⚫ | |||
local text = {first, " ", lengths.orig, ref, " (", second, " ", lengths.comp, ")", } |
|||
return frame:expandTemplate{ title = 'cvt', args = { first, unit, unit2, disp = "x", ref .. " ("}} .. ")<div>" .. notes .. "</div>" |
|||
if notes ~= '' then |
|||
⚫ | |||
table.insert(text, "<div>" .. notes .. "</div>") |
|||
return frame:expandTemplate{ title = 'cvt', args = { first, unit, unit2, disp = "x", ref .. " ("}} .. ")" |
|||
end |
end |
||
return table.concat(text) |
|||
end |
end |
||
⚫ | |||
function p.length(frame) |
function p.length(frame) |
Revision as of 20:25, 20 August 2021
local p = {}
local concat = table.concat
local insert = table.insert
local format = mw.ustring.format
local frame = mw.getCurrentFrame()
function p._length(num, args)
local km = args["length_km" .. num] or ''
local mi = args["length_mi" .. num] or ''
local ref = args["length_ref" .. num] or ''
local notes = args["length_notes" .. num] or ''
local first, second, unit, unit2
if mi ~= '0' and km == '' then
first = mi
second = km
unit = "mi"
unit2 = "km"
else
first = km
second = mi
unit = "km"
unit2 = "mi"
end
if mi == '' and km == '' then
return nil
elseif notes ~= '' then
return frame:expandTemplate{ title = 'cvt', args = { first, unit, unit2, disp = "x", ref .. " ("}} .. ")<div>" .. notes .. "</div>"
else
return frame:expandTemplate{ title = 'cvt', args = { first, unit, unit2, disp = "x", ref .. " ("}} .. ")"
end
end
function p.length(frame)
local pframe = frame:getParent()
local config = frame.args -- the arguments passed BY the template, in the wikitext of the template itself
local args = pframe.args -- the arguments passed TO the template, in the wikitext that transcludes the template
local num = config.num or ''
return p._length(num, args)
end
return p