Module:Infobox road/length

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 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{ title = 'cvt', args = { first, unit, unit3, disp = "x", ref .. " ("}} .. ")

" .. notes .. "
"

elseif notes == '' and first < '1' then

return frame:expandTemplate{ title = 'cvt', args = { first, unit, unit3, disp = "x", ref .. " ("}} .. ")"

elseif notes ~= '' then

return frame:expandTemplate{ title = 'cvt', args = { first, unit, unit2, disp = "x", ref .. " ("}} .. ")

" .. notes .. "
"

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