Modulo:FormeFlesse
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:FormeFlesse/man (modifica • cronologia)
Sandbox: Modulo:FormeFlesse/Sandbox (modifica•cronologia) • Test: Modulo:FormeFlesse/Test (modifica•cronologia)
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.
Sintassi
{{#invoke: FormeFlesse | Differenze | MaschileSingolare | MaschilePlurale | FemminileSingolare | FemminilePlurale }}
Esempio
{{#invoke: FormeFlesse | Differenze | wikipediano | wikipediani | wikipediana | wikipediane }}
- scomporrà le parole in
- wikipedian
- o
- i
- a
- e
Funzione pratica
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 |
Richiamare la funzione da un altro modulo
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:
- m per il maschile singolare
- mpl per il maschile plurale
- f per il femminile singolare
- fpl per il femminile plurale
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[o] = ""
end
for n = 1, #new do
local nxt = {[0] = 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[o-1]
else
result = prv[o]..nn
if #nxt[o-1] <= #result then
result = nxt[o-1]
end
end
nxt[o] = result
end
prv = nxt
end
return prv[#old]
end
function p.Differenze(frame)
local args = getArgs(frame)
mascSing = args[1] or args.m
mascPlu = args[2] or args.mp
femmSing = args[3] or args.f
femmPlu = args[4] 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