dotfiles

configuration files for shell, text editor, graphical environment, etc.
git clone git://src.adamsgaard.dk/dotfiles
Log | Files | Refs | README | LICENSE Back to index

commit 99d8a9190455a01a76fec36cad442642c85b0f57
parent 096eb296fe4ba40b9eab70fa4e8cdd355c4225b6
Author: Anders Damsgaard <anders@adamsgaard.dk>
Date:   Tue, 24 Mar 2020 12:43:01 +0100

Move minimal markdown to html script to local bin

Diffstat:
A.local/bin/mmd | 110+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
D.local/share/awk/mmd | 108-------------------------------------------------------------------------------
2 files changed, 110 insertions(+), 108 deletions(-)

diff --git a/.local/bin/mmd b/.local/bin/mmd @@ -0,0 +1,110 @@ +#!/usr/bin/awk -f +# usage: awk -f markdown-to-html.awk file.md > file.html +# or cat file.md | mmd +# script originally by Solene Rapenne +# https://dataswamp.org/~solene/2019-08-26-minimal-markdown.html + +BEGIN { + in_code=0 + in_list_unordered=0 + in_list_ordered=0 + in_paragraph=0 +} + +{ + # escape < > characters + gsub(/</,"\<",$0); + gsub(/>/,"\>",$0); + + # close code blocks + if(! match($0,/^ /)) { + if(in_code) { + in_code=0 + printf "</code></pre>\n" + } + } + + # close unordered list + if(! match($0,/^- /)) { + if(in_list_unordered) { + in_list_unordered=0 + printf "</ul>\n" + } + } + + # close ordered list + if(! match($0,/^[0-9]+\. /)) { + if(in_list_ordered) { + in_list_ordered=0 + printf "</ol>\n" + } + } + + # display titles + if(match($0,/^#/)) { + if(match($0,/^(#+)/)) { + printf "<h%i>%s</h%i>\n", RLENGTH, substr($0,index($0,$2)), RLENGTH + } + + # display code blocks + } else if(match($0,/^ /)) { + if(in_code==0) { + in_code=1 + printf "<pre><code>" + print substr($0,5) + } else { + print substr($0,5) + } + + # display unordered lists + } else if(match($0,/^- /)) { + if(in_list_unordered==0) { + in_list_unordered=1 + printf "<ul>\n" + printf "<li>%s</li>\n", substr($0,3) + } else { + printf "<li>%s</li>\n", substr($0,3) + } + + # display ordered lists + } else if(match($0,/^[0-9]+\. /)) { + n=index($0," ")+1 + if(in_list_ordered==0) { + in_list_ordered=1 + printf "<ol>\n" + printf "<li>%s</li>\n", substr($0,n) + } else { + printf "<li>%s</li>\n", substr($0,n) + } + + # close p if current line is empty + } else { + if(length($0) == 0 && in_paragraph == 1 && in_code != 0) { + in_paragraph=0 + printf "</p>" + } # we are still in a paragraph + if(length($0) != 0 && in_paragraph == 1) { + print + } # open a p tag if previous line is empty + if(length(previous_line)==0 && in_paragraph==0) { + in_paragraph=1 + printf "<p>%s\n", $0 + } + } + previous_line = $0 +} + +END { + if(in_code==1) { + printf "</code></pre>\n" + } + if(in_list_unordered==1) { + printf "</ul>\n" + } + if(in_list_ordered==1) { + printf "</ol>\n" + } + if(in_paragraph==1) { + printf "</p>\n" + } +} diff --git a/.local/share/awk/mmd b/.local/share/awk/mmd @@ -1,108 +0,0 @@ -# usage: awk -f markdown-to-html.awk file.md > file.html -# script originally by Solene Rapenne -# https://dataswamp.org/~solene/2019-08-26-minimal-markdown.html - -BEGIN { - in_code=0 - in_list_unordered=0 - in_list_ordered=0 - in_paragraph=0 -} - -{ - # escape < > characters - gsub(/</,"\<",$0); - gsub(/>/,"\>",$0); - - # close code blocks - if(! match($0,/^ /)) { - if(in_code) { - in_code=0 - printf "</code></pre>\n" - } - } - - # close unordered list - if(! match($0,/^- /)) { - if(in_list_unordered) { - in_list_unordered=0 - printf "</ul>\n" - } - } - - # close ordered list - if(! match($0,/^[0-9]+\. /)) { - if(in_list_ordered) { - in_list_ordered=0 - printf "</ol>\n" - } - } - - # display titles - if(match($0,/^#/)) { - if(match($0,/^(#+)/)) { - printf "<h%i>%s</h%i>\n", RLENGTH, substr($0,index($0,$2)), RLENGTH - } - - # display code blocks - } else if(match($0,/^ /)) { - if(in_code==0) { - in_code=1 - printf "<pre><code>" - print substr($0,5) - } else { - print substr($0,5) - } - - # display unordered lists - } else if(match($0,/^- /)) { - if(in_list_unordered==0) { - in_list_unordered=1 - printf "<ul>\n" - printf "<li>%s</li>\n", substr($0,3) - } else { - printf "<li>%s</li>\n", substr($0,3) - } - - # display ordered lists - } else if(match($0,/^[0-9]+\. /)) { - n=index($0," ")+1 - if(in_list_ordered==0) { - in_list_ordered=1 - printf "<ol>\n" - printf "<li>%s</li>\n", substr($0,n) - } else { - printf "<li>%s</li>\n", substr($0,n) - } - - # close p if current line is empty - } else { - if(length($0) == 0 && in_paragraph == 1 && in_code != 0) { - in_paragraph=0 - printf "</p>" - } # we are still in a paragraph - if(length($0) != 0 && in_paragraph == 1) { - print - } # open a p tag if previous line is empty - if(length(previous_line)==0 && in_paragraph==0) { - in_paragraph=1 - printf "<p>%s\n", $0 - } - } - previous_line = $0 -} - -END { - if(in_code==1) { - printf "</code></pre>\n" - } - if(in_list_unordered==1) { - printf "</ul>\n" - } - if(in_list_ordered==1) { - printf "</ol>\n" - } - if(in_paragraph==1) { - printf "</p>\n" - } -}