Aller à ↓Goto ↓ [FREN]

jsRealB - Documentation

jsRealB est un réalisateur de texte pour l'anglais et le français écrit en Javascript. Il peut être utilisé soit à l'intérieur d'une page web comme celle-ci dont tous les exemples sont réalisés dynamiquement, ou comme module Node.js.

jsRealB is a text realizer for French and English written in Javascript. It can be used either within a web page such as this one whose examples are dynamically realized or as a Node.js module.

Constituants

Constituents

Déclinaisons et conjugaisons

Declension and conjugation

Continuous tense for verbs can obtained by setting the sentence type to .typ({prog:true})

Pronoms

Pronouns

Le pronoms qui sont dans le lexique sont à la 1ère personne du singulier. Pour obtenir les autres, il faut spécifier la personne, le nombre et éventuellement le genre. Ce mécanisme s'applique aussi pour les pronoms me et moi-même et pour le déterminant mon.

Pronouns in the lexicon are at the first person singular. To get the other forms, the gender, the number and the person must be specified. The same option mechanism can be used for the pronouns mine and myself and for the determiner my.

Mise en forme

Formatting

La ponctuation disponible dépend du contenu des règles qui indiquent l'espacement avant et après chaque signe.

Available punctuation depends on rules that define the spacing to add before and after the punctuation sign.

Modification du syntagme nominal

Noun phrase modification

Modification du type de phrase

Sentence type modification

Les phrases sont construites à la forme active, mais il est possible d'en modifier le type pour obtenir des phrases négatives, progressives, interrogatives ou passives. Ces modifications sont de la forme S(...).typ({...}) Il est possible de combiner plusieurs modifications en spécifiant plusieurs paires clés-valeurs dans l'objet paramètre de type.

Sentences are built at the active voice, but their type can be modified in order to get negative, progressive, interrogative or passive sentences. These modifications are indicated by S(...).typ({...}) Modifications can be combined by specifying multiple key value pairs in the object which is the parameter of type.

Date

Date

DT accepte en paramètre soit une date sous forme d'une chaîne de caractères ou un objet Javascript Date.La chaine de caractères en entrée doit être dans un format reconnu par la méthode Date.parse(), donc dans le format IETF-compliant RFC 2822 ou ISO8601.

Attention: Le comportement de l'objet Date() diffère selon le navigateur. Il est fortement conseillé de fixer le fuseau horaire sinon il sera déterminé par le navigateur (voir ci-dessous).

DT(...) takes as parameter either a date as a String or a Date javascript object.The input string must be a recognized format by Date.parse(): either IETF-compliant RFC 2822 or ISO8601 format.

Warning: The behavior of Date() depends on the browser. The timezone should be specified otherwise it might be given a different value according to the browser.

Nombres

Numbers

On crée un nombre avec NO(...) dont le paramètre est soit un nombre entier ou réel ou une chaîne qui peut être analysée comme un nombre.

A number is created with NO(...) whose parameter is either a number (integer or real) or a string that can be parsed as a number.

Javascript

Javascript

.clone()

Comme les options modifient le constituant dans toutes les utilisations subséquentes, il est souvent pratique de pouvoir garder la version originale pour la réutiliser et la modifier indépendamment. L'option clone() permet de copier un syntagme pour utilisation dans des contextes différents.

As options modify the constituent for all following use, it is often useful to keep the original constituent and modify it independently. The clone() option allows reusing a constituent in different contexts.

.add(element,position)

Ajout d'un nouveau syntagme element comme enfant à un syntagme existant. Le paramètre entier position est facultatif et spécifie la position (à partir de 0) dans le syntagme. Par défaut, l'élément est ajouté à la fin.

Add a new phrase element as a child of an existing phrase. The second optional parameter position is an integer that specifies its position (counting from 0). By default, the element is added as the last child.

.toSource()

Cette fonction retourne une version chaîne d'une expression jsRealB, ceci peut être utile pour la mise au point d'une expression complexe.

This function returns a string version of a jsRealB expression, this can be useful for debugging complex expressions.

getLanguage()

Cette fonction retourne le langage courant de réalisation: "fr" pour le français et "en" pour l'anglais.

This function returns the current realization language: "fr" for French and "en" for English.

Chargement dans une page web

Loading in a web page

Une des versions de jsRealB devrait être chargée avec un élément script selon le type de réalisations prévues.

One version of jsRealB should be loaded with a script element according to the expected type of realization.

jsRealB-en.js
jsRealB-dme.js
pour la réalisation de phrases en anglais. en utilise un lexique réduit d'environ 3000 entrées les plus courantes de l'anglais; dme utilise un lexique beaucoup plus complet d'environ 37 000 mots.
for English realization. en uses a small lexicon of arount 3 000 entries; dme uses a bigger lexicon of arount 37 000 words.
jsRealB-fr.js
pour la réalisation de phrases en français. fr utilise un lexique réduit d'environ 3000 entrées les plus courantes du français.
for French realization. fr use a small lexicon of about 3 000 most common words of French.
jsRealB-enfr.js
jsRealB-dmefr.js
pour la réalisation de phrases en anglais et en français. enfr utilise un lexique réduit d'environ 3 000 entrées les plus courantes de l'anglais et un lexique de 3 000 mots du français; dmefr utilise un lexique beaucoup plus complet d'environ 37 000 mots de l'anglais et un lexique de 3 000 mots du français.
for English and French realization. enfr uses two small lexicons for both French and English; dmefr uses a big lexicon for English and a small lexicon for French.
Il est possible d'appeler ces fonctions aussi souvent que nécessaire pour changer le langage de réalisation courant.These functions can be called as often as necessary to change the current language.

Idéalement, vous installerez votre propre version de jsRealB à partir des sources du GitHub et vous la référencerez depuis l'élément script. Mais vous pouvez aussi télécharger une version déjà minifiée à partir de ce répertoire.

Ideally you should install your own version of jsRealB from the GitHub sources and you will refer to it using a script element. But you can also get minified versions from this directory.

Des exemples d'intégration dans une page web peuvent être trouvés à la section Démonstrations de cette page

Examples of web page integration can be found at the Demonstrations section of this page

Module Node.js

Node.js Module

Les versions de jsRealB décrites à la section précédente peuvent aussi être utilisées avec node.js en utilisant une instruction de la forme jsRealB=require("...")

The jsRealB versions can also be used with node.js with an instruction like jsRealB=require("...")

Un exemple simple d'utilisation du module Node.js est ce filtre Unix qui accepte une expression jsRealB sur une seule ligne et retourne sa réalisation en anglais.

A simple example of the use of the Node.js module is this Unix filter which transforms a jsRealB expression on a single line and returns the corresponding English realisation.

Trucs pratiques:

Useful tricks:

Extension du vocabulaire

Vocabulary extension

Il est possible d'ajouter de nouveaux entrées ou d'ajouter des informations à une entrée existante au lexique courant à l'aide de la fonction addToLexicon(entrée,infos). Pour chaque entrée, il faut indiquer la ou les catégories; pour chaque catégorie, en indiquer les propriétés et la ou les tables de déclinaison ou conjugaison correspondantes. Par exemple, addLexicon("jsRealB",{"N":{"g":"m", "pe":3, "tab": ["nI"]}) ajoutera le mot jsRealB comme nom masculin invariable. Cette fonction peut aussi être appelée avec un seul paramètre qui est un objet dont la clé est le lemme. L'exemple précédent peut donc s'écrire: addToLexicon({"tsunami":{"N":{"tab":["n1"]}}}).

Pour trouver les informations à ajouter, le plus simple est de copier les informations d'un mot du lexique qui se conjugue ou se décline de la même façon. L'IDE de jsRealB permet de consulter les informations du lexique; la fonction javascript getLexicon(entrée) retourne les valeurs courantes d'une entrée. Pour enlever une entrée, il faut faire un appel du genre addToLexicon(entrée,undefined).

New entries can be added to the current lexicon or new information can be added to an existing entry using the addToLexicon(entry,new informations) function. For each entry, its categories must be given; for each category, their properties and the declension or conjugation tables must be specified. For example, addToLexicon("tsunami",{"N":{"tab":["n1"]}}) will add the word tsunami as a noun. This function can also be called with a single object argument in which the lemma is the key. The preceding example can also be written as: addToLexicon({"tsunami":{"N":{"tab":["n1"]}}}).

In order to find the informations to add, the simplest way is to copy the lexicon information for a similar word already in the lexicon. The jsRealB IDE provides access to the lexicon information; getLemma(entry) also returns the lexical information of an entry. To remove an entry a call of the form addToLexicon(entry,undefined) should be used.

Sélection de variantes

Variant selection

La fonction oneOf(e1,e2,...) (où ei est est une valeur) choisit un ei au hasard. En jsRealB, ces éléments sont souvent des constructeurs correspondant à des structures de phrases différentes. Si e1 est une liste alors la sélection est faite dans cette liste, en ignorant les autres paramètres.

Pour éviter que tous les éléments soient évalués avant la sélection, il suffit de fonctionaliser l'expression en une fonction sans paramètre en la préfixant par ()=>. Une fois l'élément choisi, oneOf vérifie si la valeur est une fonction et si c'est le cas, il retourne le résultat de l'appel. Par exemple, ofOne(()=>N("amour"),()=>N("amitié")) permet de choisir entre les deux noms sans évaluer les deux constructeurs. Dans ce cas, très simple, il aurait été aussi possible d'écrire N(ofOf("amour","amitié")).

The function oneOf((e1,e2,...) (where ei is a list) selects a random element of ei. In jsRealB, these elements are often constructors corresponding to different phrase structures. If e1 is a list, the selection is performed in this list, ignoring other parameters.

To avoid the evaluation of all elements before the selection, it is possible to functionalize a expression into a function with no formal parameter by prefixing it with ()=>. Once the element is selected, oneOf checks if the value is a function and, if it is so, it returns the value of the called function. For exemple, oneOf(()=>V("love"),()=>V("like")) allows choosing between the two verbs without evaluating both constructors. In this simplistic case, this could have also been written as V(oneOf("love","like")).

Informations complémentaires

More Information