local p = {} local math = require "Module:Math" local function getLengths(args, num) local precision = math._precision local round = math._round local format = math._precision_format local lengths = {} local km = args["length_km" .. num] or args["uzunluk" .. num] or args["uzunluk_km" .. num] or local mi = args["length_mi" .. num] or args["uzunluk_mi" .. num] or local prec = tonumber(args["length_round" .. num]) if km then local n tonumber(mi) prec prec or precision(mi) if n then lengths.km format(tostring(n * 1.609344), tostring(prec)) else lengths.km '0' end else prec prec or precision(km) lengths.km format(km, tostring(prec)) lengths.orig "km" lengths.comp "mi" end if mi then local n = tonumber(km) prec = prec or precision(km) if n then lengths.mi = format(tostring(n / 1.609344), tostring(prec)) else lengths.mi = '0' end else prec = prec or precision(mi) lengths.mi = format(mi, tostring(prec)) lengths.orig = "mi" lengths.comp = "km" end return lengths end function p._length(num, args) local ref = args["length_ref" .. num] or local notes = args["length_notes" .. num] or local lengths = getLengths(args, num) local first, second if lengths.orig "mi" then first lengths.mi second lengths.km else first lengths.km second lengths.mi end if first '0' and second == '0' then return end local text = {first, "", lengths.orig, ref, " (", second, "", lengths.comp, ")", } if notes ~= then table.insert(text, "") end return table.concat(text) 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