Module:Toolbar: Difference between revisions

From the Croc Wiki, the Croc encyclopedia
Jump to navigationJump to search
Content added Content deleted
(simpler check for numerical arguments)
(generate more natural html if class and style arguments are absent)
Line 33: Line 33:


local function makeToolbar()
local function makeToolbar()
local class = args.class or ''
local class = (args.class and (' ' .. args.class)) or ''
local style = (args.style and ('style="' .. args.style .. '"')) or ''
local style = (args.style and (' style="' .. args.style .. '"')) or ''
local ret = '<span class="plainlinks ' .. class .. '" ' .. style .. '>'
local ret = '<span class="plainlinks' .. class .. '"' .. style .. '>'
.. '(' .. makeToolbarItems() .. ')'
.. '(' .. makeToolbarItems() .. ')'
.. '</span>'
.. '</span>'

Revision as of 13:46, June 12, 2013

This module implements {{toolbar}}. Please see the template page for documentation.

See also


local p = {}
local args = {}

-- Get the keys of the numerical arguments that are present.
local function getArgNums()
    local nums = {}
    for k, v in pairs(args) do
        if type(k) == 'number' then
            table.insert(nums, k)
        end
    end
    table.sort(nums)
    return nums
end

local function makeToolbarItems()
    -- Get numerical argument keys.
    local nums = getArgNums()
    -- Get the separator text.
    local sep = (args.separator or 'pipe') .. '-separator'
    sep = mw.message.new(sep):plain()
    
    -- Generate the toolbar items.
    local ret = ''
    for i, v in ipairs(nums) do
        ret = ret .. args[v]
        if nums[i + 1] then
            ret = ret .. sep
        end
    end
    return ret
end

local function makeToolbar()
    local class = (args.class and (' ' .. args.class))  or ''
    local style = (args.style and (' style="' .. args.style .. '"')) or ''
    
    local ret = '<span class="plainlinks' .. class .. '"' .. style .. '>'
        .. '(' .. makeToolbarItems() .. ')'
        .. '</span>'
    
    return ret
end

function p.main(frame)
    -- If called via #invoke, use the args passed into the invoking template.
    -- Otherwise, for testing purposes, assume args are being passed directly in.
    local origArgs
    if frame == mw.getCurrentFrame() then
        origArgs = frame:getParent().args
    else
        origArgs = frame
    end
    
    -- Strip whitespace and remove nil values
    for k, v in pairs(origArgs) do
        v = mw.text.trim(v)
        if v ~= '' then
            args[k] = v
        end
    end
    
    return makeToolbar()
end
 
return p