Module:Nomenclature: Difference between revisions

From Zelda Wiki, the Zelda encyclopedia
Jump to navigation Jump to search
((via Mediawiker ST3))
((via Mediawiker ST3))
Line 52: Line 52:
end
end


function p.CreateRows(displayTable, term)
function p.CreateRows(output, term)
local resultTranslations = translation.fetchTranslations(term)
local cargoData = translation.fetchTranslations(term)
p.SortTranslations(resultTranslations)
p.SortTranslations(cargoData)
local tr
for key, value in pairs(cargoData) do
local td
p.ProcessRow(output, cargoData, value)
for key, value in pairs(resultTranslations) do
p.ProcessRow(displayTable, resultTranslations, value)
end
end
return displayTable
return output
end
end


function p.ProcessRow(displayTable, resultTranslations, value)
function p.ProcessRow(output, cargoData, value)
local keysToRemove = {}
local keysToRemove = {}
local games = {}
local games = {}
Line 76: Line 74:
tr:node(td)
tr:node(td)
td = mw.html.create("td"):done()
td = mw.html.create("td"):done()
for key2, value2 in pairs(resultTranslations) do
for key2, value2 in pairs(cargoData) do
if value["language"] == value2["language"] and value["translation"] == value2["translation"] then
if value["language"] == value2["language"] and value["translation"] == value2["translation"] then
table.insert(games, value2["game"])
table.insert(games, value2["game"])
Line 85: Line 83:
td:wikitext(value["translation"] .. " " .. expgame.Display(games))
td:wikitext(value["translation"] .. " " .. expgame.Display(games))
games = {}
games = {}
for key2, value2 in pairs(resultTranslations) do
for key2, value2 in pairs(cargoData) do
if value["language"] == value2["language"] and value["translation"] ~= value2["translation"] then
if value["language"] == value2["language"] and value["translation"] ~= value2["translation"] then
for key3, value3 in pairs(resultTranslations) do
for key3, value3 in pairs(cargoData) do
if value2["language"] == value3["language"] and value2["translation"] == value3["translation"] then
if value2["language"] == value3["language"] and value2["translation"] == value3["translation"] then
table.insert(games, value3["game"])
table.insert(games, value3["game"])
Line 114: Line 112:
end
end
tr:node(td)
tr:node(td)
displayTable:node(tr)
output:node(tr)
for key2, value2 in pairs(keysToRemove) do
for key2, value2 in pairs(keysToRemove) do
resultTranslations[value2] = nil
cargoData[value2] = nil
end
end
end
end

Revision as of 12:44, 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, value in pairs(cargoData) do
		p.ProcessRow(output, cargoData, value)
	end
	
	return output
end

function p.ProcessRow(output, cargoData, value)
	local keysToRemove = {}
	local games = {}
	local meanings = {}
	local tr = mw.html.create("tr"):done()
	local td = mw.html.create("td")
		:wikitext(utilsLanguage.CodeToFlag(value["language"])):done()
	tr:node(td)
	td = mw.html.create("td")
		:wikitext(utilsLanguage.CodeToLanguage(value["language"])):done()
	tr:node(td)
	td = mw.html.create("td"):done()
	for key2, value2 in pairs(cargoData) do
		if value["language"] == value2["language"] and value["translation"] == value2["translation"] then
			table.insert(games, value2["game"])
			table.insert(keysToRemove, key2)
		end
	end
	table.insert(meanings, value["meaning"])
	td:wikitext(value["translation"] .. " " .. expgame.Display(games))
	games = {}
	for key2, value2 in pairs(cargoData) do
		if value["language"] == value2["language"] and value["translation"] ~= value2["translation"] then
			for key3, value3 in pairs(cargoData) do
				if value2["language"] == value3["language"] and value2["translation"] == value3["translation"] then
					table.insert(games, value3["game"])
					table.insert(keysToRemove, key3)
				end
			end
			table.insert(meanings, value2["meaning"])
			td:wikitext("<br>" .. value2["translation"] .. " " .. expgame.Display(games))
		end
	end
	
	tr:node(td)
	td = mw.html.create("td"):done()
	local first = true
	for key2, value2 in pairs(meanings) do
		if not utilsCode.IsEmpty(value2) then
			if first then
				td:wikitext(value2)
				first = false
			else
				td:wikitext("<br>" .. value2)
			end
		else
			td:wikitext("<br>—")
		end
	end
	tr:node(td)
	output:node(tr)
	for key2, value2 in pairs(keysToRemove) do
		cargoData[value2] = nil
	end
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