From 2f7147aa05cbdcb8b1b2470877dffc663cb7a83e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?John=20Ankarstr=C3=B6m?= 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 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 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 "%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 "
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. +
+