diff options
author | John Ankarström <john@ankarstrom.se> | 2021-01-31 00:32:45 +0000 |
---|---|---|
committer | John Ankarström <john@ankarstrom.se> | 2021-01-31 00:32:45 +0000 |
commit | 2f7147aa05cbdcb8b1b2470877dffc663cb7a83e (patch) | |
tree | c85a09936d3d044e4a10e341e4cff8c5d83877c3 | |
parent | 2c2367d45ca8bd24398543ddf338568aefc40cf1 (diff) | |
download | em-2f7147aa05cbdcb8b1b2470877dffc663cb7a83e.tar.gz |
Add blockquote syntax
-rw-r--r-- | BUGS | 12 | ||||
-rw-r--r-- | README | 11 | ||||
-rw-r--r-- | README.html | 11 | ||||
-rwxr-xr-x | emparse | 33 | ||||
-rw-r--r-- | test.em | 5 | ||||
-rw-r--r-- | test.html | 7 |
6 files changed, 59 insertions, 20 deletions
@@ -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 <ol> 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. @@ -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. </p> <hr/> +<h3>Blockquotes</h3> +<p> +Blockquotes are, in terms of syntax and behavior, actually another +type of list, started with an initial space, followed by <tt>> </tt>: +</p> +<pre> + > This is a quoted paragraph. +The paragraph continues on the next line. + > Here begins a new quoted paragraph. +</pre> +<hr/> <h3>Preformatted blocks</h3> <p> <b>Preformatted blocks start with a single tab:</b> @@ -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 "</li>\n" + if (openblock == "blockquote") + printf "</p>\n" + else + printf "</li>\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 "</p>" + openitem = 1 + sub("^ > ", "") + printf "<p>" + return + } if (openitem) printf "</li>" openitem = 1 - if (type != "nl") { - for (; itemlevel < level; itemlevel++) { - printf "<%s>\n", type - leveltype[itemlevel+1] = type - } - for (; itemlevel > level; itemlevel--) { - printf "</%s>\n", leveltype[itemlevel] - leveltype[itemlevel] = "" - } + for (; itemlevel < level; itemlevel++) { + printf "<%s>\n", type + leveltype[itemlevel+1] = type + } + for (; itemlevel > level; itemlevel--) { + printf "</%s>\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 "<li value=\"%s\" id=\"ref%s\">", v, v } } @@ -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. @@ -11,6 +11,13 @@ Here is an asterisk at the end of a word*. <p> Here is an <i>unfinished inline formatting tag. </i></p> +<blockquote> +<p>Perhaps quotes could be regarded as lists. +The paragraph goes on until a new "item" comes. +</p><p>Here, a new paragraph is started. +Yeah, this seems like a very em-like approach. +</p> +</blockquote> <ul> <li>Here is an unordered list item. |