مواد ڏانھن هلو


سنڌي وڪيپيڊيا سٿ جو سنڌي قوم لاءِ سنهيو
سنڌي وڪيپيڊيا کي توهان جي گھُرج آهي!
پنهنجي مادري ٻوليءَ جي سڀ کان وڏي آزاد انسائيڪلوپيڊيا (سنڌي وڪيپيڊيا) لاءِ اڳتي اچو ۽ ڀاڱيداريون ڪري سنڌي ڀاشا جي سيوا ڪريو.

وڪيپيڊيا تي توهان اسان جهڙا عام پر باشعور ماڻهو ڪم ڪن ٿا، جيڪي مختلف شعبن سان واڳيل پڻ هوندا آهن. سنڌي وڪيپيڊيا جي واڌاري لاءِ اسان سان سهڪار ڪريو ۽ اسان جا ٻانهن ٻيلي ٿيو.

ماڊيول:Infobox road/length

کليل ڄاڻ چيڪلي، وڪيپيڊيا مان

Documentation for this module may be created at ماڊيول:Infobox road/length/doc

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 ''
    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 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, "<div style='font-size:90%;'>" .. notes .. "</div>")
    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