Module:TableTools: Difference between revisions
Jump to navigation
Jump to search
Content deleted Content added
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: | Line 30: | ||
--]] |
--]] |
||
function p.isPositiveInteger(v) |
function p.isPositiveInteger(v) |
||
return type(v) == 'number' and v >= 1 and floor(v) == v and v < infinity |
|||
⚫ | |||
⚫ | |||
return false |
|||
⚫ | |||
end |
end |
||
Line 48: | Line 44: | ||
--]] |
--]] |
||
function p.isNan(v) |
function p.isNan(v) |
||
return type(v) == 'number' and tostring(v) == '-nan' |
|||
return true |
|||
else |
|||
return false |
|||
⚫ | |||
end |
end |
||
Line 422: | Line 414: | ||
--[[ |
--[[ |
||
-- |
-- Finds the length of an array, or of a quasi-array with keys such |
||
-- as "data1", "data2", etc., using an exponental search algorithm. |
|||
-- |
-- 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. |
||
-- Intended to be used on data loaded with mw.loadData. For other tables, use #. |
-- Intended to be used on data loaded with mw.loadData. For other tables, use #. |
||
Line 430: | Line 423: | ||
-- frame.args. |
-- frame.args. |
||
--]] |
--]] |
||
⚫ | |||
⚫ | |||
while t[i] ~= nil do |
|||
⚫ | |||
end |
|||
return i - 1 |
|||
end |
|||
⚫ | |||
-- 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) |
|||
⚫ | |||
if prefix then |
|||
key = prefix .. tostring(i) |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
end) or 0 |
|||
⚫ | |||
function p.inArray(arr, valueToFind) |
function p.inArray(arr, valueToFind) |
||
checkType("inArray", 1, arr, "table") |
checkType("inArray", 1, arr, "table") |