Jump to content

Module:Includes/doc

From Humanipedia

This is the documentation page for Module:Includes

Lua error in package.lua at line 80: module 'Module:Yesno' not found.

Lua equivalent to the javascript Array.prototype.includes() function, except fromIndex is 1-indexed instead of zero-indexed. Determines whether an array includes a certain value and returns true or false.

Syntax[edit source]

<syntaxhighlight lang="lua">includes(array, searchElement) includes(array, searchElement, fromIndex)</syntaxhighlight>

array[edit source]

array is the array to search. If <syntaxhighlight lang="lua" inline>type(array) ~= 'table'</syntaxhighlight> the module will return false.

value[edit source]

value is the value to be tested. If value is present in the array, the module will return true. If value is missing the module will return false.

fromIndex[edit source]

fromIndex is the optional 1-based index at which to start searching. If fromIndex is not present, all values in the array will be searched and the array will be treated as a table/associative array (it will be iterated over using <syntaxhighlight lang="lua" inline>pairs()</syntaxhighlight>).

If fromIndex is present and an integer, the array is assumed to be a conventional array/sequence/list (indexed with consecutive integer keys starting at 1, and interated over using <syntaxhighlight lang="lua" inline>ipairs()</syntaxhighlight>). Only the values whose index is fromIndex or higher will be searched.

In the following examples, #array represents the length of the integer-keyed portion of the array.

  • If fromIndex < 0 it will count back from the end of the array, e.g. a value of -1 will only search the last integer-keyed element in the array. If fromIndex <= (-1 * #array), the entire integer-keyed portion of the array will be searched.
  • If fromIndex = 0 it will be treated as a 1 and the entire integer-keyed portion of the array will be searched.
  • If fromIndex > #array, the array is not searched and false is returned.

Usage[edit source]

<syntaxhighlight lang="lua"> local includes = require('Module:Includes')

-- These will return true includes({"a", "b", "c", "d"}, "b") includes({"a", "b", "c", "d"}, "b", 0) includes({"a", "b", "c", "d"}, "b", 1) includes({"a", "b", "c", "d"}, "b", 2) includes({"a", "b", "c", "d"}, "b", -3) includes({"a", "b", "c", "d"}, "b", -5) includes({[1] = "a",[100] = "b",[101] = "c"}, "b") includes({[1] = "a",[2] = "b",[3] = "c"}, "b", 0) includes({first = "a", second = "b", third = "c"}, "b")

--these will return false includes("b","b") -- array is not a table includes({"a", "b", "c", "d"}) -- value missing includes({"a", "b", "c", "d"}, "e") -- "e" is not in array includes({"a", "b", "c", "d"}, "b", 3) -- "b" is before position 3 includes({"a", "b", "c", "d"}, "b", 5) -- 5 is larger than #array includes({"a", "b", "c", "d"}, "b", -2) -- "b" is not in the last two positions includes({[1] = "a", [100] = "b", [101] = "c"}, "b", 0) -- key 100 is non-consecutive includes({first = "a", second = "b", third = "c"}, "b", 0) -- key "second" is not an integer </syntaxhighlight>