JSreal - Exemples

JSreal met donc à la disposition de l'usager plusieurs outils:

Les exemples simples qui suivent montrent quelques manières d'utiliser ces outils; ils sont suivis d'une démonstration complète de génération de texte avec JSreal.

Usage direct du lexique

À la base, on peut accéder à l'information du lexique en passant par JSreal; par exemple, le mot "vieux" peut révéler qu'il est antéposé, qu'il devient "vieil" devant une voyelle et que son féminin singulier "vieille" est irrégulier.

Traits tirés du lexique var v = A('vieux')
v.pos() // pre
v.l()   // vieil
v.fs()  // vieille

En connaissant la structure JSON du lexique, il est possible de l'utiliser directement, par exemple pour produire une liste d'adjectifs antéposés ou de mots qui changent de forme devant une voyelle.

Tableau de conjugaison

En plus de l'information contenue dans son lexique, JSreal connaît les règles de déclinaison et conjugaison. Avec ces flexions et les outils de présentation, il est facile, par exemple, de créer un tableau de conjugaison. Soit v le lemme du verbe, f sa forme et pe sa personne:

Génération d'un tableau de conjugaison var v = 'avoir', f = 'p'
var tb = Table()
for (var pe = 1; pe <= 6; pe++) {
  tb.add(TR(TD(
    S(Pro().pe(pe),
      V(v).f(f)
    ).cap(0).a('')
  )))
}

Il aurait été plus grammaticalement correct de spécifier la personne comme allant de 1 à 3 au singulier et au pluriel, mais JSreal accepte aussi les personnes 4 à 6 comme celles du pluriel. Les méthodes cap et a annulent respectivement la majuscule et le point qu'une proposition a lorsque indépendante.

Dénombrement

Il arrive qu'un programmeur veuille simplement exprimer une certaine quantité de quelque chose, par exemple d'un "item", et qu'il doive considérer manuellement les cas avec aucun item, un seul item ou plusieurs. Soit nb le nombre d'items et nbitem la chaîne finale:

Dénombrement d'items en JavaScript var nbitem
if (nb == 0) nbitem = "aucun item"
else if (nb == 1) nbitem = "un item"
else nbitem = nb + " items"

Ce code n'est en rien complexe, mais au-delà des expressions complexes, une des forces de JSreal est de réduire la quantité de code requise dans des situations simples:

Dénombrement d'items avec JSreal var nbitem = N('item').d(nb).num('l')

JSreal crée le nom "item", lui ajoute comme déterminant nb et demande la forme en toutes lettres du nombre. Cette construction produira donc des expressions comme "aucun item", "un item" et "dix-huit items". L'usager aurait pu modifier au préalable, par la ligne suivante, le paramètre qui indique à JSreal la forme par défaut des nombres:

Affectation de paramètre JSreal.param.num = 'l'