Module:Infobox road/length explained

local p =

local concat = table.concatlocal insert = table.insertlocal format = mw.ustring.formatlocal frame = mw.getCurrentFrame

function p._length(num, args) local km = args["length_km" .. num] or local mi = args["length_mi" .. num] or local nmi = args["length_nmi" .. num] or local ref = args["length_ref" .. num] or local notes = args["length_notes" .. num] or

if

mi and

km and

nmi then return nil -- none of these set, abandon end

local first, unit, unit2, unit3-- if nmi ~= '0' and mi

and km

then if tonumber (nmi) then first = nmi unit = "nmi" unit2 = "km mi" unit3 = "km mi"-- elseif mi ~= '0' and km

then elseif tonumber (mi) then first = mi unit = "mi" unit2 = "km" unit3 = "m"-- elseif km ~= '0' and mi

then elseif tonumber (km) then first = km unit = "km" unit2 = "mi" unit3 = "mi ft" else return nil -- something other than numbers so abandon end

if not first then return nil end-- if mi

and km

and nmi

then-- return nil-- elseif notes ~= and first < '1' then if notes ~= and first < '1' then return frame:expandTemplate .. ")

" .. notes .. "

" elseif notes

and first < '1' then return frame:expandTemplate .. ")" elseif notes ~= then return frame:expandTemplate .. ")

" .. notes .. "

" else return frame:expandTemplate .. ")" endend

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