ven. 24 mars 2023

Qlam

Qlam est l'application écrite en C qui sert à maintenir ce blog. Elle utilise un langage de balisage pour produire du code html. Elle offre aussi la possibilité de d'organiser les pages et la navigation entre elle. Qlam n'utilise ni base de données ni de langage sur le serveur. Il produit donc des pages html purement statiques. Ce logiciel s'adresse à des utilisateurs qui ont de bonnes notions de html et de css.

Documentation

On peut saisir du code html partout où l'on veut. Le code <balise ...> ou </balise> est interprété comme du code html dès lors que balise est une balise clé html (i.e a, abbr, acronym, ... ), sauf dans les parties code.

Entête <head>

Qlam se charge de créer une entête minimale de la page. On peut y ajouter des balises <meta> ou des inclusions de style css ou de script js. L'entête prend fin lorsque Qlam rencontre la commande #title ... qu'il traduit en <title> ... </title>. De plus Qlam utilise l'argument de la commande #title pour créer le titre la page dans le <body> (i.e. <h1> ... </h1>)

La ligne qui suit est censée être la date de l'article.

Syntaxe des commandes du head :

meta
Saisie :    #meta site:grognon
Html :     <meta name="site" content="grognon">
style
Saisie :    #style perso
Html :     <link rel="stylesheet" href="css/perso">
js
Saisie :    #js LaTeXMathML
Html :     <script src="script/LaTeXMathML.js"></script>

Styles typographiques

Italique
Saisie :    ^AItalique^A
Html :     <i>Italique</i>
Résultat:   Italique
Gras
Saisie :    ^Bgras^B
Html :     <strong>gras</strong>
Résultat:   gras
Souligné
Saisie :    ^Usouligné^U
Html :     <u>souligné</u>
Résultat:   souligné
Touche de clavier
Saisie :    ^KT^K
Html :     <kbd>T</kbd>
Résultat:   T
Encadré
Saisie :    #[encadré]
Html :     <span="box"></span>
Résultat:   encadré
Code
Saisie :    ^Ccode^C
Html :     <code>code</code>
Résultat:   code

Remarque : les caractères ^A, ^B, ... s'obtiennent sous linux par :

Ctrl V Ctrl A  ,   Ctrl V Ctrl B  ,   . . .

Titres <h2> ... <h6>

Une balise qlam #2 Titre (resp. #3 Titre, ... ) crée un header c'est à dire <h2>Titre</h2> (resp. <h3>Titre</h3>, ... ). Les trois premières h2, h3 et h4 sont numérotées automatiquement en css comme dans cette page. Mais Qlam entretient une numérotation parallèle pour tous les titres, qui sert d'identificateur. Elle sera exploitée pour établir les liens internes (voir Liens).

Listes

Listes à puces

Code qlam

- Ligne 1
- Ligne 2
- Ligne 3

Résultat

Code qlam

+ Ligne 1
+ Ligne 2
+ Ligne 3

Résultat

  1. Ligne 1
  2. Ligne 2
  3. Ligne 3

Code qlam

? Mot 1
	Définition de Mot 1
	Suite de la définition de Mot 1
	...
? Mot 2
	Définition de Mot 2
	Suite de la définition de Mot 2

Résultat

Mot 1
Définition de Mot 1
Suite de la définition de Mot 1
...
Mot 2
Définition de Mot 2
Suite de la définition de Mot 2

Remarques

Tables

#table
Décimal|Français|English
1      |un      |one
2      |deux    |two

Le code précédent produit :

DécimalFrançaisEnglish
1 un one
2 deux two

La balise #table accepte un argument qui est la classe (css) de la table.

Code

Code en ligne

On l'obtient avec ^CCeci est du code^C qui donne le résultat Ceci est du code.

Bloc de code

On l'ouvre avec la balise qlam #code et se termine par une ligne vide.

La balise #code accepte un argument de la forme [#][!]lang où lang est un langage de programmation. Qlam reconnait les langages que j'utilise : bash, c, cpp, html, js, py, scad. On peut en ajouter en ajoutant dans include un fichier *.dict qui contient les mots clés du langage.

Exemple de bloc de code produit par Qlam

/* qlam.c 
:w | !gcc % -o %< -Wall -Wfatal-errors -g
!./%< qlam
(c) 2023 Mourad Arnout marnout à free.fr
*/
#include "qlam.h"
int main(int argc, char *argv[]) 
{
   // make hdict
   for(int i=0; i<27; i++)   hdict[i] = NULL;
   mkdict(hdict, "html");
   if(argc == 1) printf("Usage: %s NAME [NAME] ...\n", argv[0]);
   else {
      str_t src, dest;
      char *p = basename(argv[1]), *q;
      if((q = strchr(p, '.')) != NULL) *q = 0;
      for(int c=1; c<argc; c++)
      {
         sprintf(src, "qlm/%s.qlm", p);
         sprintf(dest, "%s.html", p);
         mkhtml(src, dest);
      }
   }
   freedict(hdict);
}

Liens

La syntaxe [nom du lien->cible] produit le code html <a href="cible">nom du lien</a>.

Les titres dans la pages ont un identifiant de la forme "a_b_c_" où a, b et c sont des entiers.

Note de bas de page

Dans le corps du texte un renvoi à une note de bas de page se fait avec la balise Qlam #(n) où n est le numéro de la note.

La note proprement dite se fait (en bas de page) avec la balise #note n. Le contenu de la note doit se terminer par une ligne vide.

Javascript

On peut écrire du javascript après la balise Qlam #js (sans argument).

Exemple : Le code suivant donne l'heure

#js 
var now = new Date();
var h = now.getHours();
var m = now.getMinutes();
var s = now.getSeconds();
document.write('Il est ' + h + ':' + m + ':' + s); 

Avec un argument la balise #js nomduscript produit le code :

<script src="script/nomduscript.js"></script>

Inclure un fichier html

On peut inclure un fichier html avec la balise #include chemin/fichier.html.

installation

Il faut télécharger les fichiers qlam.h et qlam.c et les compiler avec la commande gcc qlam.c -o qlam.

Il faut ensuite créer à la racine du site local les dossiers doc, img, include, script, qlm, css puis copier :




Réalisé avec Qlam - LGPL