Modulo:Fonte
La documentazione per questo modulo può essere creata in Modulo:Fonte/man
-- Moduli utili per il template Fonte divisi per dizionario
local p = {}
local titolo = mw.title.getCurrentTitle().subpageText
--[[ Funzione che toglie gli accenti "normalizzando" le lettere, usato nei template:
Fonte/sin-co;
Fonte/Sabco;
Fonte/dem;
Fonte/rep;
--]]
function p.senzaccenti(arg)
if type(arg) ~= 'string' and arg.args ~= nil and arg.args[1] ~= nil then
arg = arg.args[1]
end
if type(arg) ~= 'string' then
error('Specificare un parametro di tipo stringa')
return nil
end
arg = mw.ustring.gsub(arg, '[àáäãâåāăą]', 'a')
arg = mw.ustring.gsub(arg, '[èéêëēěĕėę]', 'e')
arg = mw.ustring.gsub(arg, '[ìíîïĩīĭį]', 'i')
arg = mw.ustring.gsub(arg, '[òóôõöōŏőø]', 'o')
arg = mw.ustring.gsub(arg, '[ùúûüũūŭůűų]', 'u')
return arg
end
--[[ encode_url:
Sostituisce le lettere accentate con l'equivalente UTF-8 (es: "%EO" per "à"). Usato da:
Fonte/italwn
--]]
function p.encode_url(arg)
local accenti = require('Modulo:Fonte/Accenti UTF-8')
arg = arg.args[1]
return accenti.accenti(arg)
end
--[[ encode_HEXA:
Sostituisce le lettere accentate con l'equivalente in esadecimale. Usato da:
-
preso da http://lua-users.org/wiki/StringRecipes
--]]
function p.encode_HEXA(arg)
arg = arg.args[1]
if arg then
arg = arg:gsub("\n", "\r\n")
arg = arg:gsub("([^%w %-%_%.%~])", function(c)
return ("%%%02X"):format(string.byte(c))
end)
arg = arg:gsub(" ", "+")
end
return arg
end
--[[ Hoep:
sostituisce il testo racchidendolo tra i caratteri" +(...)", indispensabile in caso di omonimie
Nel caso sia scritto un parametro con una cifra, esempio "parametro2", questa funzione permette di isolare le lettere, sostituire i "_" con i "+" e cancellare i numeri. Usato nei template:
Fonte/hoep
--]]
function p.hoepTesto(frame)
local par1 = frame.args[1]
local par2 = mw.ustring.gsub(par1, '%d', '') -- Cancella i numeri
local res = titolo -- Se non ci sono lettere mostra il titolo della pagina
if par2 ~= "" then -- Controlla se ci sono delle lettere
res = par2 -- Se ci sono lettere vuol dire che è stato specificato il primo parametro, quindi lo mostra
end
return mw.ustring.sub(res, 0, 1):upper() .. '/' .. mw.uri.encode(res, 'PATH') -- Appropriata codifica dell'indirizzo
end
function p.hoepNum(frame)
par1 = frame.args[1]
par3 = mw.ustring.gsub(par1, '%d', '') -- Cancella tutti i numeri
par2 = mw.ustring.gsub(par1, '%a', '') -- Cancella tutte le lettere
if par3 ~= "" then --se ci sono delle lettere
if par2 > "0" then
return mw.uri.encode(par3 .. ' (' .. par2 .. ')')
else
return mw.uri.encode(par3)
end
else
if par2 > "0" then -- se non ci sono lettere
return mw.uri.encode(titolo .. ' (' .. par2 .. ')')
else
return mw.uri.encode(titolo)
end
end
end
--[[ Sabco:
sostituisce tutte le lettere accentate con le rispettive lettere private dell'accento e sostituisce tutti gli spazi con il "_" necessario per linkare correttamente. Usato nei template:
Fonte/sin-co;
Fonte/Sabco;
--]]
function p.SabCo(frame)
t2 = p.senzaccenti(titolo)
t2 = mw.ustring.gsub(t2, ' ', '_') -- Sostituisce i "_" se non è specificata la pagina
par = p.senzaccenti(frame.args[1])
par = mw.ustring.gsub(par, ' ', '_') -- Sostituisce i "_" al primo parametro
lett = mw.ustring.gsub(par, '%d', '') -- Cancella tutti i numeri
num = mw.ustring.gsub(par, '%a', '') -- Cancella tutte le lettere
if lett ~= "" then --se ci sono delle lettere
if num > "0" then
return lett , '_' .. num .. ''
else
return lett
end
else
if num > "0" then -- se non ci sono lettere
return t2 , '_' .. num .. ''
else
return t2
end
end
end
--[[ Dem:
sostituisce tutte le lettere accentate con le rispettive lettere private dell'accento e sostituisce tutti gli spazi con il "-" necessario per linkare correttamente. Usato nei template:
Fonte/dem;
--]]
function p.dem(frame)
titolo2 = p.senzaccenti(titolo)
titolo2 = mw.ustring.gsub(titolo2, '%s', '-') -- Sostituisce gli spazi nel titolo senza accenti con i "_"
parametro = p.senzaccenti(frame.args[1])
parametro = mw.ustring.gsub(parametro, '%s', '-') -- Sostituisce gli spazi nel parametro arbitrario con i "_"
lettere = mw.ustring.gsub(parametro, '%d', '') -- Cancella tutti i numeri
numeri = mw.ustring.gsub(parametro, '%a', '') -- Cancella tutte le lettere
if lettere ~= "" then --se ci sono delle lettere
if numeri > "0" then
return lettere , '_' .. numeri .. ''
else
return lettere
end
else
if numeri > "0" then -- se non ci sono lettere ma numeri sì
return titolo2 , '_' .. numeri .. ''
else
return titolo2
end
end
end
--[[ Dizit:
sostituisce tutte le lettere accentate con le rispettive lettere private dell'accento e costruisce il link tenendo conto anche delle omonimie. Usato nei template:
Fonte/dizit;
--]]
function p.dizit(frame)
titolo2 = p.senzaccenti(titolo)
titolo2 = titolo2:upper()
parametro = p.senzaccenti(frame.args[1])
parametro = parametro:upper()
lettere = mw.ustring.gsub(parametro, '%d', '') -- Mantiene solo le lettere
numeri = mw.ustring.gsub(parametro, '%a', '') -- Cancella tutte le lettere
if numeri ~= '' then
numero = numeri..'00'
else
numero = '100'
end
-- Se il parametro non è vuoto e ci sono lettere
if lettere ~= '' then
return lettere..''..numero
else
return titolo2..''..numero
end
end
--[[ Trec:
sostituisce tutte le lettere accentate con le rispettive lettere private dell'accento e sostituisce tutti gli spazi con il "-" necessario per linkare correttamente. Usato nei template:
Fonte/trec;
--]]
--[[
FUNZIONE DEPRECATA DOPO AGGIORNAMENTO DEL SITO DELLA TRECCANI
function p.trec(frame)
titolo2 = p.senzaccenti(titolo)
titolo2 = mw.ustring.gsub(titolo2, '%s', '-') -- Sostituisce gli spazi nel titolo senza accenti con i "-"
parametro = p.senzaccenti(frame.args[1])
parametro = mw.ustring.gsub(parametro, '%s', '-') -- Sostituisce gli spazi nel parametro arbitrario con i "-"
lettere = mw.ustring.gsub(parametro, '%d', '') -- Cancella tutti i numeri
numeri = mw.ustring.gsub(parametro, '%a', '') -- Cancella tutte le lettere
if lettere ~= "" then --se ci sono delle lettere
if numeri > "0" then
return lettere , numeri
else
return lettere
end
else
if numeri > "0" then -- se non ci sono lettere ma numeri sì
return titolo2 , numeri
else
return titolo2
end
end
end
--]]
--[[ mdbg:
Analizza il testo inserito e taglia l'eventuale testo "zh-tc" dal parametro inserito e poi smista il testo in base al risultato. Usato nei template:
Fonte/mdgb;
--]]
function p.mdbgTesto(frame)
par1=frame.args[1]
par2 = mw.ustring.gsub(par1, '([%a0-9]+)(-([a-z]+-[a-z]+))', '%1');
if par1 ~= "" then
if par1 == "zh-tc" then -- Controlla se è stato specificato soltanto "zh-tc"
return titolo -- se non è stato specificato niente restituisce il titolo della pagina
else
return par2 -- se è stato specificato altro lo visualizza
end
else
return titolo -- se è stato specificato altro lo visualizza
end
end
function p.mdbgSuff(frame)
par1=frame.args[1]
par2 = mw.ustring.gsub(par1, '([%a0-9]+)(-([a-z]+-[a-z]+))', '%3');
if par1 ~= "" then
if par2 == "zh-tc" then -- Controlla se è stato specificato soltanto "zh-tc"
return '1' -- se non è stato specificato niente restituisce il titolo della pagina
else
return '0' -- se è stato specificato altro lo visualizza
end
else
return '0' -- se è stato specificato altro lo visualizza
end
end
return p