Module:Routelist row: Difference between revisions

Content deleted Content added
use convert to calculate lengths
fix
Line 29:
else -- If none of the first three conditions are true, then it must be a current route.
return routeStates.current
end
end
 
--- Return output for the length columns for a given route, with the appropriate conversions.
local function length(args)
local km = args["length_km"] or '' -- Length in kilometers
local mi = args["length_mi"] or '' -- Length in miles
local ref = args["length_ref" ] or ''
 
if mi == '' and km == '' then
return format("|align=right|—||align=right|—")
elseif mi ~= '0' and km == '' then
return format("|align=right|") .. mi .. ref .. format("||align=right|") .. frame:expandTemplate{ title = 'convert', args = { mi, "mi", "km", disp = "output number only"}}
else
return format("|align=right|") .. km .. ref .. format("||align=right|") .. frame:expandTemplate{ title = 'convert', args = { km, "km", "mi", disp = "output number only"}}
end
end
Line 127 ⟶ 112:
end
 
--- Return output for the length columns for a given route, with the appropriate conversions.
function length(args)
local function length(args)
-- This function generate the length columns, with the appropriate conversions.
local mileskm = args["length_milength_km"] or '' -- Length in mileskilometers
local kilometersmi = args["length_kmlength_mi"] or '' -- Length in kilometersmiles
local miref = args["length_milength_ref" ] or '' -- Length in miles
local lengths = {length_mi = miles, length_km = kilometers} -- This time, we compile the lengths into a table,
 
local Lengths = getLength(lengths) -- which makes for an easy parameter. This function call will return the lengths in both miles and kilometers,
if mi == '' and km == '' then
return format("|align=right|—||align=right|—")
local lengthRef = args["length_ref"] or ''
elseif mi ~= '0' and km == '' then
local first, second
return format("|align=right|") .. mi .. ref .. format("||align=right|") .. frame:expandTemplate{ title = 'convert', args = { mi, "mi", "km", disp = "output number only"}}
if kilometers then
first = Lengths.km
second = Lengths.mi
else
return format("|align=right|") .. km .. ref .. format("||align=right|") .. frame:expandTemplate{ title = 'convert', args = { km, "km", "mi", disp = "output number only"}}
first = Lengths.mi
second = Lengths.km
end
return "|align=right|" .. first .. lengthRef .. "||align=right|" .. second -- which are then spliced in here and returned to the template.
end