Mòdul:es-general
Aparença
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