我正在为jekyll powered网站的Redcarpet编写扩展。我想使用{x|y}
作为markdown中的标记,其计算结果为HTML <ruby>
标记(及其关联)。我按照《杰基尔指南》、《红毯指南》和以下指南来写这门课:
class Jekyll::Converters::Markdown::HotelDown < Redcarpet::Render::HTML
def preprocess(doc)
s = "<ruby><rb>\1</rb><rp>(</rp><rt>\2</rt><rp>)</rp></ruby>"
doc.gsub!(/[([sS]+)|([sS]+)]/, s)
doc
end
end
但是,当我运行bundle exec jekyll serve
时,我似乎得到了几个错误:
Configuration file: C:/Users/Alex/OneDrive/codes/hotelc.me/hotelc.me/_config.yml
plugin_manager.rb:58:in `require': HotelDown.rb:4: syntax error, unexpected tIDENTIFIER, expecting ')' (SyntaxError)
doc.gs-ub!(/[([-sS]+)|([-sS]+)]/-, s)
^
HotelDown.rb:4: syntax error, unexpected ')', expecting '='
doc.gs-ub!(/[([-sS]+)|([-sS]+)]/-, s)
^
似乎我的语法有问题(一个额外的空格,缺少括号,或类似的东西)。我错过了什么吗?
你的代码中有一些特殊的字符导致了这个错误:
syntax error, unexpected ')', expecting '='
doc.gs-ub!(/[([-sS]+)|([-sS]+)]/-, s)
用这段代码替换当前代码:
class Jekyll::Converters::Markdown::HotelDown < Redcarpet::Render::HTML
#Overriding the preprocess() function
def preprocess(doc)
s = "<ruby><rb>\1</rb><rp>(</rp><rt>\2</rt><rp>)</rp></ruby>"
doc.gsub!(/[([sS]+)|([sS]+)]/, s)
doc
end
end
markdown = Redcarpet::Markdown.new(HotelDown)
,它应该工作!