Mòdul:es-pron

De Viccionari
Salta a la navegació Salta a la cerca
Icona de documentació de mòdul Documentació del mòdul[mostra] [modifica] [refresca]

A continuació es mostra la documentació transclosa de la subpàgina /ús. [salta a la caixa de codi]


Mòdul de suport per la plantilla:es-pron. Vegeu la documentació de la plantilla. La pronúncia és generada pel Mòdul:es-pron/AFI.

local export = {}

local function link_ipa(text)
	return '[[Viccionari:Pronúncia del castellà|<span class="IPA" title="pronúncia AFI">' .. text .. '</span>]]'
end

-- Funció d'entrada de la plantilla:es-pron/proves
function export.plantilla(frame)
	local args = frame:getParent().args
	
	local pron = {}
	if args[1] then
		if mw.ustring.find(args[1], "[/\\[]") then
			pron.gen = args[1]
		else
			pron = require("Mòdul:es-pron/AFI").show(args[1])
		end
	else
		local pagename = mw.ustring.lower(mw.title.getCurrentTitle().subpageText)
		pron = require("Mòdul:es-pron/AFI").show(pagename)
	end
	
	local geolects = {
		"ps", -- peninsular septentrional, Northern peninsular (Madrid, Barcelona)
		"pm", -- peninsular meridional, Southern peninsular (Sevilla)
		"aa", -- americà alt, Highland Americas (México DF, Bogotá, Andes)
		"ab", -- americà baix, Lowland Americas (Caracas, Antillas)
		"rp", -- americà austral, rioplatense (variant "ab", Buenos Aires, Montevideo)
	}
	for _, geo in ipairs(geolects) do
		if args[geo] == '-' then
			pron[geo] = nil
		else
			pron[geo] = args[geo] or pron[geo]
		end
	end
	
	-- Simplificació de variants idèntiques
	if pron.rp == pron.ab then
		pron.rp = nil
	end
	if pron.aa == pron.ab then
		pron.am = pron.aa
		pron.aa = nil
		pron.ab = nil
	end
	if pron.ps == pron.pm then
		pron.pen = pron.ps
		pron.ps = nil
		pron.pm = nil
	end
	if pron.pen == pron.am then
		if pron.gen == nil then
			pron.gen = pron.pen
		end
		pron.pen = nil
		pron.am = nil
	end
	
	local numPron = 0
	for _, v in pairs(pron) do
		if v ~= nil then
			numPron = numPron + 1
		end
	end
	
	-- Formatació
	local ret = {}
	
	table.insert(ret, ':*<span style="font-weight: bold;">Pronúncia</span>: ')
	local dueslinies = numPron > 2 and (pron.pen or pron.ps or pron.pm) and (pron.am or pron.aa or pron.ab or pron.rp)
	local comma = false
	
	if pron.gen then
		table.insert(ret, link_ipa(pron.gen))
		comma = true
	end
	
	if dueslinies then
		table.insert(ret, '\n:: Peninsular: ')
		comma = false
	end
	if pron.pen then
		if dueslinies then
			table.insert(ret, link_ipa(pron.pen))
		else
			table.insert(ret, (comma and ', ' or '') .. 'peninsular ' .. link_ipa(pron.pen))
		end
		comma = true
	end
	if pron.ps then
		table.insert(ret, (comma and ', ' or '') .. 'septentrional ' .. link_ipa(pron.ps))
		comma = true
	end
	if pron.pm then
		table.insert(ret, (comma and ', ' or '') .. 'meridional ' .. link_ipa(pron.pm))
		comma = true
	end
	if dueslinies then
		table.insert(ret, '\n:: Americà: ')
		comma = false
	end
	if pron.am then
		if dueslinies then
			table.insert(ret, link_ipa(pron.am))
		else
			table.insert(ret, (comma and ', ' or '') .. 'americà ' .. link_ipa(pron.am))
		end
		comma = true
	end
	if pron.aa then
		table.insert(ret, (comma and ', ' or '') .. 'alt ' .. link_ipa(pron.aa))
		comma = true
	end
	if pron.ab then
		table.insert(ret, (comma and ', ' or '') .. 'baix ' .. link_ipa(pron.ab))
		comma = true
	end
	if pron.rp then
		table.insert(ret, (comma and ', ' or '') .. 'austral ' .. link_ipa(pron.rp))
	end
	
	return table.concat(ret)
end

return export