bebou

Le site web bebou.netlib.re - retour accueil

git clone git://bebou.netlib.re/bebou
Log | Files | Refs |

article (2600B)


      1 #! /usr/bin/env dash
      2 
      3 # Chemin absolu du fichier css
      4 # du point de vue du serveur web
      5 # (et non pas dans le système de fichier
      6 # du dépôt git)
      7 STYLE=/style.css
      8 
      9 # Création du dossier temporaire dans lequel
     10 # les fichiers contenant l'html des sections
     11 the=$(mktemp -d)
     12 trap "rm -rf $the" EXIT
     13 
     14 ########################
     15 # PREMIÈRE CONFIGURATION
     16 ########################
     17 
     18 # Choisissez une fonction save_*
     19 # ou construisez la votre avec
     20 # l'outil de votre choix
     21 
     22 # save_md() cmark >> "$the/$1"
     23 save_md() {
     24 cat > A
     25 cat A |grep '^#' |
     26 tail -n+2 |
     27 sed -E '/^## / s/^## //
     28 		/^### / s/^### /- /
     29 		/^#### / s/^#### /-- /' > B
     30 sed -E 's/^-+ //' B |
     31 tr -d 'éàù,"è' | tr -d "'" | tr -s ' ' | tr ' [A-Z]' '-[a-z]' |
     32 paste -d'\n' B - |
     33 xargs -d'\n' printf '[%s](#%s)  \n' > C
     34 cat C A | lowdown >> "$the/$1"
     35 rm A B C
     36 }
     37 # save_md() pandoc >> "$the/$1"
     38 # save_asciidoc() asciidoctor >> "$the/$1"
     39 # save_html() cat >> "$the/$1"
     40 
     41 # L'alias pour ouvrir une section
     42 # Ouvre un heredoc avec pour délimiteur
     43 # "endsection" et commande "save_*"
     44 # Décommentez en un ou plusieurs selon
     45 # le choix que vous avez fait au dessus
     46 
     47 # alias sectionasciidoc:='<<\endsection save_asciidoc'
     48 alias sectionmd:='<<\endsection save_md'
     49 # alias sectionhtml:='<<\endsection save_html'
     50 
     51 # Pareil mais le shell écrit dans la
     52 # section s'exécutera
     53 # alias sectionmd:='<<endsection save_md'
     54 
     55 ###############################
     56 # FIN DE PREMIÈRE CONFIGURATION
     57 ###############################
     58 
     59 # alias pour le DSL
     60 # Se retrouvent à l'écriture des articles
     61 # dans l'entête type :
     62 # title: "titre de mon article"
     63 alias title:="title"
     64 # La fonction appelé par l'alias
     65 # Ici permet simplement d'instancier
     66 # une variable contenant la valeur du titre
     67 title() title="$*"
     68 
     69 alias author:="author"
     70 author() author="$*"
     71 
     72 alias description:="description"
     73 description() description="$*"
     74 
     75 # Fonction appelé dans le layout
     76 # Permet d'afficher à l'endroit
     77 # souhaité la section passée en argument
     78 # Par exemple :
     79 # <main>
     80 #   $(the main)
     81 # </main>
     82 the() {
     83 	cd $the
     84 	cat "$@"
     85 }
     86 
     87 # On charge la fonction déclarée dans layouts/html
     88 # C'est le layout
     89 . layouts/html
     90 
     91 # Je comprends pas bien ce que cette ligne fait
     92 # Demander à Marc
     93 # A priori elle teste si un argument a été donné
     94 # à page et sinon elle fait `set -`
     95 # Or dans le manuel de dash je ne trouve pas
     96 # ce que ça fait
     97 # En attendant on laisse
     98 [ "$1" ] || set -
     99 
    100 # On exécute le code dans la page sh
    101 # C'est maintenant que toutes les variables vont s'instancier
    102 # et l'html être généré
    103 . "$@"
    104 
    105 # On appelle la fonction layout de layouts/html
    106 # pour afficher la page
    107 layout