Module:Infobox road/length: Difference between revisions
Jump to navigation
Jump to search
(Created page with "local p = {} local math = require "Module:Math" local function getLengths(args, num) local precision = math._precision local round = math._round local format = m...") |
en>Jonesey95 (Fix too small font per MOS:FONTSIZE. rm duplicate "font-size 90%" applied to text that is already at 90%.) |
||
Line 60: | Line 60: | ||
local text = {first, " ", lengths.orig, ref, " (", second, " ", lengths.comp, ")", } | local text = {first, " ", lengths.orig, ref, " (", second, " ", lengths.comp, ")", } | ||
if notes ~= '' then | if notes ~= '' then | ||
table.insert(text, "<div | table.insert(text, "<div>" .. notes .. "</div>") | ||
end | end | ||
return table.concat(text) | return table.concat(text) |
Revision as of 14:56, 25 August 2020
Documentation for this module may be created at Module:Infobox road/length/doc
local p = {}
local math = require "Module:Math"
local function getLengths(args, num)
local precision = math._precision
local round = math._round
local format = math._precision_format
local lengths = {}
local km = args["length_km" .. num] or ''
local mi = args["length_mi" .. num] or ''
local prec = tonumber(args["length_round" .. num])
if '' == km then
local n = tonumber(mi)
prec = prec or precision(mi)
if n then
lengths.km = format(tostring(n * 1.609344), tostring(prec))
else
lengths.km = '0'
end
else
prec = prec or precision(km)
lengths.km = format(km, tostring(prec))
lengths.orig = "km"
lengths.comp = "mi"
end
if '' == mi then
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 notes = args["length_notes" .. num] or ''
local lengths = getLengths(args, num)
local first, second
if lengths.orig == "mi" then
first = lengths.mi
second = lengths.km
else
first = lengths.km
second = lengths.mi
end
if first == '0' and second == '0' then
return
end
local text = {first, " ", lengths.orig, ref, " (", second, " ", lengths.comp, ")", }
if notes ~= '' then
table.insert(text, "<div>" .. notes .. "</div>")
end
return table.concat(text)
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