Modul:Swadesh

A Wikiszótárból, a nyitott szótárból

A modult a Modul:Swadesh/doc lapon tudod dokumentálni

local export = {}

local m_links = require("Module:links")
local m_scripts = require("Module:scripts")
local m_ipa = require("Module:IPA")

local gsub = mw.ustring.gsub

local English = {"[[én]]", "[[te]]", "[[ő]]", "[[mi]]", "[[ti]]", "[[ők]]", "[[ez]]", "[[az]]", "[[itt]]", "[[ott]]", "[[ki]]?", "[[mi]]?", "[[hol]]?", "[[mikor]]?", "[[hogy]]?, ([[hogyan]]?)", "[[nem]], [[ne]]!", "[[mind]], ([[minden]])", "[[sok]]", "[[néhány]]", "[[kevés]]", "[[más]]", "[[egy]]", "[[kettő]]", "[[három]]", "[[négy]]", "[[öt]]", "[[nagy]]", "[[hosszú]]", "[[széles]]", "[[vastag]]", "[[nehéz]]", "[[kicsi]]", "[[rövid]]", "[[szűk]]", "[[vékony]]", "[[nő]]", "[[férfi]]", "[[ember]]", "[[gyerek]]", "[[feleség]]", "[[férj]]", "[[anya]]", "[[apa]]", "[[állat]]", "[[hal]]", "[[madár]]", "[[kutya]]", "[[tetű]]", "[[kígyó]]", "[[féreg]]", "[[fa]]", "[[erdő]]", "[[bot]]", "[[gyümölcs]]", "[[mag]]", "[[levél]]", "[[gyökér]]", "[[kéreg]]", "[[virág]]", "[[fű]]", "[[kötél]]", "[[bőr]]", "[[hús]]", "[[vér]]", "[[csont]]", "[[zsír]]", "[[tojás]]", "[[szarv]]", "[[farok]]", "[[toll]]", "[[haj]]", "[[fej]]", "[[fül]]", "[[szem]]", "[[orr]]", "[[száj]]", "[[fog]]", "[[nyelv]]", "[[köröm]]", "[[lábfej]]", "[[láb]]", "[[térd]]", "[[kéz]]", "[[szárny]]", "[[has]]", "[[bél]]", "[[nyak]]", "[[hát]]", "[[mell]]", "[[szív]]", "[[máj]]", "[[iszik]]", "[[eszik]]", "[[harap]]", "[[szopik]]", "[[köp]]", "[[hány]]", "[[fúj]]", "[[lélegzik]]", "[[nevet]]", "[[lát]]", "[[hall]]", "[[tud]]", "[[gondol]]", "[[szagol]]", "[[fél]] (ige)", "[[alszik]]", "[[él]]", "[[meghal]]", "[[megöl]]", "[[harcol]]", "[[vadászik]]", "[[üt]]", "[[vág]]", "[[hasít]]", "[[szúr]]", "[[vakar]]", "[[ás]]", "[[úszik]]", "[[repül]]", "[[megy]]", "[[jön]]", "[[fekszik]]", "[[ül]]", "[[áll]] (ige)", "[[fordul]]", "[[esik]]", "[[ad]]", "[[tart]]", "[[facsar]]", "[[dörzsöl]]", "[[mos]]", "[[töröl]]", "[[húz]]", "[[tol]]", "[[dob]]/[[hajít]]", "[[köt]]", "[[varr]]", "[[számol]]", "[[mond]]", "[[énekel]]", "[[játszik]]", "[[lebeg]]", "[[folyik]]", "[[megfagy]]", "[[dagad]]", "[[nap]]", "[[hold]]", "[[csillag]]", "[[víz]]", "[[eső]]", "[[folyó]]", "[[tó]]", "[[tenger]]", "[[só]]", "[[kő]]", "[[homok]]", "[[por]]", "[[föld]]", "[[felhő]]", "[[köd]]", "[[ég]] (főnév)", "[[szél]]", "[[hó]]", "[[jég]]", "[[füst]]", "[[tűz]]", "[[hamu]]", "[[ég]] (ige)", "[[út]]", "[[hegy]]", "[[piros]]/[[vörös]]", "[[zöld]]", "[[sárga]]", "[[fehér]]", "[[fekete]]", "[[éj]]", "[[nap]]", "[[év]]", "[[meleg]]", "[[hideg]]", "[[teli]]", "[[új]]", "[[régi]]", "[[jó]]", "[[rossz]]", "[[rohadt]]", "[[piszkos]]", "[[egyenes]]", "[[kerek]]", "[[éles]]", "[[tompa]]", "[[sima]]", "[[nedves]]", "[[száraz]]", "[[helyes]]", "[[közel]]", "[[távol]]", "[[jobb]]", "[[bal]]", "[[-nál]], [[-nél]]", "[[-ban]], [[-ben]]", "[[-val]], [[-vel]]", "[[és]]", "[[ha]]", "[[mert]]", "[[név]]"}
--array - list of 207 objects in this form {gloss=term}
local data = {}

function export.python_dictionary(frame)
	local args = frame:getParent().args
	local dataurl = args['lang']
	if args['var'] then dataurl = dataurl .. '/' .. args['var'] end
	local data = require("Module:Swadesh/data/" .. dataurl)
	local lang = require("Module:languages").getByCode(args['lang'])
	local res = "{'name': '" .. lang:getCanonicalName()
	if data['header'] ~= nil then res = res .. ' (' .. data['header'] .. ')' end
	res = res .. "',"
	
	for word = 1, #English do
		res = res .. "'" .. word .. "': ["
		if data[word] ~= nil then
			for _, termdata in ipairs(data[word]) do
				local best = m_scripts.findBestScript(termdata.alt or termdata.term, lang)
				local translit = lang:transliterate((termdata.alt or termdata.term), best)
				res = res .. '{'
				if termdata.term then res = res .. "'term': '" .. gsub(termdata.term, "'", "'") .. "', " end
				if termdata.alt then res = res .. "'alt': '" .. gsub(termdata.alt, "'", "'") .. "', " end
				if termdata.tr or translit then res = res .. "'translit': '" ..  gsub((termdata.tr or translit), "'", "'") .. "', " end
				if termdata.ts then res = res .. "'transcript': '" ..  gsub(termdata.ts, "'", "'") .. "', " end
				if termdata.ipa then res = res .. "'ipa': '" ..  gsub(termdata.ipa, "'", "'") .. "', " end
				if termdata.nolink then res = res .. "'nolink': '" .. gsub(termdata.nolink, "'", "'") .. "', " end
				if termdata.notes then res = res .. "'notes': '" ..  gsub(termdata.notes, "'", "'") .. "', " end
				res = res .. '},'
			end
		end
		res = res .. "],"
	end
	res = res .. "}"
	
	return "<pre>" .. mw.text.nowiki(res) .. "</pre>"
end


function export.show(frame)
	local args = frame:getParent().args
	local data = {}
	local langs = {}
	
	local res = mw.html.create("table"):addClass("wikitable sortable")
	
	local headers = res:tag("tr")
	for _, text in ipairs { "№", "magyar" } do
		headers:tag("th"):node(text)
	end
	
	for i, arg in ipairs(args) do
		local lang = arg
		local header = arg
		langs[i] = require("Module:languages").getByCode(lang)
		if args["var" .. i] ~= nil then
			arg = arg .. '/' .. args["var" .. i]
		end
		data[i] = require("Module:Swadesh/data/" .. arg)
		local header = langs[i]:getCanonicalName()
		if data[i]['header'] ~= nil and args['translit'] == nil then
			header = header .. ' (' .. data[i]['header'] .. ')'
		end
		if data[i]['nativename'] ~= nil then
			header = header .. '<br><small>' .. m_links.full_link({lang = langs[i], alt = data[i]['nativename'], tr = "-"}) .. "</small>"
		end
		local count = 0
		for k, v in pairs(data[i]) do
    		if (type(k) == 'number') then count = count + 1 end
    	end
		header = header .. "<br><small><sup>[[Module:Swadesh/data/" .. arg .. "|edit (" .. count .. ")]]</sup></small>"
		headers:tag("th"):node(header)
	end
	
	if args[2] == nil and args['translit'] == nil then
		headers:tag("th"):node("IPA")
	end
	
	for word = 1, #English do
		local row = mw.html.create("tr")
		row:tag("td"):node(word)
		row:tag("td"):node(English[word])
		
		for lang, arg in ipairs(args) do
			local res = ""
			local count = 0
			if data[lang][word] then
				for _, termdata in ipairs(data[lang][word]) do
					if count ~= 0 then res = res .. ", " end
					if args["translit"] then
						res = res .. '<span class="swadesh-translit">'
						local best = m_scripts.findBestScript(termdata.alt or termdata.term, langs[lang])
						local translit = langs[lang]:transliterate((termdata.alt or termdata.term), best)
						if termdata.nolink == nil and termdata.term ~= nil then
							res = res .. m_links.language_link({lang = langs[lang], term = termdata.term or '?',
								alt = termdata.ts or termdata.tr or translit or termdata.term or ('<span class="IPA">' .. termdata.ipa .. '</span>') or '?'})
						else
							res = res .. (termdata.ts or termdata.tr or translit or termdata.term or ('<span class="IPA">' .. termdata.ipa .. '</span>') or '?')
						end
					else
						res = res .. '<span class="swadesh-term">'
						if termdata.nolink == nil then
							res = res .. m_links.full_link({lang = langs[lang], term = termdata.term, alt = termdata.alt, tr = termdata.tr, ts = termdata.ts})
						else
							res = res .. termdata.term
						end
					end
					if termdata.notes then
						if args[2] == nil then res = res .. " (''<span class=\"swadesh-note\">" .. termdata.notes .. "</span>'')"
						else res = res .. '<abbr title = "' .. termdata.notes .. '>*</abbr>' end
					end
					res = res .. '</span>'
					count = count + 1
				end
			end
			row:tag("td"):node(res)
		end
		
		if args[2] == nil and args['translit'] == nil then
			local ipas = ""
			local count = 0
			if data[1][word] then
				for _, termdata in ipairs(data[1][word]) do
					if count ~= 0 then
						ipas = ipas .. ", "
					end
					if termdata.ipa then
						ipas = ipas .. '<span class="IPA">' .. termdata.ipa .. '</span>'
						count = count + 1
					end
				end
			end
			row:tag("td"):node(ipas)
		end
		res:node(row)
	end
	
	
	return res;
end

return export