Modulo:AppendiceDerivati
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:AppendiceDerivati/man (modifica • cronologia)
Sandbox: Modulo:AppendiceDerivati/Sandbox (modifica•cronologia) • Test: Modulo:AppendiceDerivati/Test (modifica•cronologia)
Questo modulo utilizza: |
Questo modulo serve per la gestione completa delle appendici dei termini derivati, infatti si occupa sia della parte che riguarda il link da apporre nella pagina del termine in questione (tramite Template:Linkderivati), sia della gestione completa della pagina in appendice (tramite il template:AppendiceDerivati)
Funzioni interne
Per permettere la gestione completa di tutti gli aspetti, questo modulo è composto da varie funzioni.
linkList
Questa funzione gestisce la formattazione delle pagine in appendice ed è alla base del funzionamento del Template:Linkderivati, infatti è questa funzione che permette di riconoscere le singole parole, trasformarle in link e inserirli in ordine alfabetico incolonnati su 3 colonne. Alcuni parametri della parte relativa all'incolonnamento sono personabilizzabili modificando il modulo:
- SplitOf: Questo parametro serve per scegliere il carattere che il modulo dovrà interpretare come separatore;
- SplitIn: Questo parametro serve per definire il carattere che verrà usato per dividere i termini;
- NColonne: Questo parametro serve per definire il numero di colonne in cui dividere la lista dei termini;
- Gap: Questo parametro serve per definire la distanza tra una colonna e l'altra.
parte
Questa è una semplice funzione interna per gestire correttamente la glossa nell'appendice, usata dal Template:Linkderivati.
parteCat
Questa funzione categorizza l'appendice in base al tipo di termine, infatti la funzione categorizza in "prefissi", "suffissi" e il generico "termini correlati".
parteLink
Questa funzione serve per gestire completamente il link che verrà inserito tramite il Template:Linkderivati nella pagina principale del lemma
local getArgs = require('Modulo:Arguments').getArgs
local lang = require('Modulo:SwitchLang').langCode
local titolo = mw.title.getCurrentTitle().subpageText
local suffisso = mw.ustring.match(titolo, "-%w+")
local prefisso = mw.ustring.match(titolo, "%w+-")
local p = {}
function p.linkList(frame)
local pages = {}
local args = getArgs(frame)
local Target = frame.args[1]
local SplitOf = ','
local SplitIn = ''
local NColonne = '3'
local Gap = '10'
-- Divide la lista in singole pagine e le ordina in ordine alfabetico
local lista = mw.text.split(Target, SplitOf)
table.sort(lista, function (a, b)
a, b = mw.text.trim(a), mw.text.trim(b)
return b > a
end)
-- Trasforma ogni elemento in un link
for i, j in pairs(lista) do
table.insert(pages, string.format('<li>[['..mw.text.trim(j)..']]</li>', mw.text.trim(j)))
end
-- E li aggiunge in un elenco numerato
local ordinati = '<ol>'..table.concat(pages, SplitIn)..'</ol>'
-- Stile dell'elenco su "n" colonne stabilite dalla variabile locale "NColonne"
local colonne = '<div style="-moz-column-count:'..NColonne..'; -moz-column-gap:'..Gap..'px; -webkit-column-count:'..NColonne..'; -webkit-column-gap:'..Gap..'; -ms-column-count:'..NColonne..'; -ms-column-gap:'..Gap..'; column-count:'..NColonne..'; column-gap:'..Gap..'; text-align:justify;">'
colonne = colonne .. ordinati
colonne = colonne .. '</div>'
return colonne
end
function p.parte(frame)
if prefisso ~= nil then
return 'prefisso'
elseif suffisso ~= nil then
return 'suffisso'
else
return 'termine'
end
end
function p.parteCat(frame)
if prefisso ~= nil then
return 'Prefissi in '
elseif suffisso ~= nil then
return 'Suffissi in '
else
return 'Termini derivati di parole in '
end
end
function p.parteLink(frame)
local args = getArgs(frame)
local lang = lang(frame)
lingua = lang:gsub("^%l", string.upper)
if prefisso ~= nil then
parte = 'Prefissi'
elseif suffisso ~= nil then
parte = 'Suffissi'
else
parte = 'Termini derivati'
end
return 'Appendice:'..parte..'/'..lingua..'/'..titolo
end
return p