aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2025-05-10 13:20:47 +0200
committerJonas Smedegaard <dr@jones.dk>2025-05-10 13:20:47 +0200
commit2f4d0a9f248e05e60c9a55d88ba2bfb119d0a4c5 (patch)
tree55395af5063bf4f7343409a44d3413ab1c38d9af
parentc2501b043355d78179cd365d6266061e7e7177e4 (diff)
tighten position resolving
-rw-r--r--_extensions/ruc-play/semantic-markdown/semantic-markdown.lua38
1 files changed, 13 insertions, 25 deletions
diff --git a/_extensions/ruc-play/semantic-markdown/semantic-markdown.lua b/_extensions/ruc-play/semantic-markdown/semantic-markdown.lua
index 952c47d..bf3b1cc 100644
--- a/_extensions/ruc-play/semantic-markdown/semantic-markdown.lua
+++ b/_extensions/ruc-play/semantic-markdown/semantic-markdown.lua
@@ -253,16 +253,12 @@ function Statements (block)
-- unenclosed
-- TODO: accept backslash except immediately before bracket
if enclosure == Enclosure.NONE then
- _, x, s = el.text:find("^([^%[\\]*)")
- if x then
- a = x + 1
- else
- a = 1
- end
- if el.text:sub(a, a) == "[" then
+ local _, x, s = el.text:find("^([^%[\\]*)")
+ pos = x and x + 1 or pos + 1
+ if el.text:sub(pos, pos) == "[" then
-- entering bracketed enclosure
- pos = a + 1
+ pos = pos + 1
stack_next = stack_next..s
enclosure = Enclosure.BRACKETED
@@ -277,17 +273,13 @@ function Statements (block)
-- TODO: accept backslash except immediately before bracket/brace
-- TODO: support nested bracket enclosure
if enclosure == Enclosure.BRACKETED then
- _, x, s = el.text:find("^([^%[%]}\\]*)", pos)
- if x then
- b = x + 1
- else
- b = pos
- end
+ local _, x, s = el.text:find("^([^%[%]}\\]*)", pos)
+ pos = x and x + 1 or pos + 1
stack_next = stack_next..s
-- exiting bracketed enclosure
- if el.text:sub(b, b) == "]" then
- pos = b + 1
+ if el.text:sub(pos, pos) == "]" then
+ pos = pos + 1
enclosure = Enclosure.BRACKETED_DONE
end
end
@@ -315,15 +307,11 @@ function Statements (block)
-- in braced enclosure, leaving it
-- TODO: support mixed-use enclosure
if enclosure == Enclosure.BRACED then
- _, d1 = el.text:find("^"..curie_long.."}", pos)
- _, d2 = el.text:find("^"..curie_no_ref.."}", pos)
- _, d3 = el.text:find("^"..curie_local.."}", pos)
- _, d4 = el.text:find("^"..curie_default.."}", pos)
- if d1 then d = d1
- elseif d2 then d = d2
- elseif d3 then d = d3
- elseif d4 then d = d4
- end
+ local _, d1 = el.text:find("^"..curie_long.."}", pos)
+ local _, d2 = el.text:find("^"..curie_no_ref.."}", pos)
+ local _, d3 = el.text:find("^"..curie_local.."}", pos)
+ local _, d4 = el.text:find("^"..curie_default.."}", pos)
+ local d = d1 or d2 or d3 or d4
if d then
statement_count = statement_count + 1
pos = d + 1