From 2f7147aa05cbdcb8b1b2470877dffc663cb7a83e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Ankarstr=C3=B6m?= Date: Sun, 31 Jan 2021 00:32:45 +0000 Subject: Add blockquote syntax --- emparse | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) (limited to 'emparse') diff --git a/emparse b/emparse index 5ddb585..7423bb2 100755 --- a/emparse +++ b/emparse @@ -7,6 +7,7 @@ END { breakblock() } /^$/ { breakblock(); getline } expectblock && /^ / { newblock("table") } +expectblock && /^ > / { newblock("blockquote") } expectblock && /^ - / { newblock("ul") } expectblock && /^ [0-9]+\. / { newblock("ol") } expectblock && /^ \[[0-9]+\] / { newblock("nl") } @@ -23,9 +24,9 @@ expectblock { newblock("p") } openblock == "pre" { sub("^ ", ""); $0 = escape($0); printf "%s\n", $0; next } +openblock == "blockquote" && /^ > / { item(1, "blockquote", line) } openblock == "ul" && /^ - / { item(1, "ul", line) } openblock == "ol" && /^ [0-9]+\. / { item(1, "ol", line) } -#openblock == "nl" && /^ \[[0-9]+\] [^ ]+$/ { next } # hyperlink reference openblock == "nl" && /^ \[[0-9]+\] / { item(1, "nl", line) } # text reference openblock == "dl" && /^ .*: / { term(line) } @@ -135,7 +136,10 @@ function breakblock() { printf "(%s:%d) warning: open <%s> closed at block break\n", ARGV[1], NR, openformat > "/dev/stderr" } if (openitem) { - printf "\n" + if (openblock == "blockquote") + printf "

\n" + else + printf "\n" while (itemlevel-- > 1) closetag(openblock) itemlevel = 1 @@ -160,17 +164,22 @@ function heading(level, line) { } function item(level, type, line) { + if (type == "blockquote") { + if (openitem) printf "

" + openitem = 1 + sub("^ > ", "") + printf "

" + return + } if (openitem) printf "" openitem = 1 - if (type != "nl") { - for (; itemlevel < level; itemlevel++) { - printf "<%s>\n", type - leveltype[itemlevel+1] = type - } - for (; itemlevel > level; itemlevel--) { - printf "\n", leveltype[itemlevel] - leveltype[itemlevel] = "" - } + for (; itemlevel < level; itemlevel++) { + printf "<%s>\n", type + leveltype[itemlevel+1] = type + } + for (; itemlevel > level; itemlevel--) { + printf "\n", leveltype[itemlevel] + leveltype[itemlevel] = "" } if (type == "ul") { sub("^ +- ", "") @@ -185,7 +194,7 @@ function item(level, type, line) { if (type == "nl") { match($0, "\\[[0-9]+\\]") v = substr($0, RSTART+1, RLENGTH-2) - sub("^ +\\[[0-9]+\\] ", "") + sub("^ \\[[0-9]+\\] ", "") printf "

  • ", v, v } } -- cgit v1.2.3