QuickModels

Syntaxe

La syntaxe de QuickModels se distingue, parmi un grand nombre de moteurs de modèles (template engine), par l'utilisation d'un système de balises très simple et clair et qui, détail non négligeable, n'est pas intrusif et respecte les normes Html et XHtml du consortium W3C.

Les balises de QM se basent en effet sur l'utilisation des commentaires Html, c'est à dire que l'ensemble des balises QM doivent s'inscrire entre les balises <!-- et -->, ce qui, si pour une raison quelconque certaines ne pouvaient être remplacées par du contenu visible, elles resteraient invisibles au visiteur du site.

Fonctions et délimiteurs

QuickModels propose quatre fonctions principales et une syntaxe particulière de balises adaptées à chacune des ces fonctions.

Cette singularité des balises de QM a un double avantage : tout en permettant une écriture trais rapide et aisée des modèles, elle améliore sensiblement leur lecture et compréhension, rendant les modèles Html réalisés pour QuickModels très facilement adaptables et réutilisables.

Les quatre fonctions de base de QM et leurs balises sont les suivantes :

FonctionsBalise PrincipaleBalise CentraleBalise Finale
Affichage des variables<!--{variable}--> - -
Inclusion des fichiers<!--[chemin]--> - -
Blocs conditionnels<!--(condition)--><!--(else)--><!--(end)-->
Blocs de boucles<!--<tableau>--><!--<valeur>--><!--<fin>-->

Comme nous le montre ce tableau, chaque fonction bénéficie d'une syntaxe de balise particulière, où les délimiteurs changent pour une meilleur utilisation et lecture des modèles réalisés avec QuickModels.

Résumons donc la syntaxe de ces balises et l'utilisation des différents délimiteurs, toujours à l'intérieur des commentaires Html <!-- et --> :

Les options

Les balises dédiées à l'affichage des variables et à l'inclusion des fichiers accèptent une option supplémentaire modifiant le comportement de QM et l'affichage final de la page Html.

Ainsi, la balise pour les variables peut recevoir en complément une option idiquant à QM d'utiliser son contenu comme séparateur pour l'affichage des tableau de données (array), cette option s'utilise de la manière suivante : <!--{variable}{séparateur}-->, voir dans les exemples concernant les tableaux (array) pour plus amples informations.

De même, la balise d'inclusion peut recevoir une option indiquant à QM de ne pas effectuer les traitements de conversion dans les fichiers inclus, même syntaxe que pour les variables, hormis les délimiteurs, à savoir : <!--[chemin][option]-->, voir dans les exemples la partie consacrée aux inclusions pour plus de détails.

Les langues

Comme vous l'avez certainement remarqué dans le premier tableau, les balises pour les conditions et pour les boucles séparent les différentes parties à traiter et à afficher avec des mots réservés comme "else", "end", ou "valeur", "fin", etc., ces mots peuvent être donc utilisés indiférement en anglais et en français, ou avec une notation abrégée et plus universelle, voici un tableau de correspondances :

UtilisationBalise PrincipaleLangueBalise CentraleBalise Finale
Conditions<!--(condition)-->anglais<!--(else)--><!--(end)-->
français<!--(sinon)--><!--(fin)-->
universel<!--(s)--><!--(n)-->
Boucles<!--<tableau>-->anglais<!--<value>--><!--<end>-->
français<!--<valeur>--><!--<fin>-->
universel<!--<v>-->
<!--<val>-->
<!--<n>-->

Les noms

Les balises pour les blocs conditionnels et pour les blocs de boucles ont parfois besoin d'être nommées, notamment pour les structures imbriquées.

La syntaxe est simple, chaque élément du bloc devra être complété du nom de votre choix, il faut seulement s'assurer qu'il n'est pas utilisé ailleurs et n'utilser que des caractères alphanumériques de base pour les noms (pas d'accents, pas de ponctuation, pas d'espaces et pas de caractères spéciaux).

FonctionsBalise PrincipaleBalise CentraleBalise Finale
Blocs conditionnels<!--(condition)(nom)--><!--(else)(nom)--><!--(end)(nom)-->
Blocs de boucles<!--<tableau><nom>--><!--<val><nom>--><!--<end><nom>-->

Structures imbriquées

Les balises correspondantes aux blocs conditionnels et aux blocs de boucles peuvent être étendues, par un balisage nommé, afin de gérer les cas des structures imbriquées, voici un exemple de blocs conditionnels imbriqués, pour bien voir les possibilités offertes par cette syntaxe, avec les boucles également, rendez-vous dans les exemples correspondants.

<div>
<!-- (condition)(test_1) -->

<!-- (condition)(test_2) -->
<p>Affichage si "test_1" et "test_2" sont vrais</p>
<!-- (else)(test_2) -->
<p>Affichage si "test_1" est vrai et "test_2" est faux</p>
<!-- (end)(test_2) -->

<!-- (sinon)(test_1) -->
<p>Affichage si "test_1" est faux</p>
<!-- (fin)(test_1) -->
</div>

QuickModels - 0.01774 - sico