Module:Term

From Zelda Wiki, the Zelda encyclopedia
Revision as of 21:46, 14 February 2020 by MannedTooth (talk | contribs) (seems to be fixed)
Jump to: navigation, search

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


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 "<span class='explain facelift-term-invalid' title='Invalid or missing term'>[[" .. term .. "|" .. displayedTerm .. "]]</span>[[Category:Pages with Invalid or Missing Terms]][[Category:" .. utilsGame.AbbToGame(game) .. " Pages with Invalid or Missing Terms]]"
	else
		if link == "link" then
			local gameSub = utilsGame.AbbToBaseGame(game, true)
			returnedValue = returnedValue .. "[[" .. term
			if not utilsCode.IsEmpty(section) then
				returnedValue = returnedValue .. "#" .. section
			elseif (gameSub ~= "Unknown" and game ~= "Series") then
				returnedValue = returnedValue .. "#" .. gameSub
			end
			returnedValue = returnedValue .. "|"
		else
			returnedValue = returnedValue .. "<span class='term'>"
		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 .. "</span>"
		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(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