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
(Implementing talk page edit requested)
(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)
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 422 ⟶ 414:
 
--[[
-- This returnsFinds the length of aan tablearray, or theof first integera keyquasi-array nwith countingkeys fromsuch
-- as "data1", "data2", etc., using an exponental 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 ⟶ 423:
-- 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:Exponental 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