Modul:Magyaros

A Wikipédiából, a szabad enciklopédiából

Magyaros[mi ez?] • [dokumentáció: mutat, szerkeszt] • [tesztek: létrehozás]

Ez a {{magyaros}}(?) sablon működéséhez szükséges modul. Az adatokat a Modul:Magyaros/lista lapon tároljuk, megjegyzésben szerepel a formátum.

Függvényei[szerkesztés]

main
Fő függvény, a sablon hívja meg. Egyszerre tetszőleges számú nyelvet tud kezelni.
mind
Az összes ismert nyelv felsorolása, itt jelenik meg:
local p = {}
local getArgs = require('Modul:Arguments').getArgs
local az = require('Modul:Nyelvtani modul').az
local nyelvek = mw.loadData('Modul:Magyaros/lista')

local function nyelv(nyelvtable)
	if type(nyelvtable) ~= 'table' then
		nyelvtable = {nyelvtable, mw.ustring.upper(mw.ustring.format(nyelvek[0][2], nyelvtable))}
	end
	if nyelvtable.spec then -- hettitát külön kezeljük le
		return "Ebben a szócikkben a [[hettita nyelv]] hangzói az "
			.. mw.getCurrentFrame():expandTemplate{ title = 'ÓKTCh magyarázattal' } 
			.. ". [[Wikipédia:Hettita nevek átírása|útmutatása alapján]] magyar ejtés szerint szerepelnek."
	end
	local keleti = ""
	if nyelvtable.keleti then
		keleti = "és [[keleti névsorrend]]ben "
	end
	return "Ebben a szócikkben " .. az(nyelvtable[1]) .. " " .. nyelvtable[1] .. " nevek [[" .. nyelvtable[2] ..
		"|magyaros átírásban]] " .. keleti .. "szerepelnek."
end

function p.mind(frame)
	frame = mw.getCurrentFrame()
	local text = {}
	local function insert(...)
		table.insert( text, frame:expandTemplate{ title = 'Dablink', args = { ... } } )
		return
	end
	insert("'''[[" .. string.upper( string.format( nyelvek[0][2], 'id' ) ) .. "]] – alapértelmezett'''", nyelvek[0][3], nyelvek[0][4])
	for _, v in ipairs(nyelvek) do
		local id, img, px = v[1], v[3], v[4]
		id = '<tt>' .. v[1] .. '</tt>: [[' .. v[2] .. ']]'
		if v.keleti then
			id = id .. " – keleti névsorrend"
		end
		insert(id, img, px)
	end
	return table.concat( text )
end

function p.main(frame)
	local args = getArgs(frame)
	frame = mw.getCurrentFrame()
	local text = {}
	local nyelv_megad = {}
	local kat = {}
	local nokat = (args.minta or mw.title.getCurrentTitle().namespace ~= 0)
	local n_nyelvek = 0
	local function add_kat(s)
		if not nokat then
			table.insert(kat, '[[Kategória:Szócikkek ' .. s .. ' nyelvű tartalommal]]')
		end
		return
	end
	for n, v in pairs(args) do
		if type(n) == 'number' then
			nyelv_megad[v] = true
			n_nyelvek = n_nyelvek + 1
			add_kat(v)
		end
	end
	if n_nyelvek == 0 then
		return ''
	elseif n_nyelvek == 1 then
		local ny
		for n, v in pairs(nyelv_megad) do
			ny = n
			break;
		end
		for _, v in pairs(nyelvek) do
			if v[1] == ny then
				ny = v
				break;
			end
		end
		return frame:expandTemplate{ title = 'Dablink', args = { nyelv(ny), ny[3] or nyelvek[0][3], ny[4] or nyelvek[0][4] } } .. 
			table.concat(kat)
	end
	local nyelv_lista = {}
	local keletiek = {}
	local van_spec = false
	table.insert(text, "Ebben a szócikkben ")
	if nyelv_megad['hettita'] then
		table.insert(text, "a [[hettita nyelv]] hangzói az "
			.. frame:expandTemplate{ title = 'ÓKTCh magyarázattal' } 
			.. ". [[Wikipédia:Hettita nevek átírása|útmutatása alapján]] magyar ejtés szerint, ")
		van_spec = true
		nyelv_megad['hettita'] = nil
	end
	local van_nyugati = false
	for _, v in ipairs(nyelvek) do
		if nyelv_megad[ v[1] ] then
			if #nyelv_lista == 0 then
				table.insert(text, az(v[1]) .. " ")
			end
			table.insert(nyelv_lista, '[[' .. v[2] .. '|' .. v[1] .. ']]')
			if v.keleti then
				table.insert(keletiek, v[1])
			else
				van_nyugati = true
			end
			nyelv_megad[ v[1] ] = nil
		end
	end
	for n, v in pairs(nyelv_megad) do
		table.insert(nyelv_lista, '[[' .. mw.ustring.upper(string.format(nyelvek[0][2], n) ) .. '|' .. n .. ']]')
	end
	table.insert(text, mw.text.listToText(nyelv_lista) )
	if van_spec then
		table.insert(text, " nevek pedig [[Wikipédia:Átírás|magyaros átírásban]]")
	else
		table.insert(text, " nevek [[Wikipédia:Átírás|magyaros átírásban]]")
	end
	if #keletiek > 0 then
		if van_nyugati then
			table.insert(text, " és – " .. mw.text.listToText(keletiek) .. " nyelvűek esetében – [[keleti névsorrend]]ben")
		else
			table.insert(text, " és [[keleti névsorrend]]ben")
		end
	end
	table.insert(text, " szerepelnek.")
	return frame:expandTemplate{ title = 'Dablink', args = { table.concat(text), nyelvek[0][3], nyelvek[0][4] } }
		.. table.concat(kat)
end

function p.name(frame)
	local args = getArgs(frame)
	if args[1] then
		return args[1]
	end
	local title = require"Modul:String".simpletitle()
	local item = mw.wikibase.getEntity()
	if not item then
		return title
	end
	for _, s in ipairs(item:getBestStatements"P1559") do  -- name in native language
		if s.mainsnak.snaktype == "value" then
			if s.mainsnak.datavalue.value.language == "ko" then
				if s.qualifiers and s.qualifiers.P2001 then
					for _, snak in ipairs(s.qualifiers.P2001) do  -- Revised Romanization, átdolgozott latin betűs átírás
						if snak.snaktype == "value" then
							return frame:expandTemplate{ title = "Koreai", args = { snak.datavalue.value, title } }
						end
					end
				end
			end
		end
	end
	return title
end

return p