Modulo:FormeFlesse

Da Wikizionario, il dizionario a contenuto aperto.

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