Kontent qismiga oʻtish

Modul:Indent

Vikipediya, ochiq ensiklopediya

Bu modul uchun Modul:Indent/doc nomli hujjat sahifasini yaratishingiz mumkin

local p = {}

function p.indent(frame)
    local args = {}
    if type(frame.args) == 'table' then
        for k, v in pairs( frame.args ) do
            v = mw.text.trim(v)
            if v ~= '' then
                args[k] = v
            end
        end
    end
    
    local indent = tonumber( args[1] )
    local br = args[2]
    local ret = ''
    
    if br then
        ret = ret .. '<br />' 
    end
    ret = ret .. '<br />'
    
    if not indent or indent <= 0 or math.floor(indent) ~= indent then
        return ret
    end
    
    if indent == 1 then
        return ret .. '&nbsp;'
    elseif indent == 2 then
        return ret .. '&nbsp;&nbsp;'
    elseif indent == 3 then
        return ret .. '&nbsp;&emsp;&nbsp;'
    elseif indent == 4 then
        return ret .. '&nbsp; &emsp; &nbsp;'
    end
    
    local r = {}
    r.base = '&nbsp;'
    r.rep = ' &emsp; &nbsp;'
    r.mod1 = '&nbsp;'
    r.mod2 = ' &emsp;'
    r.mod3 = ' &emsp;&nbsp;'
    
    local reps = math.floor( (indent - 1) / 4 )
    local remainder = math.fmod( indent - 1, 4 )
    
    ret = ret .. r.base .. mw.ustring.rep( r.rep, reps )
    if remainder >= 1 and remainder <= 3 then
        ret = ret .. r[ 'mod' .. remainder ]
    end
    
    return ret
end

return p