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