OK
AJAX error!

Les forumsGrammalecteVersion simple JS « à plat » pour intégration

Version simple JS « à plat » pour intégration

Bonjour

existe-t-il une version simple (un simple fichier JS) utilisable directement ?

Je désirerai intégrer une fonction de correction/suggestion grammaticale dans une application lourde (i.e. en Qt/C++, via le moteur de Chrome), mais à regarder rapidement le projet n'est pas simple à utiliser (Fossile déjà serait une nouveauté, puis NodeJS, etc).

J'ai bien jeté un œil à la version Firefox mais y récupérer le code nécessiterait pas mal de travail sur des technos qui me sont inconnues (require, etc).

Merci pour toute réponse.
le 06 octobre 2020 à 12:56
Bonjour et bienvenue dans mon enfer,

Non, malheureusement, pas de version “plate” pour JavaScript. Et encore, la situation que vous observez a connu de nombreuses améliorations par rapport à avant, où il y avait 4 ou 5 manières d’importer le correcteur, selon le logiciel auquel il s’intégrait. À présent les “require” ne servent plus que pour NodeJS, mais le paquet NodeJS n’est pas une version officielle du correcteur (disons que c’est expérimental), ce n’est là que parce que ça ne dérange pas.

Dans l’extension pour Firefox, le cœur du correcteur grammatical se trouve dans le dossier “grammalecte” et tout est importé dans le même contexte par le fichier “gce_worker.js”. Ce fichier est la base du Worker utilisé par l’extension. Tout le reste de l’extension ne constitue que l’interface, avec le background qui sert de passe-plats entre le Worker et les différentes parties de l’interface.

Donc, ce n’est pas tout à fait une version “à plat”, mais ça y ressemble, puisqu’on charge tout en vrac dans le même espace (avec importScript).
En théorie, vous devriez pouvoir faire la même chose en vous “inspirant” de cette méthode.

Malheureusement, nous ne pouvons pas faire autrement tant que Firefox ne permet pas d’importer des modules dans un Worker (bugzilla.mozilla.org…). Alors on use d’expédients en attendant que ce soit possible. Et quand ce sera le cas, j’en profiterai pour revoir l’API et harmoniser la version Python et JavaScript. En attendant, on poireaute, et on poireaute depuis très longtemps.

La version NodeJS a été conçue par un contributeur, mais je ne sais pas si elle est toujours fonctionnelle, vu que je ne m’en sers pas du tout. (Aux dernières nouvelles, il y a quelques mois, ça fonctionnait toujours.)
le 06 octobre 2020 à 13:49
En effet cela donne l'impression de fonctionner facilement :-)

Voici ce que j'ai fait :



- téléchargement de : addons.mozilla.org…



- et décompression du zip dans /tmp/snif



- génération du fichier all.json.js contenant tous les fichiers json (sur un shell bash et dans /tmp/snif) :

for fichier in $(find ./grammalecte -iname '*.json'); do echo $(echo $fichier | sed -r 's_/_XXX_g'|sed -r 's/\./YYY/g')=$(cat $fichier);done > /tmp/snif/all.json.js





- création du fichier /tmp/snif/test.js avec le contenu suivant :

"use strict";

helpers.loadFile = function(spf) {
let newName = spf.replace('resource:/', 'YYY').replace(/\//g, 'XXX').replace(/\./g, 'YYY').replace(/-/g, 'ZZZ')
if (globalThis[newName] != undefined)
return JSON.stringify(globalThis[newName]);

console.error('Didn\'t find the required file: '+spf);
return null;
}
if (typeof(exports) !== 'undefined') {
exports.loadFile = helpers.loadFile;
}





- création du fichier /tmp/snif/test.html :

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">

<title>Example</title>


<script type="text/javascript" src="./grammalecte/graphspell/spellchecker.js"></script>
<script type="text/javascript" src="./grammalecte/graphspell/dawg.js"></script>
<script type="text/javascript" src="./grammalecte/graphspell/dic_merger.js"></script>
<script type="text/javascript" src="./grammalecte/graphspell/ibdawg.js"></script>
<script type="text/javascript" src="./grammalecte/graphspell/tokenizer.js"></script>
<script type="text/javascript" src="./grammalecte/graphspell/str_transform.js"></script>
<script type="text/javascript" src="./grammalecte/graphspell/helpers.js"></script>
<script type="text/javascript" src="./grammalecte/graphspell/char_player.js"></script>
<script type="text/javascript" src="./grammalecte/graphspell/lexgraph_fr.js"></script>
<script type="text/javascript" src="./grammalecte/fr/cregex.js"></script>
<script type="text/javascript" src="./grammalecte/fr/gc_functions.js"></script>
<script type="text/javascript" src="./grammalecte/fr/gc_engine.js"></script>
<script type="text/javascript" src="./grammalecte/fr/conj.js"></script>
<script type="text/javascript" src="./grammalecte/fr/gc_rules.js"></script>
<script type="text/javascript" src="./grammalecte/fr/textformatter.js"></script>
<script type="text/javascript" src="./grammalecte/fr/gc_options.js"></script>
<script type="text/javascript" src="./grammalecte/fr/mfsp.js"></script>
<script type="text/javascript" src="./grammalecte/fr/phonet.js"></script>
<script type="text/javascript" src="./grammalecte/fr/gc_rules_graph.js"></script>
<script type="text/javascript" src="./grammalecte/fr/conj_generator.js"></script>
<script type="text/javascript" src="./grammalecte/text.js"></script>
<script type="text/javascript" src="./all.json.js"></script>
<script type="text/javascript" src="./test.js"></script>


</head>
<body>
<p>This is an example of a simple HTML page with one paragraph.</p>
</body>
</html>






Ensuite en console web après avoir chargé le fichier /tmp/snif/test.html dans un navigateur (en m'inspirant du fichier grammalecte/exemple-node.js):
- gc_engine.load()
- var sPhrase = 'Le silences s’amasses Étoile brillantesss';
- gc_engine.parse(sPhrase)


Merci !

PS : je dois par être très doué car je n'ai pas trouvé sur ce forum :
- comment inclure du code (autrement qu'en gras et italique :-()
- comment faire une recherche
le 06 octobre 2020 à 22:26
À noter quand même que mettre ça dans le processus principal n’est pas adéquat si c’est pour autre chose que votre usage personnel, car la correction grammaticale est coûteuse en ressources, et peut faire figer le navigateur, notamment sur un texte long ou un PC lent.

Ce forum n’est pas vraiment calibré pour le code, mais vous pouvez utiliser la balise [ q ].
Pour la recherche, utilisez tout simplement Google.

le 06 octobre 2020 à 22:41
Je n'avais pas pensé à la balise [ q ] car je l'imaginais associée à quote :-)

Pour ce qui est de la ressource je ne m'inquiète pas car :
- soit je fais interpréter le code par QScript sur un autre thread
- soit je passe par chrome, toujours en « à côté », l'affichage étant réalisé par des composants Qt.

Encore merci !
le 06 octobre 2020 à 22:47

Notification par e-mail    0