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 p = {}
local lang = {code = "es", name = "castellà", sc = "Latn"}
local m_utilities = require('Module:utilitats')

local function formatIPA(text)
	return '<span class="IPA" title="pronúncia AFI">' .. text .. '</span>'
end

-- Funció d'entrada de la plantilla:es-pron
function p.plantilla(frame)
	local args = frame:getParent().args
	local pagename = mw.ustring.lower(mw.title.getCurrentTitle().subpageText)
	local namespace = mw.title.getCurrentTitle().nsText
	
	local pron = {}
	if args[1] then
		if mw.ustring.find(args[1], "[/\\[]") then
			pron.gen = args[1]
		else
			pron = require("Module:es-pron/AFI").show(args[1])
		end
	else
		pron = require("Module:es-pron/AFI").show(pagename)
	end
	
	local pronrima = string.sub(args.rima or pron.ps or pron.gen, 2, -2)
	local unstressed = mw.ustring.find(args.q or "", "àton")
	if unstressed or pronrima == "" then
		pronrima = nil
	end
	
	local geolects = {
		"ps", -- peninsular septentrional, Northern peninsular (Madrid, Valladolid)
		"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
		elseif args[geo] then
			pron[geo] = args[geo]
		elseif pron[geo] and unstressed then
			pron[geo] = string.sub(pron[geo], 1, 1) .. mw.ustring.gsub(string.sub(pron[geo], 2), "^[ˈˌ]", "")
			pron[geo] = mw.ustring.gsub(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
	
	-- Formatació
	local numPron = 0
	for _, v in pairs(pron) do
		if v ~= nil then
			numPron = numPron + 1
		end
	end
	
	local ret = {}
	table.insert(ret, ':*<span style="font-weight: bold;">Pronúncia</span><sup>[[Viccionari:Pronúncia del castellà|(i)]]</sup>: ')
	if args.q then
		table.insert(ret, '(' .. args.q .. ') ')
	end
	
	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, formatIPA(pron.gen))
		comma = true
	end
	
	if dueslinies then
		table.insert(ret, '\n:: Peninsular: ')
		comma = false
	elseif pron.ps or pron.pm then
		table.insert(ret, ' peninsular: ')
		comma = false
	end
	if pron.pen then
		if dueslinies then
			table.insert(ret, formatIPA(pron.pen))
		else
			table.insert(ret, (comma and ', ' or '') .. 'peninsular ' .. formatIPA(pron.pen))
		end
		comma = true
	end
	if pron.ps then
		table.insert(ret, (comma and ', ' or '') .. 'septentrional ' .. formatIPA(pron.ps))
		comma = true
	end
	if pron.pm then
		table.insert(ret, (comma and ', ' or '') .. 'meridional ' .. formatIPA(pron.pm))
		comma = true
	end
	if dueslinies then
		table.insert(ret, '\n:: Americà: ')
		comma = false
	elseif pron.aa or pron.ab or pron.rp then
		table.insert(ret, ' americà: ')
		comma = false
	end
	if pron.am then
		if dueslinies then
			table.insert(ret, formatIPA(pron.am))
		else
			table.insert(ret, (comma and ', ' or '') .. 'americà ' .. formatIPA(pron.am))
		end
		comma = true
	end
	if pron.aa then
		table.insert(ret, (comma and ', ' or '') .. 'alt ' .. formatIPA(pron.aa))
		comma = true
	end
	if pron.ab then
		table.insert(ret, (comma and ', ' or '') .. 'baix ' .. formatIPA(pron.ab))
		comma = true
	end
	if pron.rp then
		table.insert(ret, (comma and ', ' or '') .. 'austral ' .. formatIPA(pron.rp))
	end
	
	-- Rimes
	if pronrima and namespace == ""
	-- sense locucions ni prefixos o sufixos
	and not (string.find(pagename, "[^ ]+ [^ ]+") or string.find(pagename, "^-") or string.find(pagename, "-$"))
	then
		pronrima = mw.ustring.gsub(pronrima, "[%(%)]", "")
		
		-- número de síl·labes per ordenar categoria de rimes
		local numsil
		pronrima = mw.ustring.gsub(pronrima, "^[ˈˌ]", "")
		_, numsil = mw.ustring.gsub(pronrima, "[.ˌˈ]", "")
		numsil = numsil + 1
		
		-- inici des de l'accent
		local posaccent = mw.ustring.find(pronrima, "ˈ") or 0
		pronrima = mw.ustring.sub(pronrima, posaccent + 1)
		pronrima = mw.ustring.gsub(pronrima, "%.", "")
		
		-- inici des de la vocal accentuada
		local vocals = m_utilities.llista({'a', 'e', 'i', 'o', 'u'})
		local rima = ''
		for i = 1, mw.ustring.len(pronrima) do
			if vocals[mw.ustring.sub(pronrima, i, i)] then
				rima = mw.ustring.sub(pronrima, i)
				break
			end
		end
		
		-- substitució d'aproximants
		local from_pron = 'βðɣɱŋ͡'
		local to_pron   = 'bdɡnn'
		for j = 1, mw.ustring.len(from_pron) do
			rima = mw.ustring.gsub(rima, mw.ustring.sub(from_pron, j, j), mw.ustring.sub(to_pron, j, j) or '')
		end
		--rima = mw.ustring.gsub(rima, "r([^aeiou])", "ɾ%1")
		--rima = mw.ustring.gsub(rima, "r$", "ɾ")
		
		table.insert(ret, '\n:*<span style="font-weight: bold;">Rimes</span>: [[:Categoria:Rimes en castellà -' .. rima .. '|-' .. rima .. ']]')
		local sorting = numsil
		if sorting > 9 then
			sorting = ">"
		else
			sorting = tostring(numsil)
		end
		sorting = sorting .. require('Module:es-general').ordena()
		table.insert(ret, m_utilities.format_categories({'Rimes en castellà -' .. rima}, lang, sorting))
	end
	
	return table.concat(ret)
end

return p