Salta al contegnùo

Modulo:vec-zenerałe

Da Wikisionario

La documentazione per questo modulo può essere creata in Modulo:vec-zenerałe/man

-- Funsion zenerali par el vèneto

local export = {}

-- Ciave de ordenamento par cat in vèneto
local sensaDiacriteghi = {
    ["À"] = "A", ["à"] = "a",
    ["È"] = "E", ["è"] = "e", ["É"] = "E", ["é"] = "e",
    ["Í"] = "I", ["í"] = "i",
    ["Ò"] = "O", ["ò"] = "o", ["Ó"] = "O", ["ó"] = "o",
    ["Ú"] = "U", ["ú"] = "u",
    ["Ç"] = "C", ["ç"] = "c",
    ["Đ"] = "C", ["đ"] = "c",
    ["Ł"] = "L", ["ł"] = "l",
    ["Ẑ"] = "Z", ["ẑ"] = "z",
    ["·"] = ""}
local sensaSegni = {
    ["/"] = "",
    ["-"] = "",
    ["."] = "",
    -- el spàsio bianco el ze prima de la A "!"
    -- pòstero de A-Z i infin Mediawiki i lo convertise in majúscule
    [" "] = "&",
    ["'"] = "&"}
local ordeneAsenti = {  -- ordene eéè simulà co ordene Unicode eèéê
    ["è"] = "ê",
    ["ò"] = "ô"}

function export.ordena(parola)
    if type(parola) == "table" then parola = parola.args[1] end -- par modeli via invoke o via require
    if parola == "" or parola == nil then
        parola = mw.title.getCurrentTitle().text
    end
    local ciave           -- format totale: "ciave1!ciave2!ciave3!parola"
    local ciave1          -- ciave primària: in menúscule e sensa Diacriteghi e segni
    local ciave2          -- ciave secondària: priorita dei diacrìteghs eéè
    local ciave3          -- ciave tersiària: priorita minúscules > majúscule
                         -- ciave cuarta: priorita sensa segni > co segni
    local motSensaSegni = mw.ustring.gsub(parola, ".", sensaSegni)
    local motLower = mw.ustring.lower(mw.text.trim(motSensaSegni))
    ciave1 = mw.ustring.gsub(motLower, ".", sensaDiacriteghi)
    if ciave1 == parola then
        return ciave1
    end
    ciave2 = mw.ustring.gsub(motLower, ".", ordeneAsenti)
    ciave3 = mw.ustring.gsub(motSensaSegni, ".", sensaDiacriteghi)
    if ciave1 == motLower then
        ciave = ciave1 .. "!"
    else
        ciave = ciave1 .. "!" .. ciave2
    end
    if ciave3 ~= ciave1 then
        ciave = ciave .. "!" .. ciave3
    elseif motSensaSegni ~= parola then
        ciave = ciave .. "!"
    end
    if motSensaSegni ~= parola then
        ciave = ciave .."!" .. parola
    end
    return ciave
end

function export.cat_ortografia(frame)
	-- categorització per característiques ortogràfiques: invers, palíndroms, eles geminades
	local pagename = mw.title.getCurrentTitle().text
	local namespace = mw.title.getCurrentTitle().nsText
	local ret = ""
	if namespace == "" then
		if not (pagename:find("^-") or pagename:find("-$")) then -- sensa afixos
			local parolaNet = mw.ustring.lower(mw.ustring.gsub(pagename, ".", sensaSegni))
			parolaNet = string.gsub(parolaNet, " ", "")
			parolaNet = mw.ustring.gsub(parolaNet, ".", sensaDiacriteghi)
			local motInvers = parolaNet:reverse()
			if not pagename:find("[ '.]") then -- sensa locucions ni abreviatures
				ret = "[[Categoria:Disionario inverso in vèneto|" .. motInvers .. "]]"
				if mw.ustring.find(pagename, "l·l") then
					ret = ret .. "[[Categoria:Parołe in vèneto co zemełaji|" .. parolaNet .. "]]"
				end
			end
			-- palímdroms traslladat a [[Module:pałìndromi]
			--if motInvers == parolaNet and string.len(parolaNet) > 1 and not pagename:find("%.") then
			--	ret = ret .. "[[Categoria:Pałìndromi in vèneto" .. (parolaNet == pagename and "" or "|" .. parolaNet) .. "]]"
			--end
		end
	end
	return ret
end

--[[ 
Sil·labificació

    marcatge intern: vocals 0, obertures 1, codes 2
    silaba: ·(1*)0(2*)·
]]
function export.sil(parola)
    if type(parola) == "table" then parola = parola.args[1] end -- des de plantilles via invoke o des de mòduls via require
    if parola == "" or parola == nil then
        parola = mw.title.getCurrentTitle().text
    end
    local sil = mw.ustring.lower(parola)
    -- Prefixos que trenquen regles
    sil = string.gsub(sil, "^anae", "0200") -- an-
    sil = string.gsub(sil, "^anafro", "020110")
    sil = mw.ustring.gsub(sil, "^an[aà]l[fg]", "02021")
    sil = mw.ustring.gsub(sil, "^an[aà]r([c])", "0202%1")
    sil = mw.ustring.gsub(sil, "^anè", "020")
    sil = string.gsub(sil, "^ane([nprs])", "020%1")
    sil = mw.ustring.gsub(sil, "^an[uú]r", "020r")
    sil = string.gsub(sil, "^autoi([mn])", "02100%1") -- auto-
    sil = mw.ustring.gsub(sil, "^bena(%l+è)", "1010%1")
    sil = string.gsub(sil, "^bena(%l)", "1020%1") -- ben-
    sil = string.gsub(sil, "^bene([ns]%l)", "1020%1")
    sil = mw.ustring.gsub(sil, "^be[xz][aà]v", "10201") -- bes-
    sil = string.gsub(sil, "^bezon", "10202")
    sil = string.gsub(sil, "^bizan", "10202") -- biz-
    sil = string.gsub(sil, "^coin", "1002") -- co-
    sil = string.gsub(sil, "^con[ou][nr]", "10202") -- con-
    sil = string.gsub(sil, "^contrai", "1021100") -- contra-
    sil = mw.ustring.gsub(sil, "^d[ie][zs]([aeiouú])", "102%1") -- des- co ecesion pendenti
    sil = string.gsub(sil, "^[ie]nanti", "010210") -- i/enantio-
    sil = mw.ustring.gsub(sil, "^en[oò]([flt])", "010%1") -- eno-
    sil = string.gsub(sil, "^enorm", "01021") -- 
    sil = mw.ustring.gsub(sil, "^[ie]n[aoò]", "020") -- en-, excepte anteriors
    sil = string.gsub(sil, "^e[xz]a([bclnrs])", "020%1") -- ez(ex)-
    sil = string.gsub(sil, "^e[xz]o([rs][^cdrpqt])", "020%1")
    sil = string.gsub(sil, "^iper[ae]", "101020") -- hiper-
    sil = string.gsub(sil, "^inani[ct]", "010101")
    sil = string.gsub(sil, "^inefa", "01010")
    sil = mw.ustring.gsub(sil, "^in[eè]p", "0102")
    sil = mw.ustring.gsub(sil, "^in[eè]r([^ru])", "0102%1")
    sil = string.gsub(sil, "^ino[cs][ei]", "01010")
    sil = mw.ustring.gsub(sil, "^in[aeèoò]", "020") -- in-, excepte anteriors
    sil = string.gsub(sil, "^ini([gmn])", "020%1")
    sil = mw.ustring.gsub(sil, "^in[uú]([rst])", "020%1")
    sil = string.gsub(sil, "^infra[iu]", "021100") -- infra-
    sil = string.gsub(sil, "^int[ie]r[ao]([^p])", "021020%1") -- inter/intier
    sil = string.gsub(sil, "^int[ae]rest", "02102021")
    sil = string.gsub(sil, "^intra[iu]", "021100") -- intra-
    sil = string.gsub(sil, "^m[ai]cro[iu]", "101100") -- macro-, micro-
    sil = string.gsub(sil, "^[nv]osaltres", "102021102")
    sil = string.gsub(sil, "^pana([frt][rate][^a])", "1020%1") -- pan-
    sil = string.gsub(sil, "^panamer", "1020101")
    sil = string.gsub(sil, "^panisl", "102021")
    sil = mw.ustring.gsub(sil, "^panòpt", "102021")
    sil = string.gsub(sil, "^posta[bcl]([^$])", "102202%1") -- post-
    sil = string.gsub(sil, "^postes([^$])", "102202%1")
    sil = string.gsub(sil, "^post[io][mp]", "102202")
    sil = mw.ustring.gsub(sil, "^post[^aàeèéioòóu]", "10221")
    sil = string.gsub(sil, "^pr[eo]i([^x])", "1100%1") -- pre-, pro-
    sil = string.gsub(sil, "^rein[ae]", "10210")
    sil = string.gsub(sil, "^rei([^aegx])", "100%1") -- re-
    sil = string.gsub(sil, "^reun", "1001")
    sil = string.gsub(sil, "^sot[oeai]", "10220") -- soto-
    sil = mw.ustring.gsub(sil, "^sub([aàíour])", "102%1") -- sub-
    sil = mw.ustring.gsub(sil, "^sub[eè]([^r])", "1020%1")
    sil = string.gsub(sil, "^subl[iu][nt]", "102101")
    sil = string.gsub(sil, "^trans[aeou]", "110220") -- trans-
    sil = string.gsub(sil, "^ultra[iu]", "021100") -- ultra-
    -- Diftongs creixents
    sil = mw.ustring.gsub(sil, "[qg][uü][aàeèéiíïoòóuúü]", "110")
    sil = mw.ustring.gsub(sil, "[aàeèéiíïoòóuúü][iu][aàeèéiíïoòóuúü]", "010")
    sil = mw.ustring.gsub(sil, "^i[oò]ni(.)", "0010%1") -- excepció pels derivant de ió
    sil = mw.ustring.gsub(sil, "^(h?)[iu][aàeèéioòóu]", "%110")
    -- Sufisi co estalvi de dièreze
    sil = string.gsub(sil, "[aeou]ir$", "002") -- infinitius -ir
    sil = string.gsub(sil, "[aeou][ei]ndo$", "0022") -- gerundio
    sil = mw.ustring.gsub(sil, "[aeou]ir[òà]$", "0010") -- futur
    sil = mw.ustring.gsub(sil, "[aeou]irà$", "00102") -- futur
    sil = string.gsub(sil, "[aeou]ire[mo]$", "00102") -- futur
    sil = string.gsub(sil, "[aeou]iria$", "00100") -- condisional
    sil = string.gsub(sil, "[0iu]um(i?)$", "002%1") -- latinismi
    sil = string.gsub(sil, "[0aeiou]ism[oi]$", "00210%1") -- -ismo
    sil = string.gsub(sil, "[0aeiou]ist([aei]o?)$", "0021%1") -- -ista
    -- ditonghi decresenti
    sil = mw.ustring.gsub(sil, "[0aàeèéioòóu][u]", "02") -- inclou triftongs: creixent 10 + decreixent 2
    sil = mw.ustring.gsub(sil, "[0aàeèéoòóuúü][i]", "02")
    sil = string.gsub(sil, "ii$", "02") -- només final de parola, no amb prefix
    -- Nuclei vocàleghi
    sil = mw.ustring.gsub(sil, "[aàeèéiíïoòóuúü]", "0")
    -- Codazi finali
    sil = string.gsub(sil, "%l$", "2")
    sil = string.gsub(sil, "%l2$", "22")
    sil = string.gsub(sil, "%l22$", "222")
    -- Obertures
    sil = string.gsub(sil, "^%l", "1")
    sil = string.gsub(sil, "^1%l", "11")
    sil = string.gsub(sil, "^11%l", "111")
    sil = string.gsub(sil, "ll0", "110")
    sil = string.gsub(sil, "ny0", "110")
    sil = string.gsub(sil, "[ptcfbdg]r", "11")
    sil = string.gsub(sil, "[pcfbg]l", "11")
    sil = string.gsub(sil, "%l0", "10")
    sil = mw.ustring.gsub(sil, "[çñ]0", "10") -- %l (all ASCII lowercase letters) no inclou ç, ñ
    -- Codezi interiori
    sil = string.gsub(sil, "[ps][%l1]", "21")
    sil = string.gsub(sil, "%l([12])", "2%1")
    -- Separasion de sílabe
    local anterior = ""
    local motSil = ""
    for i = 1, mw.ustring.len(parola) do
        actual = mw.ustring.sub(sil,i,i)
        if (actual == "0" or actual == "1") and (anterior == "0" or anterior == "2") then
            motSil = motSil .. "·"
        end
        motSil = motSil .. mw.ustring.sub(parola,i,i)
        anterior = actual
    end
    return motSil
end

return export
Traesto fora da Wikipèdia - L'ençiclopedia łìbara e cołaboradiva in łéngua Vèneta "https://vec.wiktionary.org/w/index.php?title=Modulo:vec-zenerałe&oldid=35597"