Moniteur d'Initiation à l'AlgorithmiqueMonia Suite version 0.38.97 - novembre 2012 |
Nommage et arborescence - Descripteur - Distribution et installation - Suppression
MoniaSuite supporte l'ajout de modules additionnels (plugins). Sachant que MoniaPL utilise le compilateur FPC (Free Pascal Compiler) pour transformer le Pseudo-Langage en code exécutable, le code des modules additionnels doit être compatible avec ce compilateur.
Un module additionnel est en général constitué d'un ensemble de définitions liées à un domaine spécifique : protocole de communication, périphérique matériel, …
Cet ensemble de définitions peut regrouper des constantes, des types de données, des procédures et des fonctions qui viendront étendre les capacités du Pseudo-Langage reconnu par les outils Monia.
Un plugin Monia est constitué d'un fichier descripteur d'extension obligatoire .dta, d'une documentation HTML et du code d'implémentation de ses ressources. Il peut être complété par des exemples de programmes.
Après son installation, la prise en compte d'un plugin est réalisée par un simple redémarrage de MoniaOrg et de MoniaPL…
Par convention, chaque module additionnnel est identifié par un préfixe en majuscules si possible court mais explicite suivi d'un caractère de soulignement (underscore).
Exemples : LS_
pour liaison série, JS_
pour joystick (manette de jeu), …
Important : Ce préfixe doit impérativement être spécifié comme premier élément de la rubrique DOC
(voir ci-dessous)
pour que le module soit activable au sein de MoniaPL. Dans le cas contraire, le module, bien que présent dans le menu d'Aide
,
serait absent de la liste de sélection du menu Exécuter
…
Un module additionnnel doit par ailleurs respecter une arborescence spécifique pour l'organisation des fichiers qu'il contient,
soit pour le plugin d'indicatif XYZ_
et de répertoire de base Plugins/XYZ/
:
Plugins/XYZ/XYZ_Plugin.dta # descripteur du module doc/XYZ_Plugin.html # page de documentation HTML images/*.png # images de documentation HMTL exemples/XYZ_*.pl # exemples de programmes fpc/units/plugins/XYZ_*.inc # source Pascal à inclure XYZ_*.o # modules objets XYZ_*.ppu # unité Pascal précompilée src/* # sources du plugin
À noter que si le module s'appuie sur des ressources proposées par la RTL (Run Time Library) de FPC, il peut être réduit au fichier descripteur accompagné de la documentation… Cette situation permet donc de franciser simplement des parties de la RTL pour enrichir le Pseudo-Langage.
Le fichier .dta de description d'un plugin Monia décrit les fonctionnalités du module : types de données, constantes, bibliothèque de procédures et fonctions, documentation, et contraintes d'édition de liens...
La rédaction de ce fichier est contrainte par les règles suivantes :
#
(caractère dièse) ;;;
(double point-virgule) ;TYPE | CONST | FUNC | COLOR | DOC | INC | UNIT
;=
(égal) ;Syntaxe pour chacune des rubriques :
Les expressions rationnelles (RegExp) sont utilisées par la colorisation syntaxique de l'éditeur MoniaPL.
→ TYPE="XYZ_MonType";;"\bXYZ_MONTYPES?\b"
(l'expression rationnelle peut prendre en compte la mise au pluriel)
→ CONST="XYZ_MaConst";;"\bXYZ_MACONST\b"
→ FUNC="XYZ_MaFonction";;"\sXYZ_MAFONCTION(?=\s)";;"XYZ_MaFonction : type_retour ;"
→ FUNC="XYZ_MaProcédure()";;"\sXYZ_MAPROC[Eé]DURE(?=\()";;"XYZ_MaProcédure( v : type ) ;"
(le nom est terminé par une paire de parenthèses)
FUNC
→ COLOR="#RRGGBB"
(couleur prise en compte par le tableau d'aide F11 des applications MoniaSuite)
→ DOC="XYZ";;"Mon Plugin";;"XYZ_Plugin.html"
(le préfixe rend le module activable via le menu Exécuter | Modules liés de MoniaPL)
(la documentation sera accessible via le menu Aide | Modules additionnels de MoniaPL)
→ INC="XYZ_monplugin.inc"
(le fichier .inc doit exister)
→ UNIT="XYZ_monplugin"
(l'unité est spécifiée sans son extension .ppu, mais le fichier .ppu doit exister)
Un module additionnel doit impérativement respecter l'organisation des fichiers décrite plus haut. Cette arborescence doit être compressée au format ZIP ou TAR.GZ pour distribution.
Sous Linux et Windows, l'archive peut être directement décompressée dans le répertoire d'installation de MoniaSuite.
Sous Mac OS X, TODO
Note aux développeurs : pour la mise au point d'un module, MoniaPL peut être lancé avec l'argument "-v". Cette option ouvre un terminal de suivi d'exécution bien pratique qui permet notamment de suivre l'intégralité des messages générés par la chaîne de développement… :-)
Un module additionnel peut être facilement désactivé, sans rien désinstaller, via le menu
Exécuter | Modules liés
qui permet de sélectionner un à un les modules disponibles.
Une fois désactivé, le plugin est toujours pris en charge par le système de colorisation de l'éditeur, sa documentation est toujours accessible, mais son code n'est plus lié lors de la fabrication des programmes.
Pour désinstaller définitivement un plugin, il faut supprimer à minima son fichier .dta (les éventuels fichiers
.inc, .o et .ppu qui lui sont associés peuvent aussi être enlevés du sous-répertoire fpc/units/plugins
,
mais attention à ne pas supprimer d'autres fichiers par erreur…).