perf: match markdown table more exactly

This commit is contained in:
jeffreytse 2020-07-01 23:56:55 +08:00
parent bf641a67f6
commit 40103470cd

View File

@ -14,9 +14,9 @@ module Jekyll::Spaceship
references[ref_name] = ref_value
end
if references.size > 0
content.scan(/.*(?<!\\)\|.*/) do |result|
content.scan(/[^\n]*(?<!\\)\|[^\n]*/) do |result|
references.each do |key, val|
replace = result.gsub(/\[(.*)\]\s*\[#{key}\]/, "[\1](#{val})")
replace = result.gsub(/\[([^\n]*)\]\s*\[#{key}\]/, "[\1](#{val})")
next if result == replace
content = content.gsub(result, replace)
end
@ -24,15 +24,15 @@ module Jekyll::Spaceship
end
# pre-handle row-span
content = content.gsub(/(?<!\\)(\|.*\\\s*)\|\s*\n/, "\\1\n")
content = content.gsub(/(?<!\\)(\|[^\n]*\\\s*)\|\s*\n/, "\\1\n")
# escape | and :
content = content.gsub(/\|(?=\|)/, '\\|')
.gsub(/\\:(?=.*?(?<!\\)\|)/, '\\\\\\\\:')
.gsub(/((?<!\\)\|.*?)(\\:)/, '\1\\\\\\\\:')
.gsub(/\\:(?=[^\n]*?(?<!\\)\|)/, '\\\\\\\\:')
.gsub(/((?<!\\)\|[^\n]*?)(\\:)/, '\1\\\\\\\\:')
# escape * and _ and $ etc.
content.scan(/.*(?<!\\)\|.*/) do |result|
content.scan(/[^\n]*(?<!\\)\|[^\n]*/) do |result|
replace = result.gsub(
/(?<!(?<!\\)\\)(\*|\$|\[|\(|\"|_)/,
'\\\\\\\\\1')