Module:Infobox road/length
From Chalo Chatu, Zambia online encyclopedia
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, "
" .. notes .. "") 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