diff options
1 files changed, 28 insertions, 0 deletions
| -rw-r--r-- | single.awk | 28 |
@@ -31,6 +31,7 @@ BEGIN { prev_blankline = blankline = 1 newStack("bq-level") + newStack("list-level") } { @@ -96,6 +97,29 @@ BEGIN { /^( |\t)[[:blank:]]*/ { } +# Unordered lists +!blankline && lengthStack("list-level") > 0 { + match($0, /^ */) + # Compensating factor for list items + li_offset = 2 * (substr($0, RSTART + RLENGTH, 2) ~ /(\*|\+|-) /) + while (RLENGTH + li_offset < topStack("list-level")) { + print "</ul>" + popStack("list-level") + } +} +/^[[:blank:]]*(\*|\+|-) / { + match($0, /(\*|\+|-) /) + if (topStack("list-level") < RSTART) { + print "<ul><li>" + pushStack("list-level", RSTART + 1) + } + else { + print "</li><li>" + } + $0 = substr($0, RSTART + RLENGTH) +} +lengthStack("list-level") > 0 { blankline = 1 } + # Paragraphs prev_blankline && !blankline && lengthStack("bq-level") == 0 { print "<p>" } !prev_blankline && blankline && lengthStack("bq-level") == 0 { print "</p>" } @@ -157,4 +181,8 @@ END { print "</blockquote>" popStack("bq-level") } + while (lengthStack("list-level") > 0) { + print "</ul>" + popStack("list-level") + } } |
