Skip to content

Commit be1f37e

Browse files
committed
fix #4771 properly.
1 parent b550670 commit be1f37e

File tree

1 file changed

+8
-10
lines changed

1 file changed

+8
-10
lines changed

src/resources/filters/qmd-reader.lua

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -88,25 +88,23 @@ function escape_invalid_tags(str)
8888
-- replace all lua special pattern characters with their
8989
-- escaped versions
9090
local safe_pattern = k:gsub("([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1")
91-
92-
-- replace all lua special replacement characters with their
93-
-- escaped versions
94-
local safe_replacement = k:gsub("([$%%])", "%%%1")
95-
replacements[replacement] = safe_replacement
96-
91+
replacements[replacement] = k
9792
local patterns = {
98-
"^([ \t\f\v]*```+[ \t\f\v]*)" .. safe_pattern,
93+
"^([ \t\f\v]*```+[ \t\f\v]*)" .. safe_pattern,
9994
"(\n[ \t\f\v]*```+[ \t\f\v]*)" .. safe_pattern
10095
}
101-
102-
str = str:gsub(patterns[1], "%1" .. safe_replacement):gsub(patterns[2], "%1" .. safe_replacement)
96+
97+
str = str:gsub(patterns[1], "%1" .. replacement):gsub(patterns[2], "%1" .. replacement)
10398
end
10499
return str, replacements
105100
end
106101

107102
function unescape_invalid_tags(str, tags)
108103
for replacement, k in pairs(tags) do
109-
str = str:gsub(replacement, k)
104+
-- replace all lua special replacement characters with their
105+
-- escaped versions, so that when we restore the behavior,
106+
-- we don't accidentally create a pattern
107+
str = str:gsub(replacement, k:gsub("([$%%])", "%%%1"))
110108
end
111109
return str
112110
end

0 commit comments

Comments
 (0)