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]


-- Funcions generals per castellà.

local p = {}

-- Clau d'ordenació per a categories
local senseDiacritics = {
    ["Á"] = "A", ["á"] = "a",
    ["É"] = "E", ["é"] = "e",
    ["Í"] = "I", ["í"] = "i",
    ["Ó"] = "O", ["ó"] = "o",
    ["Ú"] = "U", ["ú"] = "u", ["Ü"] = "U", ["ü"] = "u",
    ["Ñ"] = "n", ["ñ"] = "n",
    ["-"] = ""}

function p.ordena(mot)
    if type(mot) == "table" then mot = mot.args[1] end -- des de plantilles via invoke o des de mòduls via require
    if mot == "" or mot == nil then
        mot = mw.title.getCurrentTitle().text
    end
    local clau           -- format complet: "clau1!clau2!mot"
    local clau1          -- clau primària: en minúscules i sense diacrítics
    local clau2          -- clau secundària: prioritat minúscules > majúscules
    local motLower = mw.ustring.lower(mot)
    clau1 = mw.ustring.gsub(motLower, ".", senseDiacritics)
    if clau1 == mot then
        return clau1
    end
    clau2 = mw.ustring.gsub(mot, ".", senseDiacritics)
    if clau2 ~= clau1 then
        clau = clau1 .. "!" .. clau2 .. "!" .. mot
    else
        clau = clau1 .. "!" .. mot
    end
    return clau
end

function p.cat_ortografia(frame)
	-- categorització per característiques ortogràfiques: invers, palíndroms
	local pagename = mw.title.getCurrentTitle().text
	local namespace = mw.title.getCurrentTitle().nsText
	local ret = ""
	if namespace == "" then
		local motNet = mw.ustring.gsub(mw.ustring.lower(pagename), ".", senseDiacritics)
		local motInvers = motNet:reverse()
		if not pagename:find("[ .]") then -- sense locucions ni abreviatures
			ret = "[[Categoria:Diccionari invers en castellà|" .. motInvers .. "]]"
		end
	end
	return ret
end

--[[ 
Sil·labificació

    marcatge intern: vocals 0, obertures 1, codes 2
    síl·laba: ·(1*)0(2*)·
]]
function p.sil(mot)
    if type(mot) == "table" then mot = mot.args[1] end -- des de plantilles via invoke o des de mòduls via require
    if mot == "" or mot == nil then
        mot = mw.title.getCurrentTitle().text
    end
    local sil = mw.ustring.lower(mot)
    -- Prefixos que trenquen regles
    -- prefixos ab-(r), post-(r) són ambigus
    sil = mw.ustring.gsub(sil, "^subr", "1021")
    sil = mw.ustring.gsub(sil, "^superr", "101021")
    sil = mw.ustring.gsub(sil, "^hiperr", "101021")
    sil = mw.ustring.gsub(sil, "^interr", "021021")
    sil = mw.ustring.gsub(sil, "^ciberr", "101021")
    -- Triftongs
    sil = mw.ustring.gsub(sil, "[iuü][aáeé][iu]", "022")
    -- Diftongs
    sil = mw.ustring.gsub(sil, "[gq][uü]([aáeéiíoó])", "11%1")
    sil = mw.ustring.gsub(sil, "[aáeéoó][iu]", "02")
    sil = mw.ustring.gsub(sil, "[iuü][aáeéoó]", "02")
    sil = mw.ustring.gsub(sil, "iu", "02")
    sil = mw.ustring.gsub(sil, "ui", "02")
    -- Nuclis vocàlics
    sil = mw.ustring.gsub(sil, "[aáeéiíoóuúü]", "0")
    -- Obertures
    sil = mw.ustring.gsub(sil, "[bcfgkp][lr]", "11")
    sil = mw.ustring.gsub(sil, "[drt]r", "11")
    sil = mw.ustring.gsub(sil, "ll", "11")
    sil = mw.ustring.gsub(sil, "ch$", "22")
    sil = mw.ustring.gsub(sil, "ch", "11")
    sil = mw.ustring.gsub(sil, "^%l[%l1]", "11")
    sil = mw.ustring.gsub(sil, "%l0", "10")
    -- Codes
    sil = mw.ustring.gsub(sil, "%l", "2")
    -- Separació de síl·labes
    local anterior = ""
    local mot_sep = {}
    for i = 1, mw.ustring.len(mot) do
        actual = mw.ustring.sub(sil,i,i)
        if (actual == "0" or actual == "1") and (anterior == "0" or anterior == "2") then
            table.insert(mot_sep, "·")
        end
        table.insert(mot_sep, mw.ustring.sub(mot, i, i))
        anterior = actual
    end
    return table.concat(mot_sep)
end

function p.sil_template(frame)
	local word = frame:getParent().args[1]
	local sil 
	if word then
		sil = word
	else
		word = mw.title.getCurrentTitle().text
		if string.find(word, "[^ ]+ [^ ]+") then
			return
		else
			sil = p.sil(word)
		end
	end
	local lang = {code = "es", name = "castellà", sc = "Latn"}
	return require('Mòdul:síl·labes').format_hyphenations{['hyphs'] = {{sil}}, ['lang'] = lang}
end

return p