Module:TableTools: Difference between revisions

Jump to navigation Jump to search
m>Mr. Stradivarius
m grammar
m>Mr. Stradivarius
add a fancy introductory comment
Line 1: Line 1:
-- This module includes a number of functions that can be useful when dealing with Lua tables.
--[[
------------------------------------------------------------------------------------
--                              TableTools                                      --
--                                                                                --
-- This module includes a number of functions for dealing with Lua tables.       --
-- It is a meta-module, meant to be called from other Lua modules, and should    --
-- not be called directly from #invoke.                                          --
------------------------------------------------------------------------------------
--]]


local p = {}
local p = {}
Line 8: Line 16:


--[[
--[[
-----------------------------------------------------------------------------------
------------------------------------------------------------------------------------
-- isPositiveInteger
-- isPositiveInteger
--
--
Line 15: Line 23:
-- useful for determining whether a given table key is in the array part or the
-- useful for determining whether a given table key is in the array part or the
-- hash part of a table.
-- hash part of a table.
-----------------------------------------------------------------------------------
------------------------------------------------------------------------------------
--]]
--]]
function p.isPositiveInteger(num)
function p.isPositiveInteger(num)
Line 26: Line 34:


--[[
--[[
-----------------------------------------------------------------------------------
------------------------------------------------------------------------------------
-- getNumKeys
-- getNumKeys
--
--
-- This takes a table and returns an array containing the numbers of any numerical
-- This takes a table and returns an array containing the numbers of any numerical
-- keys that have non-nil values, sorted in numerical order.
-- keys that have non-nil values, sorted in numerical order.
-----------------------------------------------------------------------------------
------------------------------------------------------------------------------------
--]]
--]]
function p.getNumKeys(t)
function p.getNumKeys(t)
Line 46: Line 54:


--[[
--[[
-----------------------------------------------------------------------------------
------------------------------------------------------------------------------------
-- getAffixNums
-- getAffixNums
--
--
Line 53: Line 61:
-- {a1 = 'foo', a3 = 'bar', a6 = 'baz'} and the prefix "a", getAffixNums will
-- {a1 = 'foo', a3 = 'bar', a6 = 'baz'} and the prefix "a", getAffixNums will
-- return {1, 3, 6}.
-- return {1, 3, 6}.
-----------------------------------------------------------------------------------
------------------------------------------------------------------------------------
--]]
--]]
function p.getAffixNums(t, prefix, suffix)
function p.getAffixNums(t, prefix, suffix)
Line 72: Line 80:


--[[
--[[
-----------------------------------------------------------------------------------
------------------------------------------------------------------------------------
-- compressSparseArray
-- compressSparseArray
--
--
Line 78: Line 86:
-- while preserving the order, so that the array can be safely traversed with
-- while preserving the order, so that the array can be safely traversed with
-- ipairs.
-- ipairs.
-----------------------------------------------------------------------------------
------------------------------------------------------------------------------------
--]]
--]]
function p.compressSparseArray(t)
function p.compressSparseArray(t)
Line 91: Line 99:


--[[
--[[
-----------------------------------------------------------------------------------
------------------------------------------------------------------------------------
-- sparseIpairs
-- sparseIpairs
--
--
-- This is an iterator for sparse arrays. It can be used like ipairs, but can
-- This is an iterator for sparse arrays. It can be used like ipairs, but can
-- handle nil values.
-- handle nil values.
-----------------------------------------------------------------------------------
------------------------------------------------------------------------------------
--]]
--]]
function p.sparseIpairs(t)
function p.sparseIpairs(t)