Modulo:AppendiceDerivati

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.

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".

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