Module:Infobox road/length: Difference between revisions
(until a better solution presents; see Template_talk:Infobox_road#December_2021_updates;) |
m (1 revision imported) |
(No difference)
|
Latest revision as of 03:19, 15 February 2024
Documentation for this module may be created at Module:Infobox road/length/doc
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 .. " ("}} .. ")<div>" .. notes .. "</div>" 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 .. " ("}} .. ")<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