NAWAK

De Lea Linux
Aller à la navigation Aller à la recherche

Catgéorie:Wiki Léa

NAWAK

NAWAK 0.1 User's guide

par Jean-Christophe

NAWAK : Another Web Authoring Kit.

Introduction

Ca y est, je l'ai écrite cette doc ! ;) Bon ben alors c'est la doc de mon Web Meta Langage et de son compilateur, NAWAK, écrit en langage PERL.

Concepts

NAWAK se comporte comme un compilateur, c'est à dire qu'il ne traite qu'un seul fichier source (un fichier HTML standard) pour en faire un fichier résultant (également, bien sûr, un fichier HTML standard). Pour générer un site web complet, on lance autant de fois NAWAK que nécessaire pour générer chaque page du site. Une méthode recommandée pour ce faire est d'utiliser Make, qui gère les dépendances entre fichiers et permet de relancer la génération de toute page pour laquelle un fichier dont elle dépend aurait été modifié.

NAWAK applique différentes templates (ou modèles) au fichier source afin de produire le fichier résultant. Les templates sont de simples fichiers HTML et peuvent comporter (c'est même recommandé ;) des tags HTML spéciaux qui seront parsés et interprétés par NAWAK en fonction des données présentes à la fois dans les templates et dans le fichier source.

Ces tags se présentent sous la forme de commentaires SGML, commençant et se terminant par '%', et comprenant une commande interprétée par NAWAK. Par exemple, le tag <!--%generated format="jj-mm-aaaa"%--> se verra remplacé lors de la compilation par la date de génération, au format donné.

Cette façon de faire permet d'utiliser un logiciel classique pour éditer les pages source, et même les templates. Par exemple, vous pouvez utiliser Netscape composer ou StarOffice pour ce faire. Cela permet de gagner du temps dans la réalisation du site, ainsi que de changer facilement de look un site entier, en ne modifiant que quelques fichier (les templates) puis en relançant la génération. De plus la souplesse et l'ouverture de NAWAK permettent de faire virtuellement n'importe quoi (!) :)

Pré-requis

Les pages source doivent respecter certains prérequis afin de contenir les bonnes données au bon endroit, afin que NAWAK s'y retrouve.

Les consignes données sur cette page résument bien ce qu'il faut faire pour :

  • une génération optimale du site,
  • une facilité de réutilisation des fichiers source (pour évolution, ou changement de look).

Une page spécifique concernant uniquement les pré-requis sur les pages pour NAWAK sera écrite plus tard, mais en attendant, la page des contributeurs est largement suffisante.

Les templates

Cinq type de templates peuvent être utilisées simultanément par NAWAK :

  • la template de définition de nouveaux éléments (variables globales, nouveaux tags...), optionnelle,
  • la template d'entête HTML (ce qui est compris entre le début d'un fichier HTML jusqu'à la balise </HEAD> comprise), optionnelle,
  • la template d'entête de page, optionnelle,
  • la template de corps (également appelée template de base), obligatoire,
  • la template de pied de page, optionnelle.

Voici ce qu'il advient de ces templates dans la page générée. D'abord la template de définition de nouveaux éléments est interprétée, et peut permettre de positionner des variables globales, de définir de nouveaux tags... Voir la partie traitant de l'extensibilité de NAWAK. Remarque : toute éventuelle sortie générée par cette template sera ignorée.

Fichier résultant Commentaires
<HTML>
<HEAD>
...
</HEAD>
En tête du fichier HTML, se trouve le résultat de la template d'entête HTML (comme son nom l'indique ;), c'est à dire ce qui se trouvait entre les tags <BODY> et </BODY> de cette template, parsé et interprété par NAWAK.
Si cette template n'est pas définie, NAWAK génère une entête par défaut.
<BODY ... >
Dans sa version actuelle, NAWAK copie ici le contenu du tag <BODY...> de la template de base.
en-tête de page Si elle existe, contenu de la template d'entête de page, parsé et interprété.
corps de la page Contenu de la template de corps (ou template de base), parsé et interprété.
pied de page Si elle existe, contenu de la template de pied de page, parsé et interprété.
</BODY>
</HTML>
Généré.

Remarques :

  • A cause de sa structure spéciale (les tags <html>, <head>, </head>... dans son corps), la template d'entête HTML doit être éditée dans un simple éditeur de texte (voir annexe). Les autres templates peuvent être éditées dans un logiciel standard d'édition de pages Web, mais il est recommandé de vérifier leur contenu avec un éditeur de texte, car ces logiciels ne font pas toujours ce que vous pensez :-(
  • Le "contenu de la template" cité dans le tableau correspond à ce qui se trouve dans le corps de la template (c'est-à-dire entre ses tags <body> et </body>), qui est parsé et dont les tags spéciaux sont interprétés par NAWAK.

Usage: nawak -s sourcefile

      -o outputfile
      [-a headtemplate]
      [-t headertemplate]
      -b basetemplate
      [-f footertemplate]
      [-e newelementstemplate]
      [-D variable="valeur",...]

nawak -h

      prints this help

Entre crochets : facultatif.

Exemple de ligne de commande (sur une seule ligne) :

[jice@taz ~jice/site/-src/docs]$ nawak -s contribs.htm -o ../../docs/contribs.htm -a ../_templates/head.htm -t ../_templates/headertmpl.htm -f ../_templates/footertmpl.htm -b ../_templates/chaptmpl.htm -D root="../"

La ligne de commande ci-dessus signifie : générer le fichier ../../docs/contribs.htm à partir du fichier source contribs.htm avec comme templates, respectivement :

  • pour l'entête HTML : ../_templates/head.htm,
  • pour l'entête de page : ../_templates/headertmpl.htm,
  • pour le corps : ../_templates/chaptmpl.htm,
  • pour le pied de page : ../_templates/footertmpl.htm,

ceci en positionnant la variable $root à la valeur "../". La possibilité de positionner cette variable peut par exemple être utilisée dans les templates afin de gérer des chemins relatifs par rapport au répertoire courant. Par exemple, la même template pourra être utilisée dans tout le site, quelque soit le répertoire, si on utilise une variable $root et que l'on adapte les tags comme : <IMG SRC="<!--%$root%-->images/titre.png" ALT="Titre"> ou <!--%inserefichier nomfichier=$root."_templates/sections.htm"%-->

Le Métalangage

Le langage de NAWAK est composé de tags qui se présentent sous la forme de commentaires SGML, commençant et se terminant par '%', et comprenant une commande interprétée par NAWAK, utilisant un ou plusieurs arguments. Les arguments sont entourés de guillemets (") ou de quotes ('), et peuvent même ne pas être entourés s'ils sont constitués d'un seul mot :

<!--%commande (nom_argument=["|']valeur_argument["|'])*%-->

Par exemple, le tag <!--%generated format="jj-mm-aaaa"%--> se verra remplacé lors de la compilation par la date de génération, au format donné (commande = generated, augument = format).

Un fichier source, une template... peut contenir n'importe quoi, NAWAK le lira, trouvera ces tags (c'est ce qu'on appelle parser le fichier), et remplacera ces tags par la chaîne de caractère qu'ils ont produite (c'est ce qu'on appelle interpréter les tags).

Certains de ces tags utilisent des variables, dont on va voir ci-dessous la définition.

Les variables

Les variables sont définies dans l'en-tête HTML du fichier source, via des tags META. Par exemple, le tag suivant : <META NAME="Author" CONTENT="Jean-Christophe Cardot"> définit une variable $author contenant "Jean-Christophe Cardot".

Les variables suivantes sont indispensables car utilisées par les tags spécifiques : Nom de l'auteur de la page :

 <meta name="Author" content="Jean-Christophe Cardot">

Date de création du fichier :

 <meta name="created" content="19991102;00000000">

Dernière personne ayant modifié le fichier :

 <meta name="changedby" content="JCC">

Date de dernière modification du fichier :

 <meta name="changed" content="19991225;00000000">

Les dates sont construites de la manière suivante : année sur 4 chiffres, suivie du mois sur 2 chiffres, puis le jour sur deux chiffres. Enfin un point virgule et huits chiffres quelconques.

On peut également définir autant de variables que l'on souhaite, qui pourront servir par la suite, par exemple en étant appelées dans une template, ou bien dans certains tags. Les deux exemples ci-dessous montrent ce qu'on peut faire avec les variables :

Dans l'entête HTML du fichier source, on a :

<meta name="ressources" content="_ress_contribs.htm">.

La variable $ressources ainsi définie peut être utilisée dans une template par un tag : qui insère à sa place le contenu du fichier dont le nom est dans la variable $ressources. Cela permet d'insérer un fichier différent pour chaque fichier source au même endroit de la template. Pour faire apparaître des remerciements éventuels à la fin de chaque chapitre, on peut définir dans l'entête HTML du fichier source :

<meta name="merci" content="Merci à BooK pour son aide.">,

le contenu de cette variable sera alors utilisé dans la template des chapitres par ce tag placé vers la fin du template :

<!--%perlcode
 print qq(<hr width="100%">$merci<br>) if $merci; %-->,

qui affiche une ligne horizontale suivie du message de remerciement, uniquement si celui-ci est défini.