aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2025-04-08 07:11:50 +0200
committerJonas Smedegaard <dr@jones.dk>2025-04-08 07:28:53 +0200
commit9b020383001c75a5caabc55ee1361a6f5aa66053 (patch)
treed7fbed1b1c2b4f378af0fee0758aba1f2da67f00
parentf593a53b5b4e3e7f7845bf1eca487a8160e37e08 (diff)
compose string stack_next while parsing Str element
-rw-r--r--_extensions/ruc-play/semantic-markdown/semantic-markdown.lua22
1 files changed, 19 insertions, 3 deletions
diff --git a/_extensions/ruc-play/semantic-markdown/semantic-markdown.lua b/_extensions/ruc-play/semantic-markdown/semantic-markdown.lua
index 230f351..b4c1028 100644
--- a/_extensions/ruc-play/semantic-markdown/semantic-markdown.lua
+++ b/_extensions/ruc-play/semantic-markdown/semantic-markdown.lua
@@ -158,6 +158,7 @@ function Statements (block)
for i, el in ipairs(block.content) do
local pos = 0
+ local stack_next = ""
-- non-string element
if el.t ~= 'Str' then
@@ -183,6 +184,7 @@ function Statements (block)
-- entering bracketed enclosure
bracketed = true
pos = a + 1
+ stack_next = stack_next..s
-- staying unenclosed
else
@@ -208,16 +210,23 @@ function Statements (block)
if el.text:sub(c, c) == "{" then
braced = true
pos = c + 1
- table.insert(stack, pandoc.Str(s))
+ stack_next = stack_next..s
-- leaving non-annotation enclosure
else
bracketed = false
braced = false
+ -- TODO: clear only back to entering this bracketed enclosure
+ stack = {}
+
-- TODO: parse remains of Str
goto continue
end
+
+ -- staying enclosed
+ else
+ stack_next = stack_next..s
end
end
@@ -236,14 +245,21 @@ function Statements (block)
end
if d then
statement_count = statement_count + 1
+ table.insert(stack, pandoc.Str(stack_next))
+ stack_next = ""
bracketed = false
braced = false
pos = d + 1
- -- TODO: add any bracket-enclosed content to stack
- -- TODO: call same function with remains of Str
+ -- TODO: parse remains of Str
end
end
+ -- end of element, push collected string to stack
+ if string.len(stack_next) > 0 and pos >= el.text:len() then
+ table.insert(stack, pandoc.Str(stack_next))
+ stack_next = ""
+ end
+
-- done parsing current Inline element
::continue::
end