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 --- BUGS | 12 ++++-------- README | 11 +++++++++++ README.html | 11 +++++++++++ emparse | 33 +++++++++++++++++++++------------ test.em | 5 +++++ test.html | 7 +++++++ 6 files changed, 59 insertions(+), 20 deletions(-) diff --git a/BUGS b/BUGS index 7e7f7ed..cb764d6 100644 --- a/BUGS +++ b/BUGS @@ -1,9 +1,5 @@ -Sat Jan 30 21:40:01 CET 2021 +Sun Jan 31 01:16:11 CET 2021 -Blockquotes are not yet supported! - -Sat Jan 30 01:31:14 CET 2021 - -A reference list containing only hyperlink references will -result in an empty
    element. This doesn't matter -much, as browsers seem to ignore it. +Because excess spaces are stripped when processing inline formatting, +there *is* actually more than one way to do it, currently. It doesn't +matter too much, but I'd like to fix it eventually. diff --git a/README b/README index 470aa2d..072c473 100644 --- a/README +++ b/README @@ -164,6 +164,17 @@ reference item. --- +=== Blockquotes === + +Blockquotes are, in terms of syntax and behavior, actually another +type of list, started with an initial space, followed by `> `: + + > This is a quoted paragraph. + The paragraph continues on the next line. + > Here begins a new quoted paragraph. + +--- + === Preformatted blocks === _Preformatted blocks start with a single tab:_ diff --git a/README.html b/README.html index c4c8e9f..cd64a87 100644 --- a/README.html +++ b/README.html @@ -189,6 +189,17 @@ inline references to them link directly to the link rather than the reference item.


    +

    Blockquotes

    +

    +Blockquotes are, in terms of syntax and behavior, actually another +type of list, started with an initial space, followed by > : +

    +
    + > This is a quoted paragraph.
    +The paragraph continues on the next line.
    + > Here begins a new quoted paragraph.
    +
    +

    Preformatted blocks

    Preformatted blocks start with a single tab: 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 "

  1. ", v, v } } diff --git a/test.em b/test.em index 755736e..2965c09 100644 --- a/test.em +++ b/test.em @@ -8,6 +8,11 @@ Here is an asterisk at the end of a word*. Here is an *unfinished inline formatting tag. + > Perhaps quotes could be regarded as lists. +The paragraph goes on until a new "item" comes. + > Here, a new paragraph is started. +Yeah, this seems like a very em-like approach. + - Here is an unordered list item. - Here is another. diff --git a/test.html b/test.html index cd98612..17f5566 100644 --- a/test.html +++ b/test.html @@ -11,6 +11,13 @@ Here is an asterisk at the end of a word*.

    Here is an unfinished inline formatting tag.

    +
    +

    Perhaps quotes could be regarded as lists. +The paragraph goes on until a new "item" comes. +

    Here, a new paragraph is started. +Yeah, this seems like a very em-like approach. +

    +
    • Here is an unordered list item. -- cgit v1.2.3