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.args return p.Main(args["game"], args["term"], args["link"], args["plural"], args["display"], args["section"]) end

function p.Main(game, term, link, plural, display, section) local returnedValue = "" local fetchedTerm = p.fetchRow(game, term) if utilsCode.IsEmpty(fetchedTerm) then local displayedTerm = term if not utilsCode.IsEmpty(display) then displayedTerm = display end local linkedTerm = term if not utilsCode.IsEmpty(section) then linkedTerm = linkedTerm .. "#" .. section end return " " .. displayedTerm .. " " else if link == "link" then local gameSub = utilsGame.AbbToBaseGame(game, true) returnedValue = returnedValue .. ""		else			returnedValue = returnedValue .. " "		end		if not utilsCode.IsEmpty(display) then			returnedValue = returnedValue .. display		elseif plural == "plural" then			returnedValue = returnedValue .. fetchedTerm["plural"]		else			returnedValue = returnedValue .. fetchedTerm["term"]		end		if link == "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["game"], args["term"]) end

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

function p._fetchPlural(frame) local args = frame.args return p.fetchPlural(args["game"], args["term"]) 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) local tables = 'Terminologies' local fields = 'games, term, plural' local queryArgs = { where = "_pageName = '" .. string.gsub(string.gsub(page, "&#39;", ""), "'", "") .. "'"   }    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