Module:Nomenclature: Difference between revisions

From Zelda Wiki, the Zelda encyclopedia
Jump to navigation Jump to search
((via Mediawiker ST3))
((via Mediawiker ST3))
Line 117: Line 117:
:wikitext(utilsLanguage.CodeToFlag(row.language))
:wikitext(utilsLanguage.CodeToFlag(row.language))
tr:tag('td')
tr:tag('td')
:wikitext(p.langCodeToFullName(row.language))
:wikitext(utilsLanguage.langCodeToFullName(row.language))
end
end

Revision as of 15:46, 2 May 2019

This is the main module for Template:Nomenclature.

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


local p = {}
local cargo = mw.ext.cargo
local translation = require('Module:Translation')
local expgame = require('Module:Exp Game')
local utilsCode = require('Module:UtilsCode')
local utilsLanguage = require('Module:UtilsLanguage')
local utilsTable = require('Module:UtilsTable')

--Create an empty table with headers
function p.CreateTable()
	--Table structure
	local resultTable = mw.html.create("table")
		:addClass("wikitable")
		:css{
			["margin"] = "1em",
			["font-size"] = "95%",
		}:done()
	
	--Global header
	local headerRow = mw.html.create("tr"):done()
	local headerContent = mw.html.create("th")
		:wikitext("[[File:TMC Forest Minish Artwork.png|20px]] Names in Other Regions [[File:TMC Jabber Nut Sprite.png]]")
		:attr("colspan", "4")
		:css{
			["font-size"] = "110%",
		}:done()
	
	headerRow:node(headerContent)
	resultTable:node(headerRow)
	
	--Individual headers
	--Language
	headerRow = mw.html.create("tr"):done()
	headerContent = mw.html.create("th")
		:wikitext("Language")
		:attr("colspan", "2"):done()
	headerRow:node(headerContent)
	
	--Name
	headerContent = mw.html.create("th")
		:wikitext("Name"):done()
	headerRow:node(headerContent)
	
	--Meaning
	headerContent = mw.html.create("th")
		:wikitext("Meaning"):done()
	headerRow:node(headerContent)
	
	resultTable:node(headerRow)
	
	return resultTable
end

function p.CreateRows(output, term)
	local cargoData = translation.fetchTranslations(term)
	p.SortTranslations(cargoData)
	for key, row in pairs(cargoData) do
		p.ProcessRow(output, cargoData, row)
	end
	
	return output
end

function p.ProcessRow(output, cargoData, row)
	local keysToRemove = {}
	local games = {}
	local meanings = {}
	local tr = output:tag('tr')
	local td
	p.PrintFlagAndLanguage(tr, row)
	td = mw.html.create("td"):done()
	for key2, row2 in pairs(cargoData) do
		if row["language"] == row2["language"] and row["translation"] == row2["translation"] then
			table.insert(games, row2["game"])
			table.insert(keysToRemove, key2)
		end
	end
	table.insert(meanings, row["meaning"])
	td:wikitext(row["translation"] .. " " .. expgame.Display(games))
	games = {}
	for key2, row2 in ipairs(cargoData) do
		if row["language"] == row2["language"] and row["translation"] ~= row2["translation"] then
			for key3, row3 in ipairs(cargoData) do
				if row2["language"] == row3["language"] and row2["translation"] == row3["translation"] then
					table.insert(games, row3["game"])
					table.insert(keysToRemove, key3)
				end
			end
			table.insert(meanings, row2["meaning"])
			td:wikitext("<br>" .. row2["translation"] .. " " .. expgame.Display(games))
		end
	end
	tr:node(td)
	
	td = mw.html.create("td"):done()
	local first = true
	for key2, row2 in pairs(meanings) do
		if not utilsCode.IsEmpty(row2) then
			if first then
				td:wikitext(row2)
				first = false
			else
				td:wikitext("<br>" .. row2)
			end
		else
			td:wikitext("<br>—")
		end
	end
	tr:node(td)
	for k, v in pairs(keysToRemove) do
		cargoData[v] = nil
	end
end

function p.PrintFlagAndLanguage(tr, row)
	tr:tag('td')
		:wikitext(utilsLanguage.CodeToFlag(row.language))
	tr:tag('td')
		:wikitext(utilsLanguage.langCodeToFullName(row.language))
end
	

function p.SortTranslations(translations)
	local lookup = utilsTable.hash(utilsLanguage.GetCodeSortOrder())
	table.sort(translations, function (a,b)
			return (lookup[a.language] or 0) < (lookup[b.language] or 0)
		end
	)
end

function p.Main( frame )
	local args = frame:getParent().args
	local resultTable = p.CreateTable()
	local resultTable = p.CreateRows(resultTable, "Dynalfos")
	return resultTable
end

return p