Questo modulo serve per riconoscere ed isolare la radice e le desinenze delle forme flesse, è stato scritto per funzionare con il {{Tabs}}, ne ricalca quindi i parametri.
{{#invoke: FormeFlesse | Differenze | MaschileSingolare | MaschilePlurale | FemminileSingolare | FemminilePlurale }}
{{#invoke: FormeFlesse | Differenze | wikipediano | wikipediani | wikipediana | wikipediane }}
Essendo questo modulo stato concepito per dialogare con il javascript, in realtà le parie parti scomposte vengono messe all'interno di uno "<span>" invisibile. Questo è il codice del risultato finale:
<span id="FFdms" style="display:none">' .. desMascSing .. '</span><span id="FFdmp" style="display:none">' .. desMascPlu ..'</span><span id="FFdfs" style="display:none">' ..desFemmSing.. '</span><span id="FFdfp" style="display:none">' ..desFemmPlu.. '</span><span id="FFrad" style="display:none">' ..radice .. '</span>'
Variabile | Corrispondente a | nell'esempio | ID span |
---|---|---|---|
radice | radice | wikipedian | FFrad |
desMascSing | desinenza maschile singolare |
o | FFdms |
desMascPlu | desinenza maschile plurale |
i | FFdmp |
desFemmSing | desinenza femminile singolare |
a | FFdfs |
desFemmPlu | desinenza femminile plurale |
e | FFdfp |
La funzione Differenze scompone le forme flesse separando la radice da ognuna delle desinenze (in pratica si limita a scrivere la parte che cambia).
Per usarla, prima carica il modulo compreso il Modulo:Arguments.
local getArgs = require('Modulo:Arguments').getArgs
local mFF = require('Modulo:FormeFlesse')
Quindi utilizza la funzione con la seguente sintassi:
mFF.Differenze(getArgs(frame))
le variabili devono essere date obbligatoriamente usando i seguenti parametri da template:
oppure usando i parametri numerali nel medesimo ordine. Se si intende usare nomi diversi, settare prima le variabili con tali nomi, esempio:
local m = VariabileMaschile
local mpl = VariabileMaschilePlurale
local f = VariabileFemminile
local fpl = VariabileFemminilePlurale
--[=[
Modulo usato prevalentemente per lo script delle forma flesse.
Questo modulo riesce a riconoscere la radice di una parola dalla desinenza separandole
e rendendole riconoscibili da uno script js per poter essere usate successivamente
#################################################################################
Function "get_inserted_text" originally writed by Egor Skriptunoff on stackoverflow.com
and licensed under cc by-sa 3.0 with attribution required.
URL: https://stackoverflow.com/a/41514182
#################################################################################
]=]
local getArgs = require('Modulo:Arguments').getArgs
local p = {}
function p.get_inserted_text(old, new, frame)
local prv = {}
for o = 0, #old do
prv = ""
end
for n = 1, #new do
local nxt = { = new:sub(1, n)}
local nn = new:sub(n, n)
for o = 1, #old do
local result
if nn == old:sub(o, o) then
result = prv
else
result = prv..nn
if #nxt <= #result then
result = nxt
end
end
nxt = result
end
prv = nxt
end
return prv
end
function p.Differenze(frame)
local args = getArgs(frame)
mascSing = args or args.m
mascPlu = args or args.mp
femmSing = args or args.f
femmPlu = args or args.fp
desMascPlu = (p.get_inserted_text(mascSing, mascPlu))
desFemmSing = (p.get_inserted_text(mascSing, femmSing))
desFemmPlu = (p.get_inserted_text(mascSing, femmPlu))
desMascSing = (p.get_inserted_text(mascPlu, mascSing))
radice = (p.get_inserted_text(desMascPlu, mascPlu))
return '<span id="FFdms" style="display:none">' .. desMascSing ..'</span><span id="FFdmp" style="display:none">' .. desMascPlu ..'</span><span id="FFdfs" style="display:none">' ..desFemmSing.. '</span><span id="FFdfp" style="display:none">'..desFemmPlu.. '</span><span id="FFrad" style="display:none">' ..radice ..'</span>'
end
return p