diff options
| author | Jonas Smedegaard <dr@jones.dk> | 2025-05-10 13:20:47 +0200 |
|---|---|---|
| committer | Jonas Smedegaard <dr@jones.dk> | 2025-05-10 13:20:47 +0200 |
| commit | 2f4d0a9f248e05e60c9a55d88ba2bfb119d0a4c5 (patch) | |
| tree | 55395af5063bf4f7343409a44d3413ab1c38d9af | |
| parent | c2501b043355d78179cd365d6266061e7e7177e4 (diff) | |
tighten position resolving
| -rw-r--r-- | _extensions/ruc-play/semantic-markdown/semantic-markdown.lua | 38 |
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 |
