Zelda Wiki

Want to contribute to this wiki?
Sign up for an account, and get started!

Come join the Zelda Wiki community Discord server!

READ MORE

Zelda Wiki
((via Mediawiker ST3))
((via Mediawiker ST3))
Line 108: Line 108:
 
end
 
end
 
tr:node(td)
 
tr:node(td)
output:node(tr)
 
 
for k, v in pairs(keysToRemove) do
 
for k, v in pairs(keysToRemove) do
 
cargoData[v] = nil
 
cargoData[v] = nil

Revision as of 12:51, 2 May 2019

This is the main module for Template:Nomenclature.

Lua error in package.lua at line 80: module 'Module:UtilsCode' 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.PrintFlag(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 pairs(cargoData) do
		if row["language"] == row2["language"] and row["translation"] ~= row2["translation"] then
			for key3, row3 in pairs(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.PrintFlag(tr, row)
	tr:tag('td')
		:wikitext(utilsLanguage.CodeToFlag(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