Module:TableTools: Difference between revisions

    (Finally getting around to merging in Module:Array length (originally written by Mr. Stradivarius) over six months after writing the merged code, also minor code simplify per Dinoguy1000 on talk page)
    (from sandbox: another slight code simplification and a couple comment fixes)
    Line 129: Line 129:
    local function cleanPattern(s)
    local function cleanPattern(s)
    -- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally.
    -- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally.
    s = s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1')
    return s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1')
    return s
    end
    end


    Line 415: Line 414:
    --[[
    --[[
    -- Finds the length of an array, or of a quasi-array with keys such
    -- Finds the length of an array, or of a quasi-array with keys such
    -- as "data1", "data2", etc., using an exponental search algorithm.  
    -- as "data1", "data2", etc., using an exponential search algorithm.  
    -- It is similar to the operator #, but may return
    -- It is similar to the operator #, but may return
    -- a different value when there are gaps in the array portion of the table.
    -- a different value when there are gaps in the array portion of the table.
    Line 425: Line 424:


    function p.length(t, prefix)
    function p.length(t, prefix)
    -- requiring module inline so that [[Module:Exponental search]]
    -- requiring module inline so that [[Module:Exponential search]]
    -- which is only needed by this one function
    -- which is only needed by this one function
    -- doesn't get millions of transclusions
    -- doesn't get millions of transclusions