Modulo:La-conj/man

Da Wikizionario, il dizionario a contenuto aperto.

Questa è la pagina di documentazione per Modulo:La-conj

Questo modulo costituisce il codice di funzionamento del Template:La-conj e crea, in base ai parametri inseriti in quest'ultimo, la tabella di coniugazione dei verbi latini.

Si compone di una funzione principale, p.laconj (richiamata direttamente nel template) e di quattro funzioni accessorie (p.nodiacritic, p.over, p.wiki, e p.alts) che sono utilizzate solo all'interno della funzione principale per abbreviarne il codice (ad es., la funzione p.wiki rende il suo argomento un wikilink). Le sezioni seguenti illustrano il loro funzionamento, iniziando da quella principale.

Questo modulo è stato creato nel luglio 2016 a partire dal modulo:It-conj, a sua volta derivato dal corrispondente modulo di en.wikt, la cui cronologia riporta i relativi autori (NB: successive modifiche apportate tanto su en. quanto su it. hanno reso i due moduli molto diversi fra loro, per cui i relativi template potrebbero comportarsi in modo molto differente). Rispetto ai fratelli Modulo:It-conj e Modulo:Fr-conj il modulo è molto complesso (e in parte ancora work in progress) fondamentalmente perché il latino è una lingua MOLTO complessa da gestire.

Funzione p.laconj[modifica]

È la funzione principale del modulo; interpreta i parametri inseriti nel template (coniugazione, temi del presente, perfetto, supino e infinito, tipologia del verbo ed eventuali forme irregolari) e in base ad essi costruisce la tabella che ne costituisce l'output. La funzione internamente è suddivisibile in sottosezioni identificate nel modulo dai -- commenti; tali sottosezioni vengono di seguito brevemente descritte separatamente.

La prima sottosezione definisce le variabili passate al modulo dal template:

  • coniug : la coniugazione del verbo (1, 2, 3, 3-io o 4); corrisponde al parametro |coniug = del Template:La-conj
  • temapres : il tema del verbo al presente; corrisponde al parametro |temapres = del Template:La-conj
  • temaperf : il tema del verbo al perfetto; corrisponde al parametro |temaperf = del Template:La-conj
  • temasup : il tema del verbo al supino; corrisponde al parametro |temasup = del Template:La-conj
  • temainf : il tema del verbo all'infinito; corrisponde al parametro |temainf = del Template:La-conj
  • tipo : la tipologia del verbo (deponente, semideponente o privo di passivo); corrisponde al parametro |tipo = del Template:La-conj
  • vi è inoltre un'ulteriore variabile, para , richiamata dal Template:La-paradigma

Successivamente vengono definite le variabili interne al template, che saranno poi codificate successivamente: ad es. infpres per la voce verbale all'infinito presente, pres1s per la prima persona singolare del presente indicativo, perf1s per la prima persona singolare del perfetto e così via; se si aggiunge una nuova variabile è bene aggiungerla anche a tale lista, altrimenti potrebbe risultare nulla.

Segue poi la costruzione delle voci verbali standard: in base alla coniugazione (coniug) il modulo genera le stringhe per le varie forme flesse unendo radice (tema...) e relativa uscita: ad es. se la coniugazione è la prima (if coniug = "1"), pres1s = stem.. "ō" (laudō); perf1s = stem.. "ī" (laudī) e così via per le quattro coniugazioni ed eventuali casi particolari. Il modulo gestisce anche le uscite per le forme passive.

Da notare che le uscite hanno i segni di lunga e breve (), il modulo crea poi i link corretti ai lemmi senza diacritici grazie alla funzione p.nodiacritic descritta più avanti.


Nella sezione --in base al parametro "tipo"... il modulo gestisce appunto i verbi deponenti, semideponenti o privi di passivo, modificando le voci verbali di conseguenza (il tutto è spiegato nei commenti del modulo e dovrebbe essere comprensibile)

Nella sottosezione identificata da -- Recupera le eventuali forme irregolari o varianti.., le stringhe per le voci verbali così create vengono riunite in stringhe uniche: la funzione p.over sostituisce la forma flessa generata automaticamente con quella eventualmente inserita manualmente nel template, se presente; la funzione p.alts aggiunge alla forma flessa generata automaticamente quella eventualmente inserita manualmente, se presente. Ad es. per il presente indicativo:

  • pres1s = p.over(pres1s,args["pres1s"]) -> se nel template è inserito il parametro "pres1s=", viene sovrascritto a quello generato automaticamente
  • pres1s = p.alts(pres1s, pres1s2) -> se nel template è inserito il parametro "pres1s2=", viene aggiunto accanto a quello generato automaticamente

Vi è poi la sezione -- costruisce il paradigma del verbo richiamando le relative voci verbali e seguenti, che genera la stringa del paradigma inserita poi nella tabella di coniugazione e richiamata dal Template:La-paradigma.

Infine, nella sottosezione -- Costruisce la tabella di coniugazione il modulo costruisce la tabella (conj) e vi inserisce le voci verbali precedentemente generate. Il modulo realizza due diverse tabelle in base al parametro tipo : se il verbo è deponente, semideponente o privo di passivo (ovvero if tipo == "dep" or tipo == "semidep" or tipo == "nopass") il modulo genera una tabella priva delle sezioni per il passivo, altrimenti (else, riga 622) genera la tabella completa.

Il modulo restituisce la relativa tabella come output (return conj).

Funzione p.nodiacritic[modifica]

La funzione p.nodiacritic (p.nodiacritic(x)) rimuove i diacritici di lunga e di breve per generare i link ai lemmi del wikizionario (che, nel caso del latino, DOVREBBERO essere senza diacritici). In pratica se si scrive puĕr la funzione restituisce puer

Funzione p.over[modifica]

La funzione p.over (p.over(x,over)) serve per sovrascrivere l'eventuale voce verbale irregolare (identificata dal suo secondo argomento, over), se definita, a quella generata automaticamente (identificata dal primo argomento x). Ad esempio, all'interno della funzione principale il codice

  • pp = p.over(pp,args["pp"])

cerca l'eventuale parametro "pp=" (participio passato) nel template; se questo è definito lo rimpiazza alla forma predefinita, se non lo è restituisce invece quest'ultima.

Funzione p.wiki[modifica]

La funzione p.wiki (p.wiki(x)) rende il suo argomento, x, un wikilink, con "pipe" alla sezione Latino. In pratica, nel modulo, scrivere p.wiki(qualcosa) equivale al wikicodice [[qualcosa#Latino|qualcosa]].

Inoltre, la funzione controlla, tramite la funzione standard di Scribunto mw.title.new(x).exists (si veda anche qui) se la pagina a cui punta tale link esiste o meno (funziona in modo molto simile alla funzione parser ifexist del codice mediawiki). Se la pagina non esiste, aggiunge al wikilink la Categoria:Verbi latini con forme da scrivere, e/o la Categoria:Verbi latini da scrivere se ad essere rosso è il link verso la forma all'infinito.

Funzione p.alts[modifica]

La funzione p.alts (p.alts(x, y)) aggiunge l'eventuale variante alternativa (identificata dal suo secondo argomento, y), se definita, accanto a quella generata automaticamente (identificata dal primo argomento x), separandola con una virgola. Ad esempio, all'interno della funzione principale, il codice

  • pp = p.alts(pp, pp2)

cerca l'eventuale parametro "pp2=" (variante del participio passato) nel template; se questo è definito lo aggiunge al seguito di quella base, se non lo è restituisce invece solo quest'ultima.