Module:Nomenclature: Difference between revisions

From Zelda Wiki, the Zelda encyclopedia
Jump to navigation Jump to search
No edit summary
No edit summary
Line 53: Line 53:
function p.CreateRows(translationTable, term)
function p.CreateRows(translationTable, term)
local resultTranslations = translation.fetchTranslations(term)
local resultTranslations = translation.fetchTranslations(term)
--local resultTranslationsTrimmed = p.TrimTranslations(resultTranslations)
local resultTranslationsTrimmed = resultTranslations
local tr
local tr
local td
local td
for key, value in pairs(resultTranslationsTrimmed) do
for key, value in pairs(resultTranslations) do
if value ~= nil then
if value ~= nil then
local keysToRemove = {}
local keysToRemove = {}
Line 70: Line 68:
tr:node(td)
tr:node(td)
td = mw.html.create("td"):done()
td = mw.html.create("td"):done()
for key2, value2 in pairs(resultTranslationsTrimmed) do
for key2, value2 in pairs(resultTranslations) 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 79: Line 77:
td:wikitext(value["translation"] .. " " .. expgame.Display(games))
td:wikitext(value["translation"] .. " " .. expgame.Display(games))
games = {}
games = {}
for key2, value2 in pairs(resultTranslationsTrimmed) do
for key2, value2 in pairs(resultTranslations) 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(resultTranslationsTrimmed) do
for key3, value3 in pairs(resultTranslations) 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 110: Line 108:
translationTable:node(tr)
translationTable:node(tr)
for key2, value2 in pairs(keysToRemove) do
for key2, value2 in pairs(keysToRemove) do
resultTranslationsTrimmed[value2] = nil
resultTranslations[value2] = nil
end
end
end
end
Line 116: Line 114:
return translationTable
return translationTable
end
--Removes entries with same language and translation (different games)
function p.TrimTranslations(translations)
for key, value in pairs(translations) do
for key2, value2 in pairs(translations) do
if value["language"] == value2["language"] and value["translation"] == value2["translation"] and value["game"] ~= value2["game"] then
table.remove(translations, key2)
end
end
end
return translations
end
end



Revision as of 07:06, 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')

--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(translationTable, term)
	local resultTranslations = translation.fetchTranslations(term)
	local tr
	local td
	for key, value in pairs(resultTranslations) do
		if value ~= nil then
			local keysToRemove = {}
			local games = {}
			local meanings = {}
			tr = mw.html.create("tr"):done()
			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(resultTranslations) 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(resultTranslations) do
				if value["language"] == value2["language"] and value["translation"] ~= value2["translation"] then
					for key3, value3 in pairs(resultTranslations) 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)
			translationTable:node(tr)
			for key2, value2 in pairs(keysToRemove) do
				resultTranslations[value2] = nil
			end
		end
	end
	
	return translationTable
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