Module:Infobox road/length/sandbox: Difference between revisions
Appearance
Content deleted Content added
shorten |
sync |
||
Line 6: | Line 6: | ||
local frame = mw.getCurrentFrame() |
local frame = mw.getCurrentFrame() |
||
function p._length( |
function p._length(num, args) |
||
local |
local km = args["length_km" .. num] or '' |
||
local mi = args["length_mi" .. num] or '' |
|||
local |
local nmi = args["length_nmi" .. num] or '' |
||
local ref = args[ |
local ref = args["length_ref" .. num] or '' |
||
local notes = args[ |
local notes = args["length_notes" .. num] or '' |
||
⚫ | |||
local first, second, unit, unit2 |
|||
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" |
|||
second = mi |
|||
unit3 = "km mi" |
|||
-- elseif mi ~= '0' and km == '' then |
|||
elseif tonumber (mi) then |
|||
⚫ | |||
⚫ | |||
unit = "mi" |
|||
unit2 = "km" |
|||
⚫ | |||
⚫ | |||
elseif tonumber (km) then |
|||
⚫ | |||
unit = "km" |
|||
unit2 = "mi" |
|||
⚫ | |||
⚫ | |||
return nil -- something other than numbers so abandon |
|||
end |
end |
||
if not first then |
|||
return nil |
|||
end |
|||
⚫ | |||
-- if mi == '' and km == '' and nmi == '' then |
|||
⚫ | |||
-- 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>" |
return frame:expandTemplate{ title = 'cvt', args = { first, unit, unit3, disp = "x", ref .. " ("}} .. ")<div>" .. notes .. "</div>" |
||
elseif notes == '' and first < '1' then |
elseif notes == '' and first < '1' then |
||
return frame:expandTemplate{ title = 'cvt', args = { first, unit, unit3, disp = "x", ref .. " ("}} .. ") |
return frame:expandTemplate{ title = 'cvt', args = { first, unit, unit3, disp = "x", ref .. " ("}} .. ")" |
||
elseif notes ~= '' then |
elseif notes ~= '' then |
||
return frame:expandTemplate{ title = 'cvt', args = { first, unit, unit2, disp = "x", ref .. " ("}} .. ")<div>" .. notes .. "</div>" |
return frame:expandTemplate{ title = 'cvt', args = { first, unit, unit2, disp = "x", ref .. " ("}} .. ")<div>" .. notes .. "</div>" |
||
Line 41: | Line 57: | ||
end |
end |
||
function p.length(frame) |
function p.length(frame) |
||
local pframe = frame:getParent() |
local pframe = frame:getParent() |
||
Line 47: | Line 64: | ||
local num = config.num or '' |
local num = config.num or '' |
||
⚫ | |||
local desc = config.desc or "length" |
|||
⚫ | |||
end |
end |
||
Revision as of 06:32, 25 November 2022
![]() | This is the module sandbox page for Module:Infobox road/length (diff). |
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