From 43164aa75f8180afdeacf47bc0166ff26195991f Mon Sep 17 00:00:00 2001 From: Syndamia Date: Wed, 1 Jan 2025 20:51:24 +0200 Subject: feat(parser): Implement definition lists --- md-parser.awk | 44 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 3 deletions(-) (limited to 'md-parser.awk') diff --git a/md-parser.awk b/md-parser.awk index b25c8b2..c063b4e 100644 --- a/md-parser.awk +++ b/md-parser.awk @@ -12,9 +12,9 @@ # [x] Subscript ~...~ # [ ] Footnote [^...] (with user customizations) # [x] Task list - [ ] (readonly) -# [ ] Definition lists -# [ ] Single line -# [ ] Multi-line +# [x] Definition lists +# [x] Single line +# [x] Multi-line # [x] Fenced code blocks ```lang ``` # [ ] Tables # [x] Links @@ -282,6 +282,40 @@ list_started && /^\[[x ]\][ \t]/ { _next() } +# Definition lists +inside_definition_list == 2 && !emptyP1 && ! /^: / { + inside_definition_list = 0 + P2 = P2 "" +} +inside_definition_list == 1 { + ## If empty, get ready to close dl + if ($0 !~ /[^ \t]/) { + ++inside_definition_list + } + + ## If nonempty, we're continuing the dd + if (!empty0) { + not_paragraph = 1 + } + else { + PNappnd("") + } +} +/^: / && !emptyP1 { + sub(/^

/, "", P1) + $0 = substr($0, 3) + + P1 = "

" P1 "
" + if (!inside_definition_list) { + P1 = "
" P1 + } + $0 = "
" $0 + + inside_definition_list = 1 + not_paragraph = 1 + not_paragraph_p1 = 1 +} + # Automatic links /<[^ \t<>]+>/ { ## URL: @@ -480,6 +514,10 @@ function __buffered_print() { } END { + if (inside_definition_list) { + PNappnd("
") + } + print P2 while (P1_repeats > 0) { print "" -- cgit v1.3.1-23-gd82d