- Débuté en août 2011, pour mes besoins personnels (site web + blog),
- Amélioré et enrichi pour mes besoins professionnels: cours OCaml,
documentation de logiciel, sites web,
-
Environ 19000 lignes d'OCaml,
-
Développement hébergé sur Github:
- code: http://www.github.com/zoggy/stog
- website+doc: http://zoggy.github.io/stog
-
Quelques sites générés avec Stog:
- Blog de l'EPI Gallium,
- Introduction au langage OCaml,
- Un article de maths,
- Sites web de logiciels: Chamo,
Genet,
Erssical,
- Le site du SED Saclay.
- un site statique: facile à déployer (rsync | ftp | git push | ...),
moins de problèmes de sécurité,
- gestion de billets de blog, avec dates, thèmes, mots-clés et fils RSS associés,
- contenu dynamique pour les commentaires (⇒ avec Disqus),
- pas de nouvelle syntaxe,
- possibilité d'utiliser des tags "sémantiques" de mon choix (e.g. <exercice>),
- éviter la duplication de code ⇒ définir ses propres commandes, inclure des
morceaux d'une page dans une autre,
- possibilité d'utiliser tout HTML 5 ou tout XML en général, pas seulement un sous-ensemble permis par un langage intermédiaire,
- vérifier les liens internes,
- afficher du code OCaml et le résultat de son évaluation,
- supporter plusieurs langues (fr, en, ..),
- possibilité d'ajouter des fonctionnalités avec des greffons.
Trois étapes:
- Lecture du fichier de configuration .stog/config et de l'arborescence source:
- Calcul des documents,
- Copie des autres fichiers, i.e. fichiers non ignorés et qui ne sont pas des documents.
Exemple: fichier doc.html du site web de Stog:
Les gabarits sont des fichiers XML classiques, dont certains nœuds seront
réécrits (doc-body, site-title, ...) selon
les valeurs données dans chaque document source.
Les gabarits sont dans le répertoire .stog/templates/.
On peut utiliser un gabarit de trois façons:
- le type (le nœud racine) d'un document indique le gabarit à utiliser:
...
...
page entraîne l'utilisation du fichier .stog/template/page.tmpl
comme gabarit pour le document (et post.tmpl pour post, etc.).
- en le référençant dans l'attribut file d'un nœud
]]>,
- en utilisant des règles utilisant elles-mêmes des gabarits.
Le fichier de gabarit .stog/templates/page.tmpl:
Quand on écrit un document, on définit un environnement utilisé
pour évaluer un gabarit.
Un environnement consiste en des règles de réécriture d'un nœud XML
vers une liste d'arbres XML insérés à la place du nœud.
On itère jusqu'à un point fixe.
Des niveaux (0, 10, 20, ...) permettent d'ordonner des ensembles de règles
de réécriture.
Des greffons permettent d'ajouter des règles, à différents niveaux.
On peut définir de nouvelles règles (≈ fonctions) globales à tout
le site ou locales à un document (équivalent de \newcommand en \LaTeX).
Tout plein d'autres règles et fonctionnalités dans Stog:
- table des matières,
- définition d'environnements (≈ \newenvironment de \LaTeX,
avec compteurs, etc.),
- structure conditionnelle avec if,
- possibilité d'utiliser Stog sur un seul fichier (pour un article, ...),
- système de modules pour grouper des définitions,
- serveur de prévisualisation,
- en cours: édition et prévisualisation en ligne (à la sharelatex),
- ...
Plusieurs greffons disponibles:
- , ,
, ,
- : ajout de bibliographies, notes de bas de page, identifiants automatiques pour les paragraphes,
- : génération de graphes RDF associés aux documents.
Les deux derniers visent à permettre l'écriture d'articles scientifiques
avec des annotations sémantiques comme:
- "ce bloc est une preuve de cette proposition",
- "cette preuve utilise ce théorème",
- ...
Merci de votre attention !
Questions ?