Title: Module:Params - freem URL Source: https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams Markdown Content: [](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#) - [x] * [Home](https://freemwiki.com/wiki/Main_Page) * [Random](https://freemwiki.com/wiki/Special:Random) * [Log in](https://freemwiki.com/index.php?title=Special:UserLogin&returnto=Module%3AParams&returntoquery=mobileaction%3Dtoggle_view_mobile) * [Settings](https://freemwiki.com/index.php?title=Special:MobileOptions&returnto=Module%3AParams) * [About](https://freemwiki.com/wiki/About) * [Terms of Service](https://freemwiki.com/wiki/Terms_of_Service) [freem](https://freemwiki.com/wiki/Main_Page) Search # Module:Params * [Language](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams "Language") * [Watch](https://freemwiki.com/index.php?title=Special:UserLogin&returnto=Module%3AParams) * [Edit](https://freemwiki.com/index.php?title=Module:Params&action=edit) _Documentation for this module may be created at [Module:Params/doc](https://freemwiki.com/index.php?title=Module:Params/doc&action=edit&redlink=1 "Module:Params/doc (page does not exist)")_ [](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1)require[[strict]][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-3)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-4)--- ---[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-5)--- LOCAL ENVIRONMENT ---[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-6)--- ________________________________ ---[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-7)--- ---[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-8)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-9)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-10)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-11)--[[ Abstract utilities ]]--[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-12)----------------------------[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-13)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-14)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-15)-- Helper function for `string.gsub()` (for managing zero-padded numbers)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-16)local function zero_padded (str)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-17)return ('%03d%s'):format(#str, str)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-18)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-19)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-20)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-21)-- Helper function for `table.sort()` (for natural sorting)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-22)local function natural_sort (var1, var2)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-23)return tostring(var1):gsub('%d+', zero_padded) <[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-24)tostring(var2):gsub('%d+', zero_padded)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-25)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-26)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-27)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-28)-- Return a copy or a reference to a table[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-29)local function copy_or_ref_table (src, refonly)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-30)if refonly then return src end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-31)local newtab = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-32)for key, val in pairs(src) do newtab[key] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-33)return newtab[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-34)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-35)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-36)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-37)-- Remove some numeric elements from a table, shifting everything to the left[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-38)local function remove_numeric_keys (tbl, idx, len)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-39)local cache = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-40)local tmp = idx + len - 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-41)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-42)if type(key) == 'number' and key >= idx then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-43)if key > tmp then cache[key - len] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-44)tbl[key] = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-45)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-46)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-47)for key, val in pairs(cache) do tbl[key] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-48)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-49)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-50)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-51)-- Make a reduced copy of a table (shifting in both directions if necessary)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-52)local function copy_table_reduced (tbl, idx, len)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-53)local ret = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-54)local tmp = idx + len - 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-55)if idx > 0 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-56)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-57)if type(key) ~= 'number' or key < idx then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-58)ret[key] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-59)elseif key > tmp then ret[key - len] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-60)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-61)elseif tmp > 0 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-62)local nshift = 1 - idx[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-63)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-64)if type(key) ~= 'number' then ret[key] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-65)elseif key > tmp then ret[key - tmp] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-66)elseif key < idx then ret[key + nshift] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-67)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-68)else[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-69)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-70)if type(key) ~= 'number' or key > tmp then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-71)ret[key] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-72)elseif key < idx then ret[key + len] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-73)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-74)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-75)return ret[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-76)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-77)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-78)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-79)-- Make an expanded copy of a table (shifting in both directions if necessary)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-80)--[[[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-81)local function copy_table_expanded (tbl, idx, len)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-82) local ret = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-83) local tmp = idx + len - 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-84) if idx > 0 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-85) for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-86) if type(key) ~= 'number' or key < idx then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-87) ret[key] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-88) else ret[key + len] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-89) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-90) elseif tmp > 0 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-91) local nshift = idx - 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-92) for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-93) if type(key) ~= 'number' then ret[key] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-94) elseif key > 0 then ret[key + tmp] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-95) elseif key < 1 then ret[key + nshift] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-96) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-97) else[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-98) for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-99) if type(key) ~= 'number' or key > tmp then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-100) ret[key] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-101) else ret[key - len] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-102) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-103) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-104) return ret[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-105)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-106)]]--[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-107)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-108)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-109)-- Move a key from a table to another, but only if under a different name and[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-110)-- always parsing numeric strings as numbers[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-111)local function steal_if_renamed (val, src, skey, dest, dkey)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-112)local realkey = dkey:match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-113)if realkey == '0' or realkey:find'^%-?[1-9]%d*$' ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-114)realkey = tonumber(realkey)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-115)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-116)if skey ~= realkey then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-117)dest[realkey] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-118)src[skey] = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-119)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-120)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-121)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-122)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-123)-- Given a table, create two new tables containing the sorted list of keys[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-124)local function get_key_list_sorted (ctx, tbl, sort_fn)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-125)local nums = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-126)local words = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-127)local nn = 0[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-128)local nw = 0[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-129)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-130)if type(key) == 'number' then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-131)nn = nn + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-132)nums[nn] = key[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-133)else[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-134)nw = nw + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-135)words[nw] = key[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-136)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-137)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-138)table.sort(nums)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-139)table.sort(words, sort_fn)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-140)return nums, words, nn, nw[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-141)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-142)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-143)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-144)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-145)--[[ Public strings ]]--[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-146)------------------------[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-147)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-148)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-149)-- Special match keywords (functions and modifiers MUST avoid these names)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-150)local mkeywords = {[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-151)['or'] = 0,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-152)pattern = 1,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-153)plain = 2,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-154)strict = 3[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-155)}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-156)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-157)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-158)-- Sort functions (functions and modifiers MUST avoid these names)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-159)local sortfunctions = {[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-160)--alphabetically = false, -- Simply uncommenting enables the option[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-161)naturally = natural_sort[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-162)}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-163)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-164)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-165)-- Callback styles for the `mapping_*` and `renaming_*` class of modifiers[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-166)-- (functions and modifiers MUST avoid these names)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-167)--[[[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-168)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-169)Meanings of the columns:[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-170)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-171) col[1] = Loop type (0-3)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-172) col[2] = Number of module arguments that the style requires (1-3)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-173) col[3] = Minimum number of sequential parameters passed to the callback[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-174) col[4] = Name of the callback parameter where to place each parameter name[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-175) col[5] = Name of the callback parameter where to place each parameter value[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-176) col[6] = Argument in the modifier's invocation that will override `col[4]`[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-177) col[7] = Argument in the modifier's invocation that will override `col[5]`[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-178)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-179)A value of `-1` indicates that no meaningful value is stored (i.e. `nil`)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-180)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-181)]]--[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-182)local mapping_styles = {[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-183)names_and_values = { 3, 2, 2, 1, 2, -1, -1 },[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-184)values_and_names = { 3, 2, 2, 2, 1, -1, -1 },[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-185)values_only = { 1, 2, 1, -1, 1, -1, -1 },[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-186)names_only = { 2, 2, 1, 1, -1, -1, -1 },[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-187)names_and_values_as = { 3, 4, 0, -1, -1, 2, 3 },[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-188)names_only_as = { 2, 3, 0, -1, -1, 2, -1 },[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-189)values_only_as = { 1, 3, 0, -1, -1, -1, 2 },[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-190)blindly = { 0, 2, 0, -1, -1, -1, -1 }[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-191)}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-192)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-193)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-194)-- Memory slots (functions and modifiers MUST avoid these names)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-195)local memoryslots = {[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-196)h = 'header',[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-197)f = 'footer',[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-198)i = 'itersep',[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-199)l = 'lastsep',[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-200)n = 'ifngiven',[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-201)p = 'pairsep',[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-202)s = 'oxfordsep'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-203)}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-204)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-205)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-206)-- Possible trimming modes for the `parsing` modifier[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-207)local trim_parse_opts = {[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-208)trim_none = { false, false },[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-209)trim_positional = { false, true },[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-210)trim_named = { true, false },[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-211)trim_all = { true, true }[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-212)}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-213)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-214)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-215)-- Possible string modes for the iteration separator in the `parsing` and[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-216)-- `reinterpreting` modifiers[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-217)local isep_parse_opts = {[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-218)splitter_pattern = false,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-219)splitter_string = true[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-220)}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-221)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-222)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-223)-- Possible string modes for the key-value separator in the `parsing` and[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-224)-- `reinterpreting` modifiers[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-225)local psep_parse_opts = {[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-226)setter_pattern = false,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-227)setter_string = true[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-228)}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-229)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-230)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-231)-- Functions and modifiers MUST avoid these names too: `let`[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-232)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-233)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-234)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-235)--[[ Module's private environment ]]--[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-236)--------------------------------------[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-237)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-238)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-239)-- Hard-coded name of the module (to avoid going through `frame:getTitle()`)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-240)local modulename = 'Module:Params'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-241)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-242)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-243)-- The functions listed here declare that they don't need the `frame.args`[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-244)-- metatable to be copied into a regular table; if they are modifiers they also[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-245)-- guarantee that they will make their own (modified) copy available[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-246)local refpipe = {[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-247)call_for_each_group = true,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-248)coins = true,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-249)count = true,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-250)for_each = true,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-251)list = true,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-252)list_values = true,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-253)list_maybe_with_names = true,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-254)value_of = true[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-255)}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-256)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-257)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-258)-- The functions listed here declare that they don't need the[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-259)-- `frame:getParent().args` metatable to be copied into a regular table; if [](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-260)-- they are modifiers they also guarantee that they will make their own[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-261)-- (modified) copy available[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-262)local refparams = {[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-263)call_for_each_group = true,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-264)combining_by_calling = true,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-265)concat_and_call = true,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-266)concat_and_invoke = true,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-267)concat_and_magic = true,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-268)renaming_to_uppercase = true,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-269)renaming_to_lowercase = true,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-270)count = true,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-271)--inserting = true,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-272)grouping_by_calling = true,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-273)mixing_names_and_values = true,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-274)renaming_by_mixing = true,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-275)--renaming_to_values = true,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-276)--swapping_names_and_values = true,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-277)value_of = true,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-278)with_name_matching = true[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-279)}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-280)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-281)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-282)-- Maximum number of numeric parameters that can be filled, if missing (we[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-283)-- chose an arbitrary number for this constant; you can discuss about its[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-284)-- optimal value at Module talk:Params)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-285)local maxfill = 1024[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-286)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-287)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-288)-- The private table of functions[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-289)local library = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-290)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-291)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-292)-- Functions and modifiers that can only be invoked in first position[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-293)local static_iface = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-294)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-295)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-296)-- Create a new context[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-297)local function context_new (frame)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-298)local ctx = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-299)ctx.frame = frame[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-300)ctx.oparams = frame.args[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-301)ctx.firstposonly = static_iface[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-302)ctx.iterfunc = pairs[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-303)ctx.sorttype = 0[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-304)ctx.n_parents = 0[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-305)ctx.n_children = 0[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-306)ctx.n_available = maxfill[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-307)return ctx[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-308)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-309)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-310)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-311)-- Move to the next action within the user-given list[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-312)local function context_iterate (ctx, n_forward)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-313)local nextfn[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-314)if ctx.pipe[n_forward] ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-315)nextfn = ctx.pipe[n_forward]:match'^%s*(.*%S)'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-316)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-317)if nextfn == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-318)': You must specify a function to call', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-319)if library[nextfn] == nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-320)if ctx.firstposonly[nextfn] == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-321)': The function ‘' .. nextfn .. '’ does not exist', 0)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-322)else error(modulename .. ': The ‘' .. nextfn ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-323)'’ directive can only appear in first position', 0)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-324)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-325)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-326)remove_numeric_keys(ctx.pipe, 1, n_forward)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-327)return library[nextfn][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-328)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-329)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-330)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-331)-- Main loop[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-332)local function main_loop (ctx, start_with)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-333)local fn = start_with[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-334)repeat fn = fn(ctx) until not fn[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-335)if ctx.n_parents > 0 then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-336)': One or more ‘merging_substack’ directives are missing', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-337)if ctx.n_children > 0 then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-338)', For some of the snapshots either the ‘flushing’ directive is missing or a group has not been properly closed with ‘merging_substack’', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-339)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-340)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-341)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-342)-- Add a new stack of parameters to `ctx.children`[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-343)local function push_cloned_stack (ctx, tbl)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-344)local newparams = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-345)local currsnap = ctx.n_children + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-346)if ctx.children == nil then ctx.children = { newparams }[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-347)else ctx.children[currsnap] = newparams end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-348)for key, val in pairs(tbl) do newparams[key] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-349)ctx.n_children = currsnap[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-350)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-351)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-352)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-353)-- Parse optional user arguments of type `...|[let]|[...][number of additional[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-354)-- parameters]|[parameter 1]|[parameter 2]|[...]`[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-355)local function load_child_opts (src, start_from, append_after)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-356)local names[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-357)local tmp[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-358)local tbl = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-359)local pin = start_from[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-360)if src[pin] ~= nil and src[pin]:match'^%s*let%s*$' and[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-361)src[pin + 1] ~= nil and src[pin + 2] ~= nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-362)then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-363)names = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-364)repeat[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-365)tmp = src[pin + 1]:match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-366)if tmp == '0' or tmp:find'^%-?[1-9]%d*$' ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-367)tmp = tonumber(tmp)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-368)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-369)names[tmp] = src[pin + 2][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-370)pin = pin + 3[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-371)until src[pin] == nil or not src[pin]:match'^%s*let%s*$' or[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-372)src[pin + 1] == nil or src[pin + 2] == nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-373)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-374)tmp = tonumber(src[pin])[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-375)if tmp ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-376)if tmp < 0 then tmp = -1 end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-377)local shf = append_after - pin[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-378)for idx = pin + 1, pin + tmp do tbl[idx + shf] = src[idx] end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-379)pin = pin + tmp + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-380)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-381)if names ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-382)for key, val in pairs(names) do tbl[key] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-383)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-384)return tbl, pin[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-385)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-386)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-387)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-388)-- Load the optional arguments of some of the `mapping_*` and `renaming_*`[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-389)-- class of modifiers[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-390)local function load_callback_opts (src, n_skip, default_style)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-391)local style[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-392)local shf[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-393)local tmp = src[n_skip + 1][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-394)if tmp ~= nil then style = mapping_styles[tmp:match'^%s*(.-)%s*$'] end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-395)if style == nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-396)style = default_style[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-397)shf = n_skip - 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-398)else shf = n_skip end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-399)local n_exist = style[3][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-400)local karg = style[4][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-401)local varg = style[5][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-402)tmp = style[6][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-403)if tmp > -1 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-404)karg = src[tmp + shf]:match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-405)if karg == '0' or karg:find'^%-?[1-9]%d*$' ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-406)karg = tonumber(karg)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-407)n_exist = math.max(n_exist, karg)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-408)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-409)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-410)tmp = style[7][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-411)if tmp > -1 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-412)varg = src[tmp + shf]:match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-413)if varg == '0' or varg:find'^%-?[1-9]%d*$' ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-414)varg = tonumber(varg)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-415)n_exist = math.max(n_exist, varg)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-416)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-417)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-418)local dest, nargs = load_child_opts(src, style[2] + shf, n_exist)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-419)tmp = style[1][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-420)if (tmp == 3 or tmp == 2) and dest[karg] ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-421)tmp = tmp - 2 end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-422)if (tmp == 3 or tmp == 1) and dest[varg] ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-423)tmp = tmp - 1 end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-424)return dest, nargs, tmp, karg, varg[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-425)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-426)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-427)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-428)-- Parse the arguments of some of the `mapping_*` and `renaming_*` class of[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-429)-- modifiers[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-430)local function load_replace_args (opts, fname)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-431)if opts[1] == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-432)', ‘' .. fname .. '’: No pattern string was given', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-433)if opts[2] == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-434)', ‘' .. fname .. '’: No replacement string was given', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-435)local ptn = opts[1][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-436)local repl = opts[2][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-437)local argc = 3[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-438)local nmax = tonumber(opts[3])[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-439)if nmax ~= nil or (opts[3] or ''):match'^%s*$' ~= nil then argc = 4 end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-440)local flg = opts[argc][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-441)if flg ~= nil then flg = mkeywords[flg:match'^%s*(.-)%s*$'] end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-442)if flg == 0 then flg = nil elseif flg ~= nil then argc = argc + 1 end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-443)return ptn, repl, nmax, flg, argc, (nmax ~= nil and nmax < 1) or[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-444)(flg == 3 and ptn == repl)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-445)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-446)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-447)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-448)-- Parse the arguments of the `with_*_matching` class of modifiers[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-449)local function load_pattern_args (opts, fname)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-450)local state = 0[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-451)local cnt = 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-452)local keyw[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-453)local nptns = 0[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-454)local ptns = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-455)for _, val in ipairs(opts) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-456)if state == 0 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-457)nptns = nptns + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-458)ptns[nptns] = { val, false, false }[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-459)state = -1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-460)else[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-461)keyw = val:match'^%s*(.*%S)'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-462)if keyw == nil or mkeywords[keyw] == nil or ([](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-463)state > 0 and mkeywords[keyw] > 0[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-464)) then break[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-465)else[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-466)state = mkeywords[keyw][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-467)if state > 1 then ptns[nptns][2] = true end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-468)if state == 3 then ptns[nptns][3] = true end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-469)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-470)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-471)cnt = cnt + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-472)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-473)if state == 0 then error(modulename .. ', ‘' .. fname ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-474)'’: No pattern was given', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-475)return ptns, nptns, cnt[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-476)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-477)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-478)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-479)-- Load the optional arguments of the `parsing` and `reinterpreting` modifiers[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-480)local function load_parse_opts (opts, start_from)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-481)local argc = start_from[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-482)local tmp[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-483)local optslots = { true, true, true }[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-484)local noptslots = 3[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-485)local trimn = true[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-486)local trimu = false[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-487)local iplain = true[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-488)local pplain = true[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-489)local isp = '|'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-490)local psp = '='[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-491)repeat[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-492)noptslots = noptslots - 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-493)tmp = opts[argc][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-494)if tmp == nil then break end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-495)tmp = tmp:match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-496)if optslots[1] ~= nil and trim_parse_opts[tmp] ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-497)tmp = trim_parse_opts[tmp][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-498)trimn = tmp[1][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-499)trimu = tmp[2][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-500)optslots[1] = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-501)elseif optslots[2] ~= nil and isep_parse_opts[tmp] ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-502)argc = argc + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-503)iplain = isep_parse_opts[tmp][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-504)isp = opts[argc][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-505)optslots[2] = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-506)elseif optslots[3] ~= nil and psep_parse_opts[tmp] ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-507)argc = argc + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-508)pplain = psep_parse_opts[tmp][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-509)psp = opts[argc][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-510)optslots[3] = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-511)else break end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-512)argc = argc + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-513)until noptslots < 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-514)return isp, iplain, psp, pplain, trimn, trimu, argc[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-515)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-516)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-517)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-518)-- Map parameters' values using a custom callback and a referenced table[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-519)local value_maps = {[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-520)[0] = function (tbl, margs, karg, varg, fn)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-521)for key in pairs(tbl) do tbl[key] = fn() end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-522)end,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-523)[1] = function (tbl, margs, karg, varg, fn)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-524)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-525)margs[varg] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-526)tbl[key] = fn()[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-527)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-528)end,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-529)[2] = function (tbl, margs, karg, varg, fn)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-530)for key in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-531)margs[karg] = key[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-532)tbl[key] = fn()[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-533)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-534)end,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-535)[3] = function (tbl, margs, karg, varg, fn)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-536)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-537)margs[karg] = key[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-538)margs[varg] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-539)tbl[key] = fn()[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-540)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-541)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-542)}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-543)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-544)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-545)-- Private table for `map_names()`[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-546)local name_thieves = {[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-547)[0] = function (cache, tbl, rargs, karg, varg, fn)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-548)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-549)steal_if_renamed(val, tbl, key, cache, fn())[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-550)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-551)end,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-552)[1] = function (cache, tbl, rargs, karg, varg, fn)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-553)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-554)rargs[varg] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-555)steal_if_renamed(val, tbl, key, cache, fn())[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-556)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-557)end,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-558)[2] = function (cache, tbl, rargs, karg, varg, fn)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-559)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-560)rargs[karg] = key[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-561)steal_if_renamed(val, tbl, key, cache, fn())[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-562)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-563)end,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-564)[3] = function (cache, tbl, rargs, karg, varg, fn)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-565)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-566)rargs[karg] = key[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-567)rargs[varg] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-568)steal_if_renamed(val, tbl, key, cache, fn())[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-569)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-570)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-571)}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-572)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-573)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-574)-- Map parameters' names using a custom callback and a referenced table[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-575)local function map_names (tbl, rargs, karg, varg, looptype, fn)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-576)local cache = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-577)name_thieves[looptype](cache, tbl, rargs, karg, varg, fn)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-578)for key, val in pairs(cache) do tbl[key] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-579)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-580)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-581)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-582)-- Return a new table that contains `src` regrouped according to the numeric[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-583)-- suffixes in its keys[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-584)local function make_groups (src)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-585)-- NOTE: `src` might be the original metatable![](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-586)local tmp[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-587)local prefix[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-588)local gid[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-589)local groups = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-590)for key, val in pairs(src) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-591)-- `key` must only be a string or a number...[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-592)if type(key) == 'string' then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-593)prefix, gid = key:match'^%s*(.-)%s*(%-?%d*)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-594)gid = tonumber(gid) or ''[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-595)else[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-596)prefix = ''[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-597)gid = key[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-598)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-599)if groups[gid] == nil then groups[gid] = {} end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-600)if prefix == '0' or prefix:find'^%-?[1-9]%d*$' ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-601)prefix = tonumber(prefix)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-602)if prefix < 1 then prefix = prefix - 1 end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-603)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-604)groups[gid][prefix] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-605)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-606)return groups[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-607)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-608)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-609)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-610)-- Split into parts a string containing the `$#` and `$@` placeholders and[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-611)-- return the information as a skeleton table, a canvas table and a length[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-612)local function parse_placeholder_string (target)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-613)local skel = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-614)local canvas = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-615)local idx = 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-616)local s_pos = 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-617)local e_pos = string.find(target, '%$[@#]', 1, false)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-618)while e_pos ~= nil do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-619)canvas[idx] = target:sub(s_pos, e_pos - 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-620)skel[idx + 1] = target:sub(e_pos, e_pos + 1) == '$@'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-621)idx = idx + 2[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-622)s_pos = e_pos + 2[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-623)e_pos = string.find(target, '%$[@#]', s_pos, false)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-624)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-625)if (s_pos > target:len()) then idx = idx - 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-626)else canvas[idx] = target:sub(s_pos) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-627)return skel, canvas, idx[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-628)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-629)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-630)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-631)-- Populate a table by parsing a parameter string[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-632)local function parse_parameter_string (tbl, str, isp, ipl, psp, ppl, trn, tru)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-633)local key[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-634)local val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-635)local spos1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-636)local spos2[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-637)local pos1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-638)local pos2[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-639)local pos3 = 0[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-640)local idx = 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-641)local lenplone = #str + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-642)if isp == nil or isp == '' then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-643)if psp == nil or psp == '' then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-644)if tru then tbl[idx] = str:match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-645)else tbl[idx] = str end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-646)return tbl[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-647)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-648)spos1, spos2 = str:find(psp, 1, ppl)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-649)if spos1 == nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-650)key = idx[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-651)if tru then val = str:match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-652)else val = str end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-653)idx = idx + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-654)else[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-655)key = str:sub(1, spos1 - 1):match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-656)if key == '0' or key:find'^%-?[1-9]%d*$' ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-657)key = tonumber(key)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-658)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-659)val = str:sub(spos2 + 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-660)if trn then val = val:match'^%s*(.-)%s*$' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-661)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-662)tbl[key] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-663)return tbl[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-664)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-665)if psp == nil or psp == '' then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-666)repeat[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-667)pos1 = pos3 + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-668)pos2, pos3 = str:find(isp, pos1, ipl)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-669)val = str:sub(pos1, (pos2 or lenplone) - 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-670)if tru then val = val:match'^%s*(.-)%s*$' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-671)tbl[idx] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-672)idx = idx + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-673)until pos2 == nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-674)return tbl[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-675)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-676)repeat[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-677)pos1 = pos3 + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-678)pos2, pos3 = str:find(isp, pos1, ipl)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-679)val = str:sub(pos1, (pos2 or lenplone) - 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-680)spos1, spos2 = val:find(psp, 1, ppl)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-681)if spos1 == nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-682)key = idx[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-683)if tru then val = val:match'^%s*(.-)%s*$' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-684)idx = idx + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-685)else[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-686)key = val:sub(1, spos1 - 1):match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-687)if key == '0' or key:find'^%-?[1-9]%d*$' ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-688)key = tonumber(key)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-689)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-690)val = val:sub(spos2 + 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-691)if trn then val = val:match'^%s*(.-)%s*$' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-692)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-693)tbl[key] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-694)until pos2 == nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-695)return tbl[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-696)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-697)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-698)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-699)-- Concatenate the numeric keys from the table of parameters to the numeric[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-700)-- keys from the table of options; non-numeric keys from the table of options[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-701)-- will prevail over colliding non-numeric keys from the table of parameters[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-702)local function concat_params (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-703)local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-704)local nmax = table.maxn(ctx.pipe)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-705)local retval = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-706)if ctx.subset == 1 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-707)-- We need only the sequence[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-708)for key, val in ipairs(tbl) do retval[key + nmax] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-709)else[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-710)if ctx.subset == -1 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-711)for key in ipairs(tbl) do tbl[key] = nil end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-712)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-713)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-714)if type(key) == 'number' and key > 0 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-715)retval[key + nmax] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-716)else retval[key] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-717)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-718)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-719)for key, val in pairs(ctx.pipe) do retval[key] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-720)return retval[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-721)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-722)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-723)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-724)-- Flush the parameters by calling a custom function for each value (after this[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-725)-- function has been invoked `ctx.params` will be no longer usable)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-726)local function flush_params (ctx, fn)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-727)local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-728)if ctx.subset == 1 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-729)for key, val in ipairs(tbl) do fn(key, val) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-730)return[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-731)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-732)if ctx.subset == -1 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-733)for key, val in ipairs(tbl) do tbl[key] = nil end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-734)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-735)if ctx.sorttype > 0 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-736)local nums, words, nn, nw = get_key_list_sorted(ctx, tbl, natural_sort)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-737)if ctx.sorttype == 2 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-738)for idx = 1, nw do fn(words[idx], tbl[words[idx]]) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-739)for idx = 1, nn do fn(nums[idx], tbl[nums[idx]]) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-740)return[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-741)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-742)for idx = 1, nn do fn(nums[idx], tbl[nums[idx]]) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-743)for idx = 1, nw do fn(words[idx], tbl[words[idx]]) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-744)return[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-745)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-746)if ctx.subset ~= -1 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-747)for key, val in ipairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-748)fn(key, val)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-749)tbl[key] = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-750)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-751)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-752)for key, val in pairs(tbl) do fn(key, val) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-753)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-754)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-755)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-756)-- Flush the parameters by calling one of two custom functions for each value[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-757)-- (after this function has been invoked `ctx.params` will be no longer usable)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-758)local function mixed_flush_params (ctx, fn_seq, fn_oth)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-759)if ctx.subset == 1 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-760)for key, val in ipairs(ctx.params) do fn_seq(key, val) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-761)return[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-762)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-763)if ctx.subset == -1 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-764)flush_params(ctx, fn_oth)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-765)return[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-766)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-767)local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-768)if ctx.sorttype > 0 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-769)local nums, words, nn, nw = get_key_list_sorted(ctx, tbl, natural_sort)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-770)local sequence = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-771)for key, val in ipairs(tbl) do sequence[key] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-772)if ctx.sorttype == 2 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-773)for idx = 1, nw do fn_oth(words[idx], tbl[words[idx]]) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-774)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-775)for idx = 1, nn do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-776)if sequence[nums[idx]] then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-777)fn_seq(nums[idx], sequence[nums[idx]])[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-778)else[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-779)fn_oth(nums[idx], tbl[nums[idx]])[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-780)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-781)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-782)if ctx.sorttype ~= 2 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-783)for idx = 1, nw do fn_oth(words[idx], tbl[words[idx]]) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-784)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-785)return[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-786)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-787)if ctx.subset ~= -1 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-788)for key, val in ipairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-789)fn_seq(key, val)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-790)tbl[key] = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-791)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-792)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-793)for key, val in pairs(tbl) do fn_oth(key, val) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-794)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-795)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-796)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-797)-- Finalize and return a concatenated list[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-798)local function finalize_and_return_concatenated_list (ctx, lst, len, modsize)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-799)if len > 0 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-800)local tmp = ctx.oxfordsep or ctx.lastsep[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-801)if tmp ~= nil and len > modsize * 2 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-802)lst[len - modsize + 1] = tmp[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-803)elseif len > modsize and ctx.lastsep ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-804)lst[len - modsize + 1] = ctx.lastsep[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-805)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-806)lst[1] = ctx.header or ''[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-807)if ctx.footer ~= nil then lst[len + 1] = ctx.footer end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-808)ctx.text = table.concat(lst)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-809)else ctx.text = ctx.ifngiven or '' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-810)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-811)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-812)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-813)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-814)--[[ Modifiers ]]--[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-815)-----------------------------[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-816)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-817)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-818)-- Syntax: #invoke:params|sequential|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-819)library.sequential = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-820)if ctx.subset == -1 then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-821)': The two directives ‘non-sequential’ and ‘sequential’ are in contradiction with each other', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-822)if ctx.sorttype > 0 then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-823)': The ‘all_sorted’ and ‘reassorted’ directives are redundant when followed by ‘sequential’', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-824)ctx.iterfunc = ipairs[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-825)ctx.subset = 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-826)return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-827)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-828)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-829)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-830)-- Syntax: #invoke:params|non-sequential|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-831)library['non-sequential'] = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-832)if ctx.subset == 1 then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-833)': The two directives ‘sequential’ and ‘non-sequential’ are in contradiction with each other', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-834)ctx.iterfunc = pairs[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-835)ctx.subset = -1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-836)return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-837)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-838)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-839)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-840)-- Syntax: #invoke:params|all_sorted|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-841)library.all_sorted = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-842)if ctx.subset == 1 then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-843)': The ‘all_sorted’ directive is redundant after ‘sequential’', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-844)if ctx.sorttype == 2 then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-845)': The two directives ‘reassorted’ and ‘sequential’ are in contradiction with each other', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-846)ctx.sorttype = 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-847)return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-848)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-849)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-850)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-851)-- Syntax: #invoke:params|reassorted|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-852)library.reassorted = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-853)if ctx.subset == 1 then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-854)': The ‘reassorted’ directive is redundant after ‘sequential’', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-855)if ctx.sorttype == 1 then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-856)': The two directives ‘sequential’ and ‘reassorted’ are in contradiction with each other', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-857)ctx.sorttype = 2[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-858)return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-859)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-860)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-861)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-862)-- Syntax: #invoke:params|setting|directives|...|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-863)library.setting = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-864)local opts = ctx.pipe[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-865)local cmd = opts[1][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-866)if cmd ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-867)cmd = cmd:gsub('%s+', ''):gsub('/+', '/'):match'^/*(.*[^/])'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-868)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-869)if cmd == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-870)', ‘setting’: No directive was given', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-871)local sep = string.byte('/')[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-872)local argc = 2[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-873)local dest = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-874)local vname[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-875)local chr[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-876)for idx = 1, #cmd do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-877)chr = cmd:byte(idx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-878)if chr == sep then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-879)for key, val in ipairs(dest) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-880)ctx[val] = opts[argc][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-881)dest[key] = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-882)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-883)argc = argc + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-884)else[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-885)vname = memoryslots[string.char(chr)][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-886)if vname == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-887)', ‘setting’: Unknown slot ‘' ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-888)string.char(chr) .. '’', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-889)table.insert(dest, vname)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-890)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-891)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-892)for key, val in ipairs(dest) do ctx[val] = opts[argc] end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-893)return context_iterate(ctx, argc + 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-894)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-895)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-896)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-897)-- Syntax: #invoke:params|squeezing|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-898)library.squeezing = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-899)local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-900)local store = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-901)local indices = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-902)local newlen = 0[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-903)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-904)if type(key) == 'number' then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-905)newlen = newlen + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-906)indices[newlen] = key[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-907)store[key] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-908)tbl[key] = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-909)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-910)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-911)table.sort(indices)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-912)for idx = 1, newlen do tbl[idx] = store[indices[idx]] end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-913)return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-914)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-915)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-916)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-917)-- Syntax: #invoke:params|filling_the_gaps|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-918)library.filling_the_gaps = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-919)local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-920)local nmin = 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-921)local nmax = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-922)local nnums = -1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-923)local tmp = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-924)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-925)if type(key) == 'number' then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-926)if nmax == nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-927)if key < nmin then nmin = key end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-928)nmax = key[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-929)elseif key > nmax then nmax = key[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-930)elseif key < nmin then nmin = key end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-931)nnums = nnums + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-932)tmp[key] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-933)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-934)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-935)if nmax ~= nil and nmax - nmin > nnums then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-936)ctx.n_available = ctx.n_available + nmin + nnums - nmax[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-937)if ctx.n_available < 0 then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-938)', ‘filling_the_gaps’: It is possible to fill at most ' ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-939)tostring(maxfill) .. ' parameters', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-940)for idx = nmin, nmax, 1 do tbl[idx] = '' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-941)for key, val in pairs(tmp) do tbl[key] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-942)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-943)return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-944)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-945)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-946)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-947)-- Syntax: #invoke:params|clearing|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-948)library.clearing = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-949)local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-950)local numerics = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-951)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-952)if type(key) == 'number' then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-953)numerics[key] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-954)tbl[key] = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-955)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-956)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-957)for key, val in ipairs(numerics) do tbl[key] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-958)return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-959)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-960)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-961)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-962)-- Syntax: #invoke:params|cutting|left cut|right cut|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-963)library.cutting = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-964)local lcut = tonumber(ctx.pipe[1])[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-965)if lcut == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-966)', ‘cutting’: Left cut must be a number', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-967)local rcut = tonumber(ctx.pipe[2])[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-968)if rcut == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-969)', ‘cutting’: Right cut must be a number', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-970)local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-971)local len = #tbl[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-972)if lcut < 0 then lcut = len + lcut end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-973)if rcut < 0 then rcut = len + rcut end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-974)local tot = lcut + rcut[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-975)if tot > 0 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-976)local cache = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-977)if tot >= len then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-978)for key in ipairs(tbl) do tbl[key] = nil end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-979)tot = len[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-980)else[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-981)for idx = len - rcut + 1, len, 1 do tbl[idx] = nil end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-982)for idx = 1, lcut, 1 do tbl[idx] = nil end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-983)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-984)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-985)if type(key) == 'number' and key > 0 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-986)if key > len then cache[key - tot] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-987)else cache[key - lcut] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-988)tbl[key] = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-989)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-990)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-991)for key, val in pairs(cache) do tbl[key] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-992)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-993)return context_iterate(ctx, 3)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-994)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-995)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-996)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-997)-- Syntax: #invoke:params|cropping|left crop|right crop|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-998)library.cropping = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-999)local lcut = tonumber(ctx.pipe[1])[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1000)if lcut == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1001)', ‘cropping’: Left crop must be a number', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1002)local rcut = tonumber(ctx.pipe[2])[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1003)if rcut == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1004)', ‘cropping’: Right crop must be a number', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1005)local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1006)local nmin[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1007)local nmax[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1008)for key in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1009)if type(key) == 'number' then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1010)if nmin == nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1011)nmin = key[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1012)nmax = key[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1013)elseif key > nmax then nmax = key[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1014)elseif key < nmin then nmin = key end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1015)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1016)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1017)if nmin ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1018)local len = nmax - nmin + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1019)if lcut < 0 then lcut = len + lcut end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1020)if rcut < 0 then rcut = len + rcut end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1021)if lcut + rcut - len > -1 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1022)for key in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1023)if type(key) == 'number' then tbl[key] = nil end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1024)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1025)elseif lcut + rcut > 0 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1026)for idx = nmax - rcut + 1, nmax do tbl[idx] = nil end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1027)for idx = nmin, nmin + lcut - 1 do tbl[idx] = nil end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1028)local lshift = nmin + lcut - 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1029)if lshift > 0 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1030)for idx = lshift + 1, nmax, 1 do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1031)tbl[idx - lshift] = tbl[idx][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1032)tbl[idx] = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1033)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1034)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1035)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1036)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1037)return context_iterate(ctx, 3)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1038)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1039)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1040)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1041)-- Syntax: #invoke:params|purging|start offset|length|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1042)library.purging = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1043)local idx = tonumber(ctx.pipe[1])[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1044)if idx == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1045)', ‘purging’: Start offset must be a number', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1046)local len = tonumber(ctx.pipe[2])[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1047)if len == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1048)', ‘purging’: Length must be a number', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1049)local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1050)if len < 1 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1051)len = len + table.maxn(tbl)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1052)if idx > len then return context_iterate(ctx, 3) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1053)len = len - idx + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1054)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1055)ctx.params = copy_table_reduced(tbl, idx, len)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1056)return context_iterate(ctx, 3)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1057)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1058)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1059)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1060)-- Syntax: #invoke:params|backpurging|start offset|length|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1061)library.backpurging = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1062)local last = tonumber(ctx.pipe[1])[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1063)if last == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1064)', ‘backpurging’: Start offset must be a number', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1065)local len = tonumber(ctx.pipe[2])[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1066)if len == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1067)', ‘backpurging’: Length must be a number', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1068)local idx[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1069)local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1070)if len > 0 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1071)idx = last - len + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1072)else[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1073)for key in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1074)if type(key) == 'number' and (idx == nil or[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1075)key < idx) then idx = key end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1076)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1077)if idx == nil then return context_iterate(ctx, 3) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1078)idx = idx - len[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1079)if last < idx then return context_iterate(ctx, 3) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1080)len = last - idx + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1081)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1082)ctx.params = copy_table_reduced(ctx.params, idx, len)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1083)return context_iterate(ctx, 3)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1084)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1085)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1086)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1087)-- Syntax: #invoke:params|reversing_numeric_names|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1088)library.reversing_numeric_names = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1089)local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1090)local numerics = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1091)local nmax = 0[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1092)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1093)if type(key) == 'number' then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1094)numerics[key] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1095)tbl[key] = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1096)if key > nmax then nmax = key end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1097)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1098)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1099)for key, val in pairs(numerics) do tbl[nmax - key + 1] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1100)return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1101)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1102)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1103)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1104)-- Syntax: #invoke:params|pivoting_numeric_names|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1105)--[[[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1106)library.pivoting_numeric_names = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1107) local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1108) local shift = #tbl + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1109) if shift < 2 then return library.reversing_numeric_names(ctx) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1110) local numerics = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1111) for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1112) if type(key) == 'number' then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1113) numerics[key] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1114) tbl[key] = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1115) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1116) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1117) for key, val in pairs(numerics) do tbl[shift - key] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1118) return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1119)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1120)]]--[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1121)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1122)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1123)-- Syntax: #invoke:params|mirroring_numeric_names|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1124)--[[[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1125)library.mirroring_numeric_names = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1126) local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1127) local numerics = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1128) local nmax[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1129) local nmin[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1130) for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1131) if type(key) == 'number' then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1132) numerics[key] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1133) tbl[key] = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1134) if nmax == nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1135) nmax = key[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1136) nmin = key[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1137) elseif key > nmax then nmax = key[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1138) elseif key < nmin then nmin = key end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1139) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1140) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1141) for key, val in pairs(numerics) do tbl[nmax + nmin - key] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1142) return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1143)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1144)]]--[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1145)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1146)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1147)-- Syntax: #invoke:params|swapping_numeric_names|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1148)--[[[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1149)library.swapping_numeric_names = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1150) local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1151) local cache = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1152) local nsize = 0[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1153) local tmp[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1154) for key in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1155) if type(key) == 'number' then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1156) nsize = nsize + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1157) cache[nsize] = key[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1158) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1159) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1160) table.sort(cache)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1161) for idx = math.floor(nsize / 2), 1, -1 do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1162) tmp = tbl[cache[idx] ][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1163) tbl[cache[idx] ] = tbl[cache[nsize - idx + 1] ][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1164) tbl[cache[nsize - idx + 1] ] = tmp[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1165) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1166) return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1167)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1168)]]--[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1169)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1170)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1171)-- Syntax: #invoke:params|sorting_sequential_values|[criterion]|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1172)library.sorting_sequential_values = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1173)local sortfn[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1174)if ctx.pipe[1] ~= nil then sortfn = sortfunctions[ctx.pipe[1]] end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1175)if sortfn then table.sort(ctx.params, sortfn)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1176)else table.sort(ctx.params) end -- i.e. either `false` or `nil`[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1177)if sortfn == nil then return context_iterate(ctx, 1) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1178)return context_iterate(ctx, 2)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1179)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1180)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1181)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1182)-- Syntax: #invoke:params|inserting|position|how many|...|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1183)--[[[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1184)library.inserting = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1185) -- NOTE: `ctx.params` might be the original metatable! As a modifier,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1186) -- this function MUST create a copy of it before returning[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1187) local idx = tonumber(ctx.pipe[1])[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1188) if idx == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1189) ', ‘inserting’: Position must be a number', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1190) local len = tonumber(ctx.pipe[2])[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1191) if len == nil or len < 1 then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1192) ', ‘inserting’: The amount must be a number greater than zero', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1193) local opts = ctx.pipe[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1194) local tbl = copy_table_expanded(ctx.params, idx, len)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1195) for key = idx, idx + len - 1 do tbl[key] = opts[key - idx + 3] end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1196) ctx.params = tbl[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1197) return context_iterate(ctx, len + 3)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1198)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1199)]]--[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1200)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1201)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1202)-- Syntax: #invoke:params|imposing|name|value|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1203)library.imposing = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1204)if ctx.pipe[1] == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1205)', ‘imposing’: Missing parameter name to impose', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1206)local key = ctx.pipe[1]:match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1207)if key == '0' or key:find'^%-?[1-9]%d*$' then key = tonumber(key) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1208)ctx.params[key] = ctx.pipe[2][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1209)return context_iterate(ctx, 3)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1210)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1211)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1212)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1213)-- Syntax: #invoke:params|providing|name|value|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1214)library.providing = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1215)if ctx.pipe[1] == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1216)', ‘providing’: Missing parameter name to provide', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1217)local key = ctx.pipe[1]:match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1218)if key == '0' or key:find'^%-?[1-9]%d*$' ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1219)key = tonumber(key)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1220)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1221)if ctx.params[key] == nil then ctx.params[key] = ctx.pipe[2] end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1222)return context_iterate(ctx, 3)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1223)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1224)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1225)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1226)-- Syntax: #invoke:params|discarding|name|[how many]|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1227)library.discarding = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1228)if ctx.pipe[1] == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1229)', ‘discarding’: Missing parameter name to discard', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1230)local key[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1231)local len = tonumber(ctx.pipe[2])[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1232)if len == nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1233)key = ctx.pipe[1]:match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1234)if key == '0' or key:find'^%-?[1-9]%d*$' ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1235)key = tonumber(key)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1236)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1237)ctx.params[key] = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1238)return context_iterate(ctx, 2)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1239)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1240)key = tonumber(ctx.pipe[1])[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1241)if key == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1242)', ‘discarding’: A range was provided, but the initial parameter name is not numeric', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1243)if len < 1 then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1244)', ‘discarding’: A range can only be a number greater than zero', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1245)for idx = key, key + len - 1 do ctx.params[idx] = nil end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1246)return context_iterate(ctx, 3)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1247)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1248)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1249)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1250)-- Syntax: #invoke:params|excluding_non-numeric_names|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1251)library['excluding_non-numeric_names'] = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1252)local tmp = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1253)for key, val in pairs(tmp) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1254)if type(key) ~= 'number' then tmp[key] = nil end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1255)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1256)return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1257)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1258)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1259)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1260)-- Syntax: #invoke:params|excluding_numeric_names|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1261)library.excluding_numeric_names = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1262)local tmp = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1263)for key, val in pairs(tmp) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1264)if type(key) == 'number' then tmp[key] = nil end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1265)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1266)return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1267)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1268)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1269)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1270)-- Syntax: #invoke:params|with_name_matching|target 1|[plain flag 1]|[or][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1271)-- |[target 2]|[plain flag 2]|[or]|[...]|[target N]|[plain flag[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1272)-- N]|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1273)library.with_name_matching = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1274)-- NOTE: `ctx.params` might be the original metatable! As a modifier,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1275)-- this function MUST create a copy of it before returning[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1276)local targets, nptns, argc = load_pattern_args(ctx.pipe,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1277)'with_name_matching')[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1278)local tmp[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1279)local ptn[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1280)local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1281)local newparams = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1282)for idx = 1, nptns do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1283)ptn = targets[idx][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1284)if ptn[3] then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1285)tmp = ptn[1][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1286)if tmp == '0' or tmp:find'^%-?[1-9]%d*$' ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1287)tmp = tonumber(tmp)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1288)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1289)newparams[tmp] = tbl[tmp][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1290)else[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1291)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1292)if tostring(key):find(ptn[1], 1, ptn[2]) then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1293)newparams[key] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1294)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1295)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1296)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1297)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1298)ctx.params = newparams[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1299)return context_iterate(ctx, argc)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1300)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1301)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1302)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1303)-- Syntax: #invoke:params|with_name_not_matching|target 1|[plain flag 1][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1304)-- |[and]|[target 2]|[plain flag 2]|[and]|[...]|[target N]|[plain[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1305)-- flag N]|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1306)library.with_name_not_matching = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1307)local targets, nptns, argc = load_pattern_args(ctx.pipe,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1308)'with_name_not_matching')[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1309)local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1310)if nptns == 1 and targets[1][3] then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1311)local tmp = targets[1][1][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1312)if tmp == '0' or tmp:find'^%-?[1-9]%d*$' ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1313)tbl[tonumber(tmp)] = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1314)else tbl[tmp] = nil end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1315)return context_iterate(ctx, argc)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1316)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1317)local yesmatch[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1318)local ptn[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1319)for key in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1320)yesmatch = true[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1321)for idx = 1, nptns do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1322)ptn = targets[idx][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1323)if ptn[3] then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1324)if tostring(key) ~= ptn[1] then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1325)yesmatch = false[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1326)break[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1327)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1328)elseif not tostring(key):find(ptn[1], 1, ptn[2]) then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1329)yesmatch = false[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1330)break[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1331)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1332)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1333)if yesmatch then tbl[key] = nil end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1334)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1335)return context_iterate(ctx, argc)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1336)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1337)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1338)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1339)-- Syntax: #invoke:params|with_value_matching|target 1|[plain flag 1]|[or][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1340)-- |[target 2]|[plain flag 2]|[or]|[...]|[target N]|[plain flag[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1341)-- N]|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1342)library.with_value_matching = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1343)local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1344)local targets, nptns, argc = load_pattern_args(ctx.pipe,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1345)'with_value_matching')[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1346)local nomatch[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1347)local ptn[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1348)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1349)nomatch = true[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1350)for idx = 1, nptns do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1351)ptn = targets[idx][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1352)if ptn[3] then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1353)if val == ptn[1] then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1354)nomatch = false[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1355)break[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1356)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1357)elseif val:find(ptn[1], 1, ptn[2]) then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1358)nomatch = false[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1359)break[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1360)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1361)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1362)if nomatch then tbl[key] = nil end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1363)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1364)return context_iterate(ctx, argc)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1365)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1366)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1367)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1368)-- Syntax: #invoke:params|with_value_not_matching|target 1|[plain flag 1][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1369)-- |[and]|[target 2]|[plain flag 2]|[and]|[...]|[target N]|[plain[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1370)-- flag N]|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1371)library.with_value_not_matching = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1372)local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1373)local targets, nptns, argc = load_pattern_args(ctx.pipe,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1374)'with_value_not_matching')[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1375)local yesmatch[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1376)local ptn[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1377)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1378)yesmatch = true[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1379)for idx = 1, nptns do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1380)ptn = targets[idx][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1381)if ptn[3] then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1382)if val ~= ptn[1] then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1383)yesmatch = false[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1384)break[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1385)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1386)elseif not val:find(ptn[1], 1, ptn[2]) then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1387)yesmatch = false[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1388)break[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1389)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1390)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1391)if yesmatch then tbl[key] = nil end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1392)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1393)return context_iterate(ctx, argc)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1394)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1395)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1396)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1397)-- Syntax: #invoke:params|trimming_values|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1398)library.trimming_values = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1399)local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1400)for key, val in pairs(tbl) do tbl[key] = val:match'^%s*(.-)%s*$' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1401)return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1402)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1403)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1404)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1405)-- Syntax: #invoke:params|mapping_to_lowercase|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1406)library.mapping_to_lowercase = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1407)local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1408)for key, val in pairs(tbl) do tbl[key] = val:lower() end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1409)return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1410)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1411)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1412)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1413)-- Syntax: #invoke:params|mapping_to_uppercase|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1414)library.mapping_to_uppercase = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1415)local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1416)for key, val in pairs(tbl) do tbl[key] = val:upper() end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1417)return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1418)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1419)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1420)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1421)-- Syntax: #invoke:params|mapping_by_calling|template name|[call[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1422)-- style]|[let]|[...][number of additional parameters]|[parameter[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1423)-- 1]|[parameter 2]|[...]|[parameter N]|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1424)library.mapping_by_calling = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1425)local opts = ctx.pipe[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1426)local tname[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1427)if opts[1] ~= nil then tname = opts[1]:match'^%s*(.*%S)' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1428)if tname == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1429)', ‘mapping_by_calling’: No template name was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1430)local margs, argc, looptype, karg, varg = load_callback_opts(opts, 1,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1431)mapping_styles.values_only)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1432)local model = { title = tname, args = margs }[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1433)value_maps[looptype](ctx.params, margs, karg, varg, function ()[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1434)return ctx.frame:expandTemplate(model)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1435)end)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1436)return context_iterate(ctx, argc)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1437)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1438)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1439)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1440)-- Syntax: #invoke:params|mapping_by_invoking|module name|function[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1441)-- name|[call style]|[let]|[...]|[number of additional[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1442)-- arguments]|[argument 1]|[argument 2]|[...]|[argument N]|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1443)library.mapping_by_invoking = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1444)local opts = ctx.pipe[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1445)local mname[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1446)local fname[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1447)if opts[1] ~= nil then mname = opts[1]:match'^%s*(.*%S)' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1448)if mname == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1449)', ‘mapping_by_invoking’: No module name was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1450)if opts[2] ~= nil then fname = opts[2]:match'^%s*(.*%S)' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1451)if fname == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1452)', ‘mapping_by_invoking’: No function name was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1453)local margs, argc, looptype, karg, varg = load_callback_opts(opts, 2,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1454)mapping_styles.values_only)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1455)local model = { title = 'Module:' .. mname, args = margs }[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1456)local mfunc = require(model.title)[fname][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1457)if mfunc == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1458)', ‘mapping_by_invoking’: The function ‘' .. fname ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1459)'’ does not exist', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1460)value_maps[looptype](ctx.params, margs, karg, varg, function ()[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1461)return tostring(mfunc(ctx.frame:newChild(model)))[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1462)end)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1463)return context_iterate(ctx, argc)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1464)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1465)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1466)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1467)-- Syntax: #invoke:params|mapping_by_magic|parser function|[call[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1468)-- style]|[let]|[...][number of additional arguments]|[argument[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1469)-- 1]|[argument 2]|[...]|[argument N]|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1470)library.mapping_by_magic = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1471)local opts = ctx.pipe[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1472)local magic[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1473)if opts[1] ~= nil then magic = opts[1]:match'^%s*(.*%S)' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1474)if magic == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1475)', ‘mapping_by_magic’: No parser function was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1476)local margs, argc, looptype, karg, varg = load_callback_opts(opts, 1,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1477)mapping_styles.values_only)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1478)value_maps[looptype](ctx.params, margs, karg, varg, function ()[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1479)return ctx.frame:callParserFunction(magic, margs)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1480)end)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1481)return context_iterate(ctx, argc)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1482)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1483)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1484)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1485)-- Syntax: #invoke:params|mapping_by_replacing|target|replace|[count]|[plain[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1486)-- flag]|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1487)library.mapping_by_replacing = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1488)local ptn, repl, nmax, flg, argc, die =[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1489)load_replace_args(ctx.pipe, 'mapping_by_replacing')[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1490)if die then return context_iterate(ctx, argc) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1491)local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1492)if flg == 3 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1493)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1494)if val == ptn then tbl[key] = repl end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1495)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1496)else[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1497)if flg == 2 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1498)-- Copied from Module:String's `str._escapePattern()`[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1499)ptn = ptn:gsub('[%(%)%.%%%+%-%*%?%[%^%$%]]', '%%%0')[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1500)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1501)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1502)tbl[key] = val:gsub(ptn, repl, nmax)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1503)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1504)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1505)return context_iterate(ctx, argc)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1506)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1507)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1508)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1509)-- Syntax: #invoke:params|mapping_by_mixing|mixing string|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1510)library.mapping_by_mixing = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1511)if ctx.pipe[1] == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1512)', ‘mapping_by_mixing’: No mixing string was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1513)local mix = ctx.pipe[1][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1514)local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1515)if mix == '$#' then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1516)for key in pairs(tbl) do tbl[key] = tostring(key) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1517)return context_iterate(ctx, 2)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1518)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1519)local skel, cnv, n_parts = parse_placeholder_string(mix)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1520)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1521)for idx = 2, n_parts, 2 do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1522)if skel[idx] then cnv[idx] = val else cnv[idx] = tostring(key) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1523)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1524)tbl[key] = table.concat(cnv)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1525)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1526)return context_iterate(ctx, 2)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1527)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1528)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1529)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1530)-- Syntax: #invoke:params|mapping_to_names|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1531)--[[[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1532)library.mapping_to_names = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1533) local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1534) for key in pairs(tbl) do tbl[key] = key end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1535) return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1536)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1537)]]--[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1538)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1539)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1540)-- Syntax: #invoke:params|renaming_to_lowercase|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1541)library.renaming_to_lowercase = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1542)-- NOTE: `ctx.params` might be the original metatable! As a modifier,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1543)-- this function MUST create a copy of it before returning[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1544)local cache = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1545)for key, val in pairs(ctx.params) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1546)if type(key) == 'string' then cache[key:lower()] = val else[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1547)cache[key] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1548)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1549)ctx.params = cache[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1550)return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1551)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1552)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1553)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1554)-- Syntax: #invoke:params|renaming_to_uppercase|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1555)library.renaming_to_uppercase = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1556)-- NOTE: `ctx.params` might be the original metatable! As a modifier,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1557)-- this function MUST create a copy of it before returning[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1558)local cache = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1559)for key, val in pairs(ctx.params) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1560)if type(key) == 'string' then cache[key:upper()] = val else[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1561)cache[key] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1562)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1563)ctx.params = cache[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1564)return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1565)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1566)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1567)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1568)-- Syntax: #invoke:params|renaming_by_calling|template name|[call[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1569)-- style]|[let]|[...][number of additional parameters]|[parameter[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1570)-- 1]|[parameter 2]|[...]|[parameter N]|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1571)library.renaming_by_calling = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1572)local opts = ctx.pipe[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1573)local tname[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1574)if opts[1] ~= nil then tname = opts[1]:match'^%s*(.*%S)' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1575)if tname == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1576)', ‘renaming_by_calling’: No template name was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1577)local rargs, argc, looptype, karg, varg = load_callback_opts(opts, 1,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1578)mapping_styles.names_only)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1579)local model = { title = tname, args = rargs }[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1580)map_names(ctx.params, rargs, karg, varg, looptype, function ()[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1581)return ctx.frame:expandTemplate(model)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1582)end)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1583)return context_iterate(ctx, argc)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1584)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1585)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1586)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1587)-- Syntax: #invoke:params|renaming_by_invoking|module name|function[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1588)-- name|[call style]|[let]|[...]|[number of additional[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1589)-- arguments]|[argument 1]|[argument 2]|[...]|[argument N]|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1590)library.renaming_by_invoking = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1591)local opts = ctx.pipe[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1592)local mname[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1593)local fname[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1594)if opts[1] ~= nil then mname = opts[1]:match'^%s*(.*%S)' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1595)if mname == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1596)', ‘renaming_by_invoking’: No module name was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1597)if opts[2] ~= nil then fname = opts[2]:match'^%s*(.*%S)' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1598)if fname == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1599)', ‘renaming_by_invoking’: No function name was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1600)local rargs, argc, looptype, karg, varg = load_callback_opts(opts, 2,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1601)mapping_styles.names_only)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1602)local model = { title = 'Module:' .. mname, args = rargs }[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1603)local mfunc = require(model.title)[fname][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1604)if mfunc == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1605)', ‘renaming_by_invoking’: The function ‘' .. fname ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1606)'’ does not exist', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1607)map_names(ctx.params, rargs, karg, varg, looptype, function ()[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1608)return tostring(mfunc(ctx.frame:newChild(model)))[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1609)end)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1610)return context_iterate(ctx, argc)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1611)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1612)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1613)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1614)-- Syntax: #invoke:params|renaming_by_magic|parser function|[call[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1615)-- style]|[let]|[...][number of additional arguments]|[argument[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1616)-- 1]|[argument 2]|[...]|[argument N]|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1617)library.renaming_by_magic = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1618)local opts = ctx.pipe[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1619)local magic[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1620)if opts[1] ~= nil then magic = opts[1]:match'^%s*(.*%S)' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1621)if magic == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1622)', ‘renaming_by_magic’: No parser function was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1623)local rargs, argc, looptype, karg, varg = load_callback_opts(opts, 1,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1624)mapping_styles.names_only)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1625)map_names(ctx.params, rargs, karg, varg, looptype, function ()[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1626)return ctx.frame:callParserFunction(magic, rargs)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1627)end)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1628)return context_iterate(ctx, argc)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1629)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1630)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1631)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1632)-- Syntax: #invoke:params|renaming_by_replacing|target|replace|[count]|[plain[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1633)-- flag]|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1634)library.renaming_by_replacing = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1635)local ptn, repl, nmax, flg, argc, die =[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1636)load_replace_args(ctx.pipe, 'renaming_by_replacing')[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1637)if die then return context_iterate(ctx, argc) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1638)local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1639)if flg == 3 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1640)ptn = ptn:match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1641)if ptn == '0' or ptn:find'^%-?[1-9]%d*$' ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1642)ptn = tonumber(ptn)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1643)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1644)local val = tbl[ptn][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1645)if val ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1646)tbl[ptn] = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1647)repl = repl:match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1648)if repl == '0' or repl:find'^%-?[1-9]%d*$' ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1649)repl = tonumber(repl)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1650)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1651)tbl[repl] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1652)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1653)else[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1654)if flg == 2 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1655)-- Copied from Module:String's `str._escapePattern()`[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1656)ptn = ptn:gsub('[%(%)%.%%%+%-%*%?%[%^%$%]]', '%%%0')[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1657)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1658)local cache = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1659)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1660)steal_if_renamed(val, tbl, key, cache,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1661)tostring(key):gsub(ptn, repl, nmax))[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1662)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1663)for key, val in pairs(cache) do tbl[key] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1664)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1665)return context_iterate(ctx, argc)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1666)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1667)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1668)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1669)-- Syntax: #invoke:params|renaming_by_mixing|mixing string|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1670)library.renaming_by_mixing = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1671)-- NOTE: `ctx.params` might be the original metatable! As a modifier,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1672)-- this function MUST create a copy of it before returning[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1673)if ctx.pipe[1] == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1674)', ‘renaming_by_mixing’: No mixing string was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1675)local mix = ctx.pipe[1]:match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1676)local cache = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1677)local tmp[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1678)if mix == '$@' then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1679)for _, val in pairs(ctx.params) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1680)tmp = val:match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1681)if tmp == '0' or tmp:find'^%-?[1-9]%d*$' ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1682)cache[tonumber(tmp)] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1683)else cache[tmp] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1684)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1685)else[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1686)local skel, canvas, n_parts = parse_placeholder_string(mix)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1687)for key, val in pairs(ctx.params) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1688)for idx = 2, n_parts, 2 do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1689)if skel[idx] then canvas[idx] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1690)else canvas[idx] = tostring(key) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1691)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1692)tmp = table.concat(canvas):match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1693)if tmp == '0' or tmp:find'^%-?[1-9]%d*$' ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1694)cache[tonumber(tmp)] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1695)else cache[tmp] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1696)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1697)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1698)ctx.params = cache[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1699)return context_iterate(ctx, 2)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1700)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1701)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1702)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1703)-- Syntax: #invoke:params|renaming_to_values|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1704)--[[[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1705)library.renaming_to_values = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1706) -- NOTE: `ctx.params` might be the original metatable! As a modifier,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1707) -- this function MUST create a copy of it before returning[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1708) local cache = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1709) for _, val in pairs(ctx.params) do cache[val] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1710) ctx.params = cache[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1711) return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1712)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1713)]]--[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1714)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1715)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1716)-- Syntax: #invoke:params|grouping_by_calling|template[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1717)-- name|[let]|[...]|[number of additional arguments]|[argument[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1718)-- 1]|[argument 2]|[...]|[argument N]|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1719)library.grouping_by_calling = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1720)-- NOTE: `ctx.params` might be the original metatable! As a modifier,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1721)-- this function MUST create a copy of it before returning[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1722)local opts = ctx.pipe[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1723)local tmp[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1724)if opts[1] ~= nil then tmp = opts[1]:match'^%s*(.*%S)' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1725)if tmp == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1726)', ‘grouping_by_calling’: No template name was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1727)local model = { title = tmp }[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1728)local tmp, argc = load_child_opts(opts, 2, 0)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1729)local gargs = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1730)for key, val in pairs(tmp) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1731)if type(key) == 'number' and key < 1 then gargs[key - 1] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1732)else gargs[key] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1733)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1734)local groups = make_groups(ctx.params)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1735)for gid, group in pairs(groups) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1736)for key, val in pairs(gargs) do group[key] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1737)group[0] = gid[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1738)model.args = group[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1739)groups[gid] = ctx.frame:expandTemplate(model)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1740)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1741)ctx.params = groups[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1742)return context_iterate(ctx, argc)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1743)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1744)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1745)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1746)-- Syntax: #invoke:params|parsing|string to parse|[trim flag]|[iteration[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1747)-- delimiter setter]|[...]|[key-value delimiter setter]|[...]|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1748)library.parsing = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1749)local opts = ctx.pipe[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1750)if opts[1] == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1751)', ‘parsing’: No string to parse was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1752)local isep, iplain, psep, pplain, trimnamed, trimunnamed, argc =[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1753)load_parse_opts(opts, 2)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1754)parse_parameter_string(ctx.params, opts[1], isep, iplain, psep, pplain,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1755)trimnamed, trimunnamed)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1756)return context_iterate(ctx, argc)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1757)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1758)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1759)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1760)-- Syntax: #invoke:params|reinterpreting|parameter to reinterpret|[trim[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1761)-- flag]|[iteration delimiter setter]|[...]|[key-value delimiter[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1762)-- setter]|[...]|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1763)library.reinterpreting = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1764)local opts = ctx.pipe[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1765)if opts[1] == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1766)', ‘reinterpreting’: No parameter to reinterpret was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1767)local isep, iplain, psep, pplain, trimnamed, trimunnamed, argc =[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1768)load_parse_opts(opts, 2)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1769)local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1770)local tmp = opts[1]:match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1771)if tmp == '0' or tmp:find'^%-?[1-9]%d*$' ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1772)tmp = tonumber(tmp)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1773)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1774)local str = tbl[tmp][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1775)if str ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1776)tbl[tmp] = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1777)parse_parameter_string(tbl, str, isep, iplain, psep, pplain,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1778)trimnamed, trimunnamed)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1779)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1780)return context_iterate(ctx, argc)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1781)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1782)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1783)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1784)-- Syntax: #invoke:params|mixing_names_and_values|mixing string|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1785)library.mixing_names_and_values = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1786)-- NOTE: `ctx.params` might be the original metatable! As a modifier,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1787)-- this function MUST create a copy of it before returning[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1788)if ctx.pipe[1] == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1789)', ‘mixing_names_and_values’: No mixing string was provided for parameter names', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1790)if ctx.pipe[2] == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1791)', ‘mixing_names_and_values’: No mixing string was provided for parameter values', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1792)local mix_k = ctx.pipe[1]:match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1793)local mix_v = ctx.pipe[2][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1794)local cache = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1795)local tmp[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1796)if mix_k == '$@' and mix_v == '$@' then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1797)for _, val in pairs(ctx.params) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1798)tmp = val:match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1799)if tmp == '0' or tmp:find'^%-?[1-9]%d*$' ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1800)cache[tonumber(tmp)] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1801)else cache[tmp] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1802)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1803)elseif mix_k == '$@' and mix_v == '$#' then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1804)for key, val in pairs(ctx.params) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1805)tmp = val:match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1806)if tmp == '0' or tmp:find'^%-?[1-9]%d*$' ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1807)cache[tonumber(tmp)] = tostring(key)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1808)else cache[tmp] = tostring(key) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1809)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1810)elseif mix_k == '$#' and mix_v == '$#' then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1811)for _, val in pairs(ctx.params) do cache[key] = tostring(key) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1812)else[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1813)local skel_k, cnv_k, n_parts_k = parse_placeholder_string(mix_k)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1814)local skel_v, cnv_v, n_parts_v = parse_placeholder_string(mix_v)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1815)for key, val in pairs(ctx.params) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1816)tmp = tostring(key)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1817)for idx = 2, n_parts_k, 2 do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1818)if skel_k[idx] then cnv_k[idx] = val else cnv_k[idx] = tmp end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1819)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1820)for idx = 2, n_parts_v, 2 do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1821)if skel_v[idx] then cnv_v[idx] = val else cnv_v[idx] = tmp end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1822)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1823)tmp = table.concat(cnv_k):match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1824)if tmp == '0' or tmp:find'^%-?[1-9]%d*$' ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1825)tmp = tonumber(tmp)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1826)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1827)cache[tmp] = table.concat(cnv_v)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1828)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1829)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1830)ctx.params = cache[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1831)return context_iterate(ctx, 3)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1832)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1833)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1834)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1835)-- Syntax: #invoke:params|swapping_names_and_values|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1836)--[[[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1837)library.swapping_names_and_values = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1838) -- NOTE: `ctx.params` might be the original metatable! As a modifier,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1839) -- this function MUST create a copy of it before returning[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1840) local cache = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1841) for key, val in pairs(ctx.params) do cache[val] = key end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1842) ctx.params = cache[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1843) return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1844)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1845)]]--[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1846)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1847)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1848)-- Syntax: #invoke:params|combining_by_calling|template name|new parameter[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1849)-- name|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1850)library.combining_by_calling = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1851)-- NOTE: `ctx.params` might be the original metatable! As a modifier,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1852)-- this function MUST create a copy of it before returning[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1853)local tname = ctx.pipe[1][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1854)if tname ~= nil then tname = tname:match'^%s*(.*%S)'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1855)else error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1856)', ‘combining_by_calling’: No template name was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1857)local merge_into = ctx.pipe[2][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1858)if merge_into == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1859)', ‘combining_by_calling’: No parameter name was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1860)merge_into = merge_into:match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1861)if merge_into == '0' or merge_into:find'^%-?[1-9]%d*$' ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1862)merge_into = tonumber(merge_into)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1863)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1864)ctx.params = {[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1865)[merge_into] = ctx.frame:expandTemplate{[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1866)title = tname,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1867)args = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1868)}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1869)}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1870)return context_iterate(ctx, 3)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1871)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1872)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1873)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1874)-- Syntax: #invoke:params|snapshotting|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1875)library.snapshotting = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1876)push_cloned_stack(ctx, ctx.params)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1877)return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1878)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1879)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1880)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1881)-- Syntax: #invoke:params|remembering|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1882)library.remembering = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1883)push_cloned_stack(ctx, ctx.oparams)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1884)return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1885)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1886)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1887)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1888)-- Syntax: #invoke:params|entering_substack|[new]|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1889)library.entering_substack = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1890)local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1891)local ncurrparent = ctx.n_parents + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1892)if ctx.parents == nil then ctx.parents = { tbl }[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1893)else ctx.parents[ncurrparent] = tbl end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1894)ctx.n_parents = ncurrparent[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1895)if ctx.pipe[1] ~= nil and ctx.pipe[1]:match'^%s*new%s*$' then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1896)ctx.params = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1897)return context_iterate(ctx, 2)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1898)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1899)local currsnap = ctx.n_children[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1900)if currsnap > 0 then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1901)ctx.params = ctx.children[currsnap][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1902)ctx.children[currsnap] = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1903)ctx.n_children = currsnap - 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1904)else[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1905)local newparams = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1906)for key, val in pairs(tbl) do newparams[key] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1907)ctx.params = newparams[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1908)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1909)return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1910)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1911)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1912)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1913)-- Syntax: #invoke:params|pulling|parameter name|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1914)library.pulling = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1915)local opts = ctx.pipe[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1916)if opts[1] == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1917)', ‘pulling’: No parameter to pull was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1918)local parent[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1919)local tmp = ctx.n_parents[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1920)if tmp < 1 then parent = ctx.oparams else parent = ctx.parents[tmp] end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1921)tmp = opts[1]:match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1922)if tmp == '0' or tmp:find'^%-?[1-9]%d*$' ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1923)tmp = tonumber(tmp)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1924)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1925)if parent[tmp] ~= nil then ctx.params[tmp] = parent[tmp] end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1926)return context_iterate(ctx, 2)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1927)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1928)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1929)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1930)-- Syntax: #invoke:params|detaching_substack|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1931)library.detaching_substack = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1932)local ncurrparent = ctx.n_parents[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1933)if ncurrparent < 1 then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1934)', ‘detaching_substack’: No substack has been created', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1935)local parent = ctx.parents[ncurrparent][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1936)for key in pairs(ctx.params) do parent[key] = nil end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1937)return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1938)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1939)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1940)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1941)-- Syntax: #invoke:params|dropping_substack|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1942)library.dropping_substack = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1943)local ncurrparent = ctx.n_parents[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1944)if ncurrparent < 1 then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1945)', ‘dropping_substack’: No substack has been created', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1946)ctx.params = ctx.parents[ncurrparent][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1947)ctx.parents[ncurrparent] = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1948)ctx.n_parents = ncurrparent - 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1949)return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1950)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1951)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1952)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1953)-- Syntax: #invoke:params|leaving_substack|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1954)library.leaving_substack = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1955)local ncurrparent = ctx.n_parents[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1956)if ncurrparent < 1 then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1957)', ‘leaving_substack’: No substack has been created', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1958)local currsnap = ctx.n_children + 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1959)if ctx.children == nil then ctx.children = { ctx.params }[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1960)else ctx.children[currsnap] = ctx.params end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1961)ctx.params = ctx.parents[ncurrparent][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1962)ctx.parents[ncurrparent] = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1963)ctx.n_parents = ncurrparent - 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1964)ctx.n_children = currsnap[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1965)return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1966)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1967)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1968)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1969)-- Syntax: #invoke:params|merging_substack|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1970)library.merging_substack = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1971)local ncurrparent = ctx.n_parents[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1972)if ncurrparent < 1 then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1973)', ‘merging_substack’: No substack has been created', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1974)local parent = ctx.parents[ncurrparent][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1975)local child = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1976)ctx.params = parent[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1977)ctx.parents[ncurrparent] = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1978)ctx.n_parents = ncurrparent - 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1979)for key, val in pairs(child) do parent[key] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1980)return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1981)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1982)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1983)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1984)-- Syntax: #invoke:params|flushing|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1985)library.flushing = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1986)if ctx.n_children < 1 then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1987)', ‘flushing’: There are no substacks to flush', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1988)local parent = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1989)local currsnap = ctx.n_children[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1990)for key, val in pairs(ctx.children[currsnap]) do parent[key] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1991)ctx.children[currsnap] = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1992)ctx.n_children = currsnap - 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1993)return context_iterate(ctx, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1994)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1995)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1996)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1997)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1998)--[[ Functions ]]--[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-1999)-----------------------------[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2000)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2001)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2002)-- Syntax: #invoke:params|count[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2003)library.count = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2004)-- NOTE: `ctx.pipe` and `ctx.params` might be the original metatables![](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2005)local retval = 0[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2006)for _ in ctx.iterfunc(ctx.params) do retval = retval + 1 end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2007)if ctx.subset == -1 then retval = retval - #ctx.params end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2008)ctx.text = retval[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2009)return false[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2010)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2011)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2012)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2013)-- Syntax: #invoke:args|concat_and_call|template name|[prepend 1]|[prepend 2][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2014)-- |[...]|[item n]|[named item 1=value 1]|[...]|[named item n=value[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2015)-- n]|[...][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2016)library.concat_and_call = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2017)-- NOTE: `ctx.params` might be the original metatable![](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2018)local opts = ctx.pipe[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2019)local tname[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2020)if opts[1] ~= nil then tname = opts[1]:match'^%s*(.*%S)' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2021)if tname == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2022)', ‘concat_and_call’: No template name was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2023)remove_numeric_keys(opts, 1, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2024)ctx.text = ctx.frame:expandTemplate{[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2025)title = tname,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2026)args = concat_params(ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2027)}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2028)return false[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2029)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2030)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2031)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2032)-- Syntax: #invoke:args|concat_and_invoke|module name|function name|[prepend[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2033)-- 1]|[prepend 2]|[...]|[item n]|[named item 1=value 1]|[...]|[named[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2034)-- item n=value n]|[...][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2035)library.concat_and_invoke = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2036)-- NOTE: `ctx.params` might be the original metatable![](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2037)local opts = ctx.pipe[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2038)local mname[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2039)local fname[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2040)if opts[1] ~= nil then mname = opts[1]:match'^%s*(.*%S)' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2041)if mname == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2042)', ‘concat_and_invoke’: No module name was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2043)if opts[2] ~= nil then fname = opts[2]:match'^%s*(.*%S)' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2044)if fname == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2045)', ‘concat_and_invoke’: No function name was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2046)remove_numeric_keys(opts, 1, 2)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2047)local mfunc = require('Module:' .. mname)[fname][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2048)if mfunc == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2049)', ‘concat_and_invoke’: The function ‘' .. fname ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2050)'’ does not exist', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2051)ctx.text = mfunc(ctx.frame:newChild{[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2052)title = 'Module:' .. mname,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2053)args = concat_params(ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2054)})[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2055)return false[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2056)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2057)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2058)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2059)-- Syntax: #invoke:args|concat_and_magic|parser function|[prepend 1]|[prepend[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2060)-- 2]|[...]|[item n]|[named item 1=value 1]|[...]|[named item n=[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2061)-- value n]|[...][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2062)library.concat_and_magic = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2063)-- NOTE: `ctx.params` might be the original metatable![](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2064)local opts = ctx.pipe[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2065)local magic[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2066)if opts[1] ~= nil then magic = opts[1]:match'^%s*(.*%S)' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2067)if magic == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2068)', ‘concat_and_magic’: No parser function was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2069)remove_numeric_keys(opts, 1, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2070)ctx.text = ctx.frame:callParserFunction(magic, concat_params(ctx))[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2071)return false[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2072)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2073)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2074)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2075)-- Syntax: #invoke:params|value_of|parameter name[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2076)library.value_of = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2077)-- NOTE: `ctx.pipe` and `ctx.params` might be the original metatables![](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2078)local opts = ctx.pipe[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2079)if opts[1] == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2080)', ‘value_of’: No parameter name was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2081)local val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2082)local key = opts[1]:match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2083)if key == '0' or key:find'^%-?[1-9]%d*$' ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2084)key = tonumber(key)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2085)val = ctx.params[key][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2086)-- No worries: #ctx.params is unused if the modifier in first position[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2087)if val ~= nil and ([](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2088)ctx.subset ~= -1 or key > #ctx.params or key < 1[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2089)) and ([](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2090)ctx.subset ~= 1 or (key <= #ctx.params and key > 0)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2091)) then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2092)ctx.text = (ctx.header or '') .. val .. (ctx.footer or '')[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2093)else ctx.text = ctx.ifngiven or '' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2094)else[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2095)val = ctx.params[key][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2096)if ctx.subset ~= 1 and val ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2097)ctx.text = (ctx.header or '') .. val .. (ctx.footer or '')[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2098)else ctx.text = ctx.ifngiven or '' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2099)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2100)return false[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2101)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2102)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2103)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2104)-- Syntax: #invoke:params|list[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2105)library.list = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2106)-- NOTE: `ctx.pipe` might be the original metatable![](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2107)local kvs = ctx.pairsep or ''[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2108)local pps = ctx.itersep or ''[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2109)local ret = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2110)local nss = 0[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2111)flush_params([](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2112)ctx,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2113)function (key, val)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2114)ret[nss + 1] = pps[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2115)ret[nss + 2] = key[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2116)ret[nss + 3] = kvs[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2117)ret[nss + 4] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2118)nss = nss + 4[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2119)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2120))[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2121)finalize_and_return_concatenated_list(ctx, ret, nss, 4)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2122)return false[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2123)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2124)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2125)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2126)-- Syntax: #invoke:params|list_values[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2127)library.list_values = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2128)-- NOTE: `ctx.pipe` might be the original metatable![](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2129)-- NOTE: `library.coins()` and `library.unique_coins()` rely on us[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2130)local pps = ctx.itersep or ''[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2131)local ret = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2132)local nss = 0[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2133)flush_params([](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2134)ctx,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2135)function (key, val)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2136)ret[nss + 1] = pps[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2137)ret[nss + 2] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2138)nss = nss + 2[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2139)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2140))[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2141)finalize_and_return_concatenated_list(ctx, ret, nss, 2)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2142)return false[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2143)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2144)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2145)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2146)-- Syntax: #invoke:params|list_maybe_with_names[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2147)library.list_maybe_with_names = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2148)-- NOTE: `ctx.pipe` might be the original metatable![](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2149)local kvs = ctx.pairsep or ''[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2150)local pps = ctx.itersep or ''[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2151)local ret = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2152)local nss = 0[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2153)mixed_flush_params([](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2154)ctx,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2155)function (key, val)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2156)ret[nss + 1] = pps[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2157)ret[nss + 2] = ''[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2158)ret[nss + 3] = ''[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2159)ret[nss + 4] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2160)nss = nss + 4[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2161)end,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2162)function (key, val)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2163)ret[nss + 1] = pps[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2164)ret[nss + 2] = key[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2165)ret[nss + 3] = kvs[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2166)ret[nss + 4] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2167)nss = nss + 4[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2168)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2169))[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2170)finalize_and_return_concatenated_list(ctx, ret, nss, 4)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2171)return false[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2172)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2173)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2174)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2175)-- Syntax: #invoke:params|coins|[first coin = value 1]|[second coin = value[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2176)-- 2]|[...]|[last coin = value N][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2177)library.coins = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2178)-- NOTE: `ctx.pipe` might be the original metatable![](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2179)local opts = ctx.pipe[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2180)local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2181)local tmp[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2182)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2183)tmp = val:match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2184)if tmp == '0' or tmp:find'^%-?[1-9]%d*$' ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2185)tbl[key] = opts[tonumber(tmp)][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2186)else tbl[key] = opts[tmp] end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2187)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2188)return library.list_values(ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2189)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2190)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2191)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2192)-- Syntax: #invoke:params|unique_coins|[first coin = value 1]|[second coin =[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2193)-- value 2]|[...]|[last coin = value N][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2194)library.unique_coins = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2195)local opts = ctx.pipe[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2196)local tbl = ctx.params[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2197)local tmp[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2198)for key, val in pairs(tbl) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2199)tmp = val:match'^%s*(.-)%s*$'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2200)if tmp == '0' or tmp:find'^%-?[1-9]%d*$' ~= nil then[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2201)tmp = tonumber(tmp)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2202)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2203)tbl[key] = opts[tmp][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2204)opts[tmp] = nil[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2205)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2206)return library.list_values(ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2207)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2208)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2209)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2210)-- Syntax: #invoke:params|for_each|wikitext[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2211)library.for_each = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2212)-- NOTE: `ctx.pipe` might be the original metatable![](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2213)local txt = ctx.pipe[1] or ''[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2214)local pps = ctx.itersep or ''[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2215)local ret = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2216)local nss = 0[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2217)local skel, cnv, n_parts = parse_placeholder_string(txt)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2218)flush_params([](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2219)ctx,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2220)function (key, val)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2221)for idx = 2, n_parts, 2 do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2222)if skel[idx] then cnv[idx] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2223)else cnv[idx] = tostring(key) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2224)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2225)ret[nss + 1] = pps[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2226)ret[nss + 2] = table.concat(cnv)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2227)nss = nss + 2[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2228)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2229))[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2230)finalize_and_return_concatenated_list(ctx, ret, nss, 2)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2231)return false[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2232)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2233)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2234)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2235)-- Syntax: #invoke:params|call_for_each|template name|[append 1]|[append 2][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2236)-- |[...]|[append n]|[named param 1=value 1]|[...]|[named param[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2237)-- n=value n]|[...][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2238)library.call_for_each = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2239)local opts = ctx.pipe[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2240)local tname[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2241)if opts[1] ~= nil then tname = opts[1]:match'^%s*(.*%S)' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2242)if tname == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2243)', ‘call_for_each’: No template name was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2244)local model = { title = tname, args = opts }[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2245)local ccs = ctx.itersep or ''[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2246)local ret = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2247)local nss = 0[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2248)table.insert(opts, 1, true)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2249)flush_params([](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2250)ctx,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2251)function (key, val)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2252)opts[1] = key[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2253)opts[2] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2254)ret[nss + 1] = ccs[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2255)ret[nss + 2] = ctx.frame:expandTemplate(model)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2256)nss = nss + 2[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2257)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2258))[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2259)finalize_and_return_concatenated_list(ctx, ret, nss, 2)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2260)return false[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2261)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2262)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2263)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2264)-- Syntax: #invoke:params|invoke_for_each|module name|module function|[append[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2265)-- 1]|[append 2]|[...]|[append n]|[named param 1=value 1]|[...][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2266)-- |[named param n=value n]|[...][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2267)library.invoke_for_each = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2268)local opts = ctx.pipe[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2269)local mname[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2270)local fname[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2271)if opts[1] ~= nil then mname = opts[1]:match'^%s*(.*%S)' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2272)if mname == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2273)', ‘invoke_for_each’: No module name was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2274)if opts[2] ~= nil then fname = opts[2]:match'^%s*(.*%S)' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2275)if fname == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2276)', ‘invoke_for_each’: No function name was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2277)local model = { title = 'Module:' .. mname, args = opts }[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2278)local mfunc = require(model.title)[fname][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2279)local ccs = ctx.itersep or ''[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2280)local ret = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2281)local nss = 0[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2282)flush_params([](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2283)ctx,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2284)function (key, val)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2285)opts[1] = key[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2286)opts[2] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2287)ret[nss + 1] = ccs[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2288)ret[nss + 2] = mfunc(ctx.frame:newChild(model))[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2289)nss = nss + 2[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2290)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2291))[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2292)finalize_and_return_concatenated_list(ctx, ret, nss, 2)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2293)return false[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2294)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2295)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2296)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2297)-- Syntax: #invoke:params|magic_for_each|parser function|[append 1]|[append 2][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2298)-- |[...]|[append n]|[named param 1=value 1]|[...]|[named param[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2299)-- n=value n]|[...][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2300)library.magic_for_each = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2301)local opts = ctx.pipe[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2302)local magic[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2303)if opts[1] ~= nil then magic = opts[1]:match'^%s*(.*%S)' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2304)if magic == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2305)', ‘magic_for_each’: No parser function was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2306)local ccs = ctx.itersep or ''[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2307)local ret = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2308)local nss = 0[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2309)table.insert(opts, 1, true)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2310)flush_params([](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2311)ctx,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2312)function (key, val)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2313)opts[1] = key[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2314)opts[2] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2315)ret[nss + 1] = ccs[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2316)ret[nss + 2] = ctx.frame:callParserFunction(magic, opts)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2317)nss = nss + 2[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2318)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2319))[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2320)finalize_and_return_concatenated_list(ctx, ret, nss, 2)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2321)return false[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2322)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2323)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2324)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2325)-- Syntax: #invoke:params|call_for_each_value|template name|[append 1]|[append[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2326)-- 2]|[...]|[append n]|[named param 1=value 1]|[...]|[named param[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2327)-- n=value n]|[...][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2328)library.call_for_each_value = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2329)local opts = ctx.pipe[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2330)local tname[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2331)if opts[1] ~= nil then tname = opts[1]:match'^%s*(.*%S)' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2332)if tname == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2333)', ‘call_for_each_value’: No template name was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2334)local model = { title = tname, args = opts }[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2335)local ccs = ctx.itersep or ''[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2336)local ret = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2337)local nss = 0[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2338)flush_params([](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2339)ctx,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2340)function (key, val)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2341)opts[1] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2342)ret[nss + 1] = ccs[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2343)ret[nss + 2] = ctx.frame:expandTemplate(model)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2344)nss = nss + 2[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2345)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2346))[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2347)finalize_and_return_concatenated_list(ctx, ret, nss, 2)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2348)return false[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2349)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2350)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2351)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2352)-- Syntax: #invoke:params|invoke_for_each_value|module name|[append 1]|[append[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2353)-- 2]|[...]|[append n]|[named param 1=value 1]|[...]|[named param[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2354)-- n=value n]|[...][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2355)library.invoke_for_each_value = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2356)local opts = ctx.pipe[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2357)local mname[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2358)local fname[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2359)if opts[1] ~= nil then mname = opts[1]:match'^%s*(.*%S)' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2360)if mname == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2361)', ‘invoke_for_each_value’: No module name was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2362)if opts[2] ~= nil then fname = opts[2]:match'^%s*(.*%S)' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2363)if fname == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2364)', ‘invoke_for_each_value’: No function name was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2365)local model = { title = 'Module:' .. mname, args = opts }[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2366)local mfunc = require(model.title)[fname][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2367)local ccs = ctx.itersep or ''[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2368)local ret = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2369)local nss = 0[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2370)remove_numeric_keys(opts, 1, 1)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2371)flush_params([](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2372)ctx,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2373)function (key, val)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2374)opts[1] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2375)ret[nss + 1] = ccs[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2376)ret[nss + 2] = mfunc(ctx.frame:newChild(model))[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2377)nss = nss + 2[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2378)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2379))[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2380)finalize_and_return_concatenated_list(ctx, ret, nss, 2)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2381)return false[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2382)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2383)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2384)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2385)-- Syntax: #invoke:params|magic_for_each_value|parser function|[append 1][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2386)-- |[append 2]|[...]|[append n]|[named param 1=value 1]|[...]|[named[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2387)-- param n=value n]|[...][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2388)library.magic_for_each_value = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2389)local opts = ctx.pipe[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2390)local magic[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2391)if opts[1] ~= nil then magic = opts[1]:match'^%s*(.*%S)' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2392)if magic == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2393)', ‘magic_for_each_value’: No parser function was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2394)local ccs = ctx.itersep or ''[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2395)local ret = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2396)local nss = 0[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2397)flush_params([](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2398)ctx,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2399)function (key, val)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2400)opts[1] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2401)ret[nss + 1] = ccs[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2402)ret[nss + 2] = ctx.frame:callParserFunction(magic, opts)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2403)nss = nss + 2[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2404)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2405))[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2406)finalize_and_return_concatenated_list(ctx, ret, nss, 2)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2407)return false[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2408)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2409)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2410)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2411)-- Syntax: #invoke:params|call_for_each_group|template name|[append 1]|[append[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2412)-- 2]|[...]|[append n]|[named param 1=value 1]|[...]|[named param[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2413)-- n=value n]|[...][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2414)library.call_for_each_group = function (ctx)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2415)-- NOTE: `ctx.pipe` and `ctx.params` might be the original metatables![](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2416)local opts = ctx.pipe[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2417)local tmp[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2418)if opts[1] ~= nil then tmp = opts[1]:match'^%s*(.*%S)' end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2419)if tmp == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2420)', ‘call_for_each_group’: No template name was provided', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2421)local model = { title = tmp }[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2422)local ccs = ctx.itersep or ''[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2423)local nss = 0[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2424)local ret = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2425)opts = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2426)for key, val in pairs(ctx.pipe) do[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2427)if type(key) == 'number' then opts[key - 1] = val[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2428)else opts[key] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2429)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2430)ctx.pipe = opts[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2431)ctx.params = make_groups(ctx.params)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2432)flush_params([](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2433)ctx,[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2434)function (gid, group)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2435)for key, val in pairs(opts) do group[key] = val end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2436)group[0] = gid[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2437)model.args = group[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2438)ret[nss + 1] = ccs[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2439)ret[nss + 2] = ctx.frame:expandTemplate(model)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2440)nss = nss + 2[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2441)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2442))[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2443)finalize_and_return_concatenated_list(ctx, ret, nss, 2)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2444)return false[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2445)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2446)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2447)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2448)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2449)--- ---[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2450)--- PUBLIC ENVIRONMENT ---[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2451)--- ________________________________ ---[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2452)--- ---[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2453)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2454)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2455)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2456)--[[ First-position-only modifiers ]]--[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2457)---------------------------------------[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2458)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2459)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2460)-- Syntax: #invoke:params|new|pipe to[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2461)static_iface.new = function (frame)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2462)local ctx = context_new(frame:getParent())[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2463)ctx.pipe = copy_or_ref_table(frame.args, false)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2464)ctx.params = {}[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2465)main_loop(ctx, context_iterate(ctx, 1))[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2466)return ctx.text[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2467)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2468)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2469)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2470)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2471)--[[ First-position-only functions ]]--[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2472)---------------------------------------[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2473)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2474)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2475)-- Syntax: #invoke:params|self[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2476)static_iface.self = function (frame)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2477)return frame:getParent():getTitle()[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2478)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2479)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2480)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2481)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2482)--[[ Public metatable of functions ]]--[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2483)---------------------------------------[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2484)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2485)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2486)return setmetatable({}, {[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2487)__index = function (_, query)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2488)local fname = query:match'^%s*(.*%S)'[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2489)if fname == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2490)': You must specify a function to call', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2491)local func = static_iface[fname][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2492)if func ~= nil then return func end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2493)func = library[fname][](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2494)if func == nil then error(modulename ..[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2495)': The function ‘' .. fname .. '’ does not exist', 0) end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2496)return function (frame)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2497)local ctx = context_new(frame:getParent())[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2498)ctx.pipe = copy_or_ref_table(frame.args, refpipe[fname])[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2499)ctx.params = copy_or_ref_table(ctx.oparams, refparams[fname])[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2500)main_loop(ctx, func)[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2501)return ctx.text[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2502)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2503)end[](https://freemwiki.com/index.php?mobileaction=toggle_view_mobile&title=Module%3AParams#L-2504)}) Retrieved from "[https://freemwiki.com/index.php?title=Module:Params&oldid=580108](https://freemwiki.com/index.php?title=Module:Params&oldid=580108)" [Last edited on 21 October 2025, at 06:18](https://freemwiki.com/index.php?title=Module:Params&action=history) #### Languages This page is not available in other languages. freem * This page was last edited on 21 October 2025, at 06:18. * Content is available under [Creative Commons Attribution-ShareAlike 4.0](https://creativecommons.org/licenses/by-sa/4.0/) unless otherwise noted. FreemWiki is operated by **FINGERPOWER DIGITAL TECHNOLOGY LLC** (Colorado, Entity ID 20221978727). * [Privacy Policy](https://freemwiki.com/wiki/Privacy_Policy) * [About](https://freemwiki.com/wiki/About) * [Terms of Service](https://freemwiki.com/wiki/Terms_of_Service) * [Desktop](https://freemwiki.com/index.php?title=Module:Params&mobileaction=toggle_view_desktop)