feat: support reference style link in table

This commit is contained in:
jeffreytse 2020-04-28 17:36:35 +08:00
parent 5f7e3edb6a
commit 07fc41e490

View File

@ -6,6 +6,23 @@ require "nokogiri"
module Jekyll::Spaceship module Jekyll::Spaceship
class TableProcessor < Processor class TableProcessor < Processor
def on_handle_markdown(content) def on_handle_markdown(content)
# pre-handle reference-style links
references = {}
content.scan(/(\[(.*)\]:\s*(.*))/) do |match_data|
ref_name = match_data[1]
ref_value = match_data[2]
references[ref_name] = ref_value
end
if references.size > 0
content.scan(/.*(?<!\\)\|.*/) do |result|
references.each do |key, val|
replace = result.gsub(/\[(.*)\]\s*\[#{key}\]/, "[\1](#{val})")
next if result == replace
content = content.gsub(result, replace)
end
end
end
# escape | and : # escape | and :
content = content.gsub(/\|(?=\|)/, '\\|') content = content.gsub(/\|(?=\|)/, '\\|')
.gsub(/\\:(?=.*?(?<!\\)\|)/, '\\\\\\\\:') .gsub(/\\:(?=.*?(?<!\\)\|)/, '\\\\\\\\:')
@ -15,13 +32,10 @@ module Jekyll::Spaceship
content.scan(/.*(?<!\\)\|.*/) do |result| content.scan(/.*(?<!\\)\|.*/) do |result|
replace = result.gsub( replace = result.gsub(
/(?<!(?<!\\)\\)(\*|\$|\[|\(|\"|_)/, /(?<!(?<!\\)\\)(\*|\$|\[|\(|\"|_)/,
'\\\\\\\\\1' '\\\\\\\\\1')
) next if result == replace
if result != replace content = content.gsub(result, replace)
content = content.gsub(result, replace)
end
end end
content content
end end