Merge pull request #1034 from Guldoman/PR_escape_start_patterns
Check if "open" pattern is escaped
This commit is contained in:
commit
d2fd5c9df7
|
@ -194,15 +194,21 @@ function tokenizer.tokenize(incoming_syntax, text, state)
|
||||||
res[1] = char_pos_1
|
res[1] = char_pos_1
|
||||||
res[2] = char_pos_2
|
res[2] = char_pos_2
|
||||||
end
|
end
|
||||||
if res[1] and close and target[3] then
|
if res[1] and target[3] then
|
||||||
|
-- Check to see if the escaped character is there,
|
||||||
|
-- and if it is not itself escaped.
|
||||||
local count = 0
|
local count = 0
|
||||||
for i = res[1] - 1, 1, -1 do
|
for i = res[1] - 1, 1, -1 do
|
||||||
if text:ubyte(i) ~= target[3]:ubyte() then break end
|
if text:ubyte(i) ~= target[3]:ubyte() then break end
|
||||||
count = count + 1
|
count = count + 1
|
||||||
end
|
end
|
||||||
-- Check to see if the escaped character is there,
|
if count % 2 == 0 then
|
||||||
-- and if it is not itself escaped.
|
-- The match is not escaped, so confirm it
|
||||||
if count % 2 == 0 then break end
|
break
|
||||||
|
elseif not close then
|
||||||
|
-- The *open* match is escaped, so avoid it
|
||||||
|
return
|
||||||
|
end
|
||||||
end
|
end
|
||||||
until not res[1] or not close or not target[3]
|
until not res[1] or not close or not target[3]
|
||||||
return table.unpack(res)
|
return table.unpack(res)
|
||||||
|
|
Loading…
Reference in New Issue