Résultat de l’API de MediaWiki

Voici la représentation HTML du format JSON. HTML est bien pour le débogage, mais inapproprié pour être utilisé dans une application.

Spécifiez le paramètre format pour modifier le format de sortie. Pour voir la représentation non HTML du format JSON, mettez format=json.

Voir la documentation complète, ou l’ aide de l’API pour plus d’information.

{
    "compare": {
        "fromid": 1,
        "fromrevid": 1,
        "fromns": 0,
        "fromtitle": "Accueil",
        "toid": 2,
        "torevid": 2,
        "tons": 828,
        "totitle": "Module:Arguments",
        "*": "<tr><td colspan=\"2\" class=\"diff-lineno\" id=\"mw-diff-left-l1\" >Ligne 1 :</td>\n<td colspan=\"2\" class=\"diff-lineno\">Ligne 1 :</td></tr>\n<tr><td class='diff-marker'>\u2212</td><td class='diff-deletedline'><div><del class=\"diffchange diffchange-inline\">&lt;strong&gt;MediaWiki a \u00e9t\u00e9 install\u00e9</del>.<del class=\"diffchange diffchange-inline\">&lt;/strong&gt;</del></div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">-- This module provides easy processing of arguments passed to Scribunto from</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">-- #invoke. It is intended for use by other Lua modules, and should not be</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">-- called from #invoke directly</ins>.</div></td></tr>\n<tr><td class='diff-marker'>\u00a0</td><td class='diff-context'></td><td class='diff-marker'>\u00a0</td><td class='diff-context'></td></tr>\n<tr><td class='diff-marker'>\u2212</td><td class='diff-deletedline'><div><del class=\"diffchange diffchange-inline\">Consultez le [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Guide de l\u2019utilisateur] pour plus d\u2019informations sur l\u2019utilisation de ce logiciel de wiki</del>.</div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">local libraryUtil = require('libraryUtil')</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">local checkType = libraryUtil</ins>.<ins class=\"diffchange diffchange-inline\">checkType</ins></div></td></tr>\n<tr><td class='diff-marker'>\u00a0</td><td class='diff-context'></td><td class='diff-marker'>\u00a0</td><td class='diff-context'></td></tr>\n<tr><td class='diff-marker'>\u2212</td><td class='diff-deletedline'><div>== <del class=\"diffchange diffchange-inline\">Pour d\u00e9marrer </del>==</div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">local arguments </ins>= <ins class=\"diffchange diffchange-inline\">{}</ins></div></td></tr>\n<tr><td class='diff-marker'>\u2212</td><td class='diff-deletedline'><div>* [<del class=\"diffchange diffchange-inline\">https</del>:<del class=\"diffchange diffchange-inline\">//www</del>.<del class=\"diffchange diffchange-inline\">mediawiki</del>.<del class=\"diffchange diffchange-inline\">org/wiki/Special</del>:<del class=\"diffchange diffchange-inline\">MyLanguage/Manual</del>:<del class=\"diffchange diffchange-inline\">Configuration_settings Liste des param\u00e8tres de configuration]</del></div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div>\u00a0</div></td></tr>\n<tr><td class='diff-marker'>\u2212</td><td class='diff-deletedline'><div><del class=\"diffchange diffchange-inline\">* [https</del>:/<del class=\"diffchange diffchange-inline\">/www</del>.<del class=\"diffchange diffchange-inline\">mediawiki</del>.<del class=\"diffchange diffchange-inline\">org/wiki/Special</del>:<del class=\"diffchange diffchange-inline\">MyLanguage</del>/<del class=\"diffchange diffchange-inline\">Manual:FAQ/fr Questions courantes sur MediaWiki</del>]</div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">-- Generate four different tidyVal functions, so that we don't have to check the</ins></div></td></tr>\n<tr><td class='diff-marker'>\u2212</td><td class='diff-deletedline'><div><del class=\"diffchange diffchange-inline\">* </del>[<del class=\"diffchange diffchange-inline\">https://lists</del>.<del class=\"diffchange diffchange-inline\">wikimedia</del>.<del class=\"diffchange diffchange-inline\">org/mailman/listinfo/mediawiki</del>-<del class=\"diffchange diffchange-inline\">announce Liste de discussion sur les distributions de MediaWiki</del>]</div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">-- options every time we call it.</ins></div></td></tr>\n<tr><td class='diff-marker'>\u2212</td><td class='diff-deletedline'><div><del class=\"diffchange diffchange-inline\">* </del>[<del class=\"diffchange diffchange-inline\">https://www</del>.<del class=\"diffchange diffchange-inline\">mediawiki</del>.<del class=\"diffchange diffchange-inline\">org/wiki/Special:MyLanguage/Localisation#Translation_resources Adaptez MediaWiki dans votre langue</del>]</div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div>\u00a0</div></td></tr>\n<tr><td class='diff-marker'>\u2212</td><td class='diff-deletedline'><div><del class=\"diffchange diffchange-inline\">* </del>[<del class=\"diffchange diffchange-inline\">https://www</del>.<del class=\"diffchange diffchange-inline\">mediawiki</del>.<del class=\"diffchange diffchange-inline\">org/wiki/Special:MyLanguage/Manual:Combating_spam Apprendre comment lutter contre le pourriel dans votre wiki</del>]</div></td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">local function tidyValDefault(key, val)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tif type(val) == 'string' then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tval </ins>= <ins class=\"diffchange diffchange-inline\">val:match('^%s*(.-)%s*$')</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tif val == '' then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\treturn nil</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\telse</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\treturn val</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\telse</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\treturn val</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">end</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div>\u00a0</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">local function tidyValTrimOnly(key, val)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tif type(val) </ins>== <ins class=\"diffchange diffchange-inline\">'string' then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\treturn val:match('^%s*(.-)%s</ins>*<ins class=\"diffchange diffchange-inline\">$')</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\telse</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\treturn val</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">end</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div>\u00a0</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">local function tidyValRemoveBlanksOnly(key, val)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tif type(val) == 'string' then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tif val:find('%S') then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\treturn val</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\telse</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\treturn nil</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\telse</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\treturn val</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">end</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div>\u00a0</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">local function tidyValNoChange(key, val)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\treturn val</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">end</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div>\u00a0</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">local function matchesTitle(given, title)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tlocal tp = type( given )</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\treturn (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">end</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div>\u00a0</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">local translate_mt = { __index = function(t, k) return k end }</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div>\u00a0</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">function arguments.getArgs(frame, options)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tcheckType('getArgs', 1, frame, 'table', true)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tcheckType('getArgs', 2, options, 'table', true)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tframe = frame or {}</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\toptions = options or {}</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div>\u00a0</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t--</ins>[<ins class=\"diffchange diffchange-inline\">[</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- Set up argument translation.</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t--]]</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\toptions.translate = options.translate or {}</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tif getmetatable(options.translate) == nil then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tsetmetatable(options.translate, translate_mt)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tif options.backtranslate == nil then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\toptions.backtranslate = {}</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tfor k,v in pairs(options.translate) do</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\toptions.backtranslate[v] = k</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tif options.backtranslate and getmetatable(options.backtranslate) == nil then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tsetmetatable(options.backtranslate, {</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t__index = function(t, k)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\tif options.translate[k] ~= k then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t\treturn nil</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\telse</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t\treturn k</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t})</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div>\u00a0</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t--[[</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- Get the argument tables. If we were passed a valid frame object, get the</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- frame arguments (fargs) and the parent frame arguments (pargs), depending</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- on the options set and on the parent frame's availability. If we weren't</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- passed a valid frame object, we are being called from another Lua module</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- or from the debug console, so assume that we were passed a table of args</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- directly, and assign it to a new variable (luaArgs).</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t--]]</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tlocal fargs, pargs, luaArgs</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tif type(frame.args) == 'table' and type(frame.getParent) == 'function' then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tif options.wrappers then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t--[[</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t-- The wrappers option makes Module</ins>:<ins class=\"diffchange diffchange-inline\">Arguments look up arguments in</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t-- either the frame argument table or the parent argument table, but</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t-- not both</ins>. <ins class=\"diffchange diffchange-inline\">This means that users can use either the #invoke syntax</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t-- or a wrapper template without the loss of performance associated</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t-- with looking arguments up in both the frame and the parent frame</ins>.</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t-- Module</ins>:<ins class=\"diffchange diffchange-inline\">Arguments will look up arguments in the parent frame</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t-- if it finds the parent frame's title in options.wrapper;</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t-- otherwise it will look up arguments in the frame object passed</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t-- to getArgs.</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t--]]</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\tlocal parent = frame</ins>:<ins class=\"diffchange diffchange-inline\">getParent()</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\tif not parent then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\tfargs = frame.args</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\telse</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\tlocal title = parent:getTitle()</ins>:<ins class=\"diffchange diffchange-inline\">gsub('</ins>/<ins class=\"diffchange diffchange-inline\">sandbox$', '')</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\tlocal found = false</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\tif matchesTitle(options.wrappers, title) then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t\tfound = true</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\telseif type(options.wrappers) == 'table' then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t\tfor _,v in pairs(options.wrappers) do</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t\t\tif matchesTitle(v, title) then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t\t\t\tfound = true</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t\t\t\tbreak</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div>\u00a0</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t-- We test for false specifically here so that nil (the default) acts like true.</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\tif found or options.frameOnly == false then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t\tpargs = parent.args</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\tif not found or options.parentOnly == false then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t\tfargs = frame.args</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\telse</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t-- options.wrapper isn't set, so check the other options.</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\tif not options.parentOnly then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\tfargs = frame</ins>.<ins class=\"diffchange diffchange-inline\">args</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\tif not options</ins>.<ins class=\"diffchange diffchange-inline\">frameOnly then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\tlocal parent = frame</ins>:<ins class=\"diffchange diffchange-inline\">getParent()</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\tpargs = parent and parent.args or nil</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tif options.parentFirst then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\tfargs, pargs = pargs, fargs</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\telse</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tluaArgs = frame</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div>\u00a0</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- Set the order of precedence of the argument tables. If the variables are</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- nil, nothing will be added to the table, which is how we avoid clashes</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- between the frame</ins>/<ins class=\"diffchange diffchange-inline\">parent args and the Lua args.</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tlocal argTables = {fargs}</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\targTables[#argTables + 1] = pargs</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\targTables[#argTables + 1] = luaArgs</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div>\u00a0</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t--[[</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- Generate the tidyVal function. If it has been specified by the user, we</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- use that; if not, we choose one of four functions depending on the</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- options chosen. This is so that we don't have to call the options table</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- every time the function is called.</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t--]]</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tlocal tidyVal = options.valueFunc</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tif tidyVal then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tif type(tidyVal) ~= 'function' then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\terror(</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t&quot;bad value assigned to option 'valueFunc'&quot;</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t\t.. '(function expected, got '</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t\t.. type(tidyVal)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t\t.. ')',</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t2</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\telseif options.trim ~= false then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tif options.removeBlanks ~= false then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\ttidyVal = tidyValDefault</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\telse</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\ttidyVal = tidyValTrimOnly</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\telse</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tif options.removeBlanks ~= false then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\ttidyVal = tidyValRemoveBlanksOnly</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\telse</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\ttidyVal = tidyValNoChange</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div>\u00a0</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t--[[</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- Set up the args, metaArgs and nilArgs tables. args will be the one</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- accessed from functions, and metaArgs will hold the actual arguments. Nil</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- arguments are memoized in nilArgs, and the metatable connects all of them</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- together.</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t--]]</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tlocal args, metaArgs, nilArgs, metatable = {}, {}, {}, {}</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tsetmetatable(args, metatable)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div>\u00a0</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tlocal function mergeArgs(tables)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t--[[</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t-- Accepts multiple tables as input and merges their keys and values</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t-- into one table. If a value is already present it is not overwritten;</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t-- tables listed earlier have precedence. We are also memoizing nil</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t-- values, which can be overwritten if they are 's' (soft).</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t--]]</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tfor _, t in ipairs(tables) do</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\tfor key, val in pairs(t) do</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\tif metaArgs[key] == nil and nilArgs[key] ~= 'h' then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t\tlocal tidiedVal = tidyVal(key, val)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t\tif tidiedVal == nil then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t\t\tnilArgs[key] = 's'</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t\telse</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t\t\tmetaArgs[key] = tidiedVal</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div>\u00a0</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t--[[</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- Define metatable behaviour. Arguments are memoized in the metaArgs table,</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- and are only fetched from the argument tables once. Fetching arguments</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- from the argument tables is the most resource-intensive step in this</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- module, so we try and avoid it where possible. For this reason, nil</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- arguments are also memoized, in the nilArgs table. Also, we keep a record</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- in the metatable of when pairs and ipairs have been called, so we do not</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- run pairs and ipairs on the argument tables more than once. We also do</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- not run ipairs on fargs and pargs if pairs has already been run, as all</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t-- the arguments will already have been copied over.</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t--]</ins>]</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div>\u00a0</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tmetatable.__index = function (t, key)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t--[</ins>[</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t-- Fetches an argument when the args table is indexed. First we check</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t-- to see if the value is memoized, and if not we try and fetch it from</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t-- the argument tables. When we check memoization, we need to check</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t-- metaArgs before nilArgs, as both can be non-nil at the same time.</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t-- If the argument is not present in metaArgs, we also check whether</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t-- pairs has been run yet. If pairs has already been run, we return nil.</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t-- This is because all the arguments will have already been copied into</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t-- metaArgs by the mergeArgs function, meaning that any other arguments</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t-- must be nil.</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t--]]</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tif type(key) == 'string' then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\tkey = options</ins>.<ins class=\"diffchange diffchange-inline\">translate[key]</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tlocal val = metaArgs[key]</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tif val ~= nil then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\treturn val</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\telseif metatable</ins>.<ins class=\"diffchange diffchange-inline\">donePairs or nilArgs[key] then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\treturn nil</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tfor _, argTable in ipairs(argTables) do</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\tlocal argTableVal = tidyVal(key, argTable[key])</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\tif argTableVal ~= nil then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\tmetaArgs[key] = argTableVal</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\treturn argTableVal</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tnilArgs[key] = 'h'</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\treturn nil</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div>\u00a0</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tmetatable.__newindex = function (t, key, val)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t-- This function is called when a module tries to add a new value to the</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t-</ins>- <ins class=\"diffchange diffchange-inline\">args table, or tries to change an existing value.</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tif type(key) == 'string' then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\tkey = options.translate[key</ins>]</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tif options.readOnly then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\terror(</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t'could not write to argument table key &quot;'</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t\t.. tostring(key)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t\t.. '&quot;; the table is read-only',</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t2</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\telseif options.noOverwrite and args</ins>[<ins class=\"diffchange diffchange-inline\">key] ~= nil then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\terror(</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t'could not write to argument table key &quot;'</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t\t.. tostring(key)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t\t</ins>.. <ins class=\"diffchange diffchange-inline\">'&quot;; overwriting existing arguments is not permitted',</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t2</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\telseif val == nil then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t--[[</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t-- If the argument is to be overwritten with nil, we need to erase</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t-- the value in metaArgs, so that __index, __pairs and __ipairs do</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t-- not use a previous existing value, if present; and we also need</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t-- to memoize the nil in nilArgs, so that the value isn't looked</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t-- up in the argument tables if it is accessed again.</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t--]]</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\tmetaArgs[key] = nil</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\tnilArgs[key] = 'h'</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\telse</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\tmetaArgs[key</ins>] <ins class=\"diffchange diffchange-inline\">= val</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div>\u00a0</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tlocal function translatenext(invariant)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tlocal k, v = next(invariant.t, invariant.k)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tinvariant.k = k</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tif k == nil then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\treturn nil</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\telseif type(k) ~= 'string' or not options.backtranslate then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\treturn k, v</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\telse</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\tlocal backtranslate = options.backtranslate</ins>[<ins class=\"diffchange diffchange-inline\">k]</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\tif backtranslate == nil then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\t-- Skip this one. This is a tail call, so this won't cause stack overflow</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\treturn translatenext(invariant)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\telse</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\t\treturn backtranslate, v</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div>\u00a0</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tmetatable.__pairs = function ()</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t-- Called when pairs is run on the args table.</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tif not metatable</ins>.<ins class=\"diffchange diffchange-inline\">donePairs then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\tmergeArgs(argTables)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\tmetatable</ins>.<ins class=\"diffchange diffchange-inline\">donePairs = true</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\treturn translatenext, { t = metaArgs }</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div>\u00a0</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tlocal function inext(t, i)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t-- This uses our __index metamethod</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tlocal v = t[i + 1</ins>]</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tif v ~= nil then</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t\treturn i + 1, v</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div>\u00a0</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tmetatable.__ipairs = function (t)</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\t-- Called when ipairs is run on the args table.</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\t\treturn inext, t, 0</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\tend</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div>\u00a0</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">\treturn args</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">end</ins></div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div>\u00a0</div></td></tr>\n<tr><td colspan=\"2\">\u00a0</td><td class='diff-marker'>+</td><td class='diff-addedline'><div><ins class=\"diffchange diffchange-inline\">return arguments</ins></div></td></tr>\n"
    }
}