diff options
| author | Jonas Smedegaard <dr@jones.dk> | 2025-05-15 07:44:58 +0200 |
|---|---|---|
| committer | Jonas Smedegaard <dr@jones.dk> | 2025-05-15 08:05:59 +0200 |
| commit | ac039402ae08dc7754dac388227be45f82a75792 (patch) | |
| tree | a1a73379c125981a1f0fe19d2e7693750d353ef5 /_extensions | |
| parent | edbc1440cf9b40d8569efd239dd30d50a337cf2f (diff) | |
add Enclosure state BRACED_DONE
Diffstat (limited to '_extensions')
| -rw-r--r-- | _extensions/ruc-play/semantic-markdown/semantic-markdown.lua | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/_extensions/ruc-play/semantic-markdown/semantic-markdown.lua b/_extensions/ruc-play/semantic-markdown/semantic-markdown.lua index 59195c2..492c933 100644 --- a/_extensions/ruc-play/semantic-markdown/semantic-markdown.lua +++ b/_extensions/ruc-play/semantic-markdown/semantic-markdown.lua @@ -128,6 +128,7 @@ local Enclosure = { BRACKETED = "1", BRACKETED_DONE = "2", BRACED = "3", + BRACED_DONE = "4", } -- element types representing content enclosure in Markdown @@ -328,6 +329,23 @@ local function Statements (block) if el.t ~= 'Str' then elems_unenclosed:insert(el) + if encl == Enclosure.BRACED_DONE then + + -- push post-brace string to stack + -- TODO: parse chars_unenclosed as Str instead + if chars_unenclosed:len() > 0 then + elems_unenclosed:insert(pandoc.Str(chars_unenclosed)) + end + chars_unenclosed = "" + chars_enclosed = "" + elems:extend(elems_unenclosed) + elems_unenclosed = pandoc.List() + elems_enclosed = pandoc.List() + encl = Enclosure.NONE + + -- fall through to parse element as unenclosed + end + if encl == Enclosure.BRACED then elems_enclosed:insert(el) @@ -362,6 +380,14 @@ local function Statements (block) goto continue end + -- unenclosed immediately after enclosure + if encl == Enclosure.BRACED_DONE then + + -- TODO: parse chars_unenclosed as Str + + encl = Enclosure.NONE + end + -- unenclosed -- TODO: accept backslash except immediately before bracket if encl == Enclosure.NONE then @@ -455,14 +481,10 @@ local function Statements (block) elems_enclosed = pandoc.List() elems_unenclosed = pandoc.List() chars_enclosed = "" - chars_unenclosed = "" - encl = Enclosure.NONE + chars_unenclosed = el.text:sub(nextpos + 1) + encl = Enclosure.BRACED_DONE statement_count = statement_count + 1 - pos = nextpos + 1 - - -- TODO: instead recursively parse remains of Str - chars_unenclosed = chars_unenclosed..el.text:sub(pos) end end |
