diff options
| Commit | c1fbc6700da0d83bc798b6b7cb7a310905dbaeb9 (patch) | |
|---|---|---|
| Author | 2024-07-21 11:50:32 +0300 | |
| Committer | 2024-07-21 11:50:32 +0300 | |
| Files | 80d6db875efb2cfdc82652ce11c2caf30f46086d /single.awk | |
| csg-c1fbc6700da0d83bc798b6b7cb7a310905dbaeb9.tar csg-c1fbc6700da0d83bc798b6b7cb7a310905dbaeb9.tar.gz csg-c1fbc6700da0d83bc798b6b7cb7a310905dbaeb9.zip | ||
| Parent | 80aac3ffed20cbb3514ac81ccacb91c14871ce01 (diff) | |
(single) Implemented unordered lists
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") + } } |
