Module:Term

local p = {} local cargo = mw.ext.cargo local utilsCode = require("Module:UtilsCode") local utilsGame = require("Module:UtilsGame") local utilsText = require('Module:UtilsText') local utilsTable = require('Module:UtilsTable')

function p.Main( frame ) local args = frame:getParent.args local returnedValue = "" local term = p.fetchRow(args[1], args[2]) if utilsCode.IsEmpty(term) then return " INVALID OR MISSING TERM " else if args[3] == "link" then local gameSub = utilsGame.AbbToBaseGame(args[1], true) returnedValue = returnedValue .. ""		else			returnedValue = returnedValue .. " "		end		if not utilsCode.IsEmpty(args["display"]) then			returnedValue = returnedValue .. args["display"]		elseif args[4] == "plural" then			returnedValue = returnedValue .. term["plural"]		else			returnedValue = returnedValue .. term["term"]		end		if args[3] == "link" then			returnedValue = returnedValue .. "" else returnedValue = returnedValue .. " "		end end return returnedValue end

-- Returns raw term function p.fetchTerm(game, page) return p.fetchRow(game, page)["term"] end

function p._fetchTerm(frame) local args = frame.args return p.fetchTerm(args[1], args[2]) end

-- Returns raw plural function p.fetchPlural(game, page) return p.fetchRow(game, page)["plural"] end

-- Returns the table row of the specified game for the specified page. -- Returns the entry for "Series" if not found. function p.fetchRow(game, page) tables = 'Terminologies' fields = 'games, term, plural' local queryArgs = { where = '_pageName = "' .. page .. '"' }   local result = cargo.query( tables, fields, queryArgs ) --Looks for the game for _, row in pairs(result) do		local games = utilsText.split(row.games) if utilsTable.keyOf(games, game) then return row end end --Else, looks for "Series" for _, row in pairs(result) do		local games = utilsText.split(row.games) if utilsTable.keyOf(games, "Series") then return row end end return nil end

return p