@@ -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
105100end
106101
107102function 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
112110end
0 commit comments