Bước tới nội dung

Mô đun:Infobox road/length

Bách khoa toàn thư mở Wikipedia
local p = {}local math = require "Mô đun: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 ''    local mi = args["length_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 lengthsendfunction 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, "&nbsp;", lengths.orig, ref, " (", second, "&nbsp;", lengths.comp, ")", }    if notes ~= '' then        table.insert(text, "<div style='font-size:90%;'>" .. notes .. "</div>")    end    return table.concat(text)endfunction 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)endreturn p