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"
- }
-}