Module:TableTools: Difference between revisions

from sandbox: another slight code simplification and a couple comment fixes
m (1 revision imported)
en>Dinoguy1000
(from sandbox: another slight code simplification and a couple comment fixes)
Line 30:
--]]
function p.isPositiveInteger(v)
ifreturn type(v) == 'number' and v >= 1 and floor(v) == v and v < infinity then
return true
else
return false
end
end
 
Line 48 ⟶ 44:
--]]
function p.isNan(v)
ifreturn type(v) == 'number' and tostring(v) == '-nan' then
return true
else
return false
end
end
 
Line 137 ⟶ 129:
local function cleanPattern(s)
-- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally.
s =return s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1')
return s
end
 
Line 422 ⟶ 413:
 
--[[
-- This returnsFinds the length of aan tablearray, or theof first integera keyquasi-array nwith countingkeys fromsuch
-- as "data1", "data2", etc., using an exponential search algorithm.
-- 1 such that t[n + 1] is nil. It is similar to the operator #, but may return
-- a different value when there are gaps in the array portion of the table.
-- Intended to be used on data loaded with mw.loadData. For other tables, use #.
Line 430 ⟶ 422:
-- frame.args.
--]]
function p.length(t)
local i = 1
while t[i] ~= nil do
i = i + 1
end
return i - 1
end
 
function p.length(t, prefix)
-- requiring module inline so that [[Module:Exponential search]]
-- which is only needed by this one function
-- doesn't get millions of transclusions
local expSearch = require("Module:Exponential search")
checkType('length', 1, t, 'table')
checkType('length', 2, prefix, 'string', true)
return expSearch(function(i)
local i = 1key
if prefix then
key = prefix .. tostring(i)
else
i key = i + 1
end
return truet[key] ~= nil
end) or 0
end
function p.inArray(arr, valueToFind)
checkType("inArray", 1, arr, "table")
Anonymous user