×
Create a new article
Write your page title here:
We currently have 230 articles on Farthest Frontier. Type your article name above or create one of the articles listed here!



    Farthest Frontier

    This is a Lua implementation of the {{indent}} template. Please see the template page for documentation.


    local p = {}
    
    function p.indent(frame)
        -- Trim whitespace from the arguments and remove blank values.
        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
        
        -- Set variables.
        local indent = tonumber( args[1] )
        local br = args[2]
        local ret = ''
        
        -- Insert line breaks to match the functionality of the original template.
        -- If "br" is set, we need two line breaks; if not, we just need one.
        if br then
            ret = ret .. '<br />' 
        end
        ret = ret .. '<br />'
        
        -- Control for bad or zero input. If found, output the line breaks only, 
        -- as this was the previous behaviour of the template.
        if not indent or indent <= 0 or math.floor(indent) ~= indent then
            return ret
        end
        
        -- Generate the indents. The first four cases are special.
        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
        
        -- Set variables for generating the output after indent == 5.
        local r = {}
        r.base = '&nbsp;' -- Common text to all output.
        r.rep = ' &emsp; &nbsp;' -- The text to repeat.
        r.mod1 = '&nbsp;' -- To return on modulo 1.
        r.mod2 = ' &emsp;' -- To return on modulo 2.
        r.mod3 = ' &emsp;&nbsp;' -- To return on modulo 3.
        
        -- New iteratorText values needed at 5, 9, 13, 17, etc., so repeat the
        -- text (indent - 1)/4 times and find the remainder.
        local reps = math.floor( (indent - 1) / 4 )
        local remainder = math.fmod( indent - 1, 4 )
        
        -- Generate the indent text.
        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
    
    Cookies help us deliver our services. By using our services, you agree to our use of cookies.
    Cookies help us deliver our services. By using our services, you agree to our use of cookies.