Синтаксическая ошибка, неожиданная ')', ожидание '='
Я пишу расширение для Redcarpet для сайта на платформе Jekyll. Я хочу использовать {x|y}
как тег в уценке, который оценивает в HTML <ruby>
тег (и его партнеры). Я написал этот класс в соответствии с руководством Джекилла, руководством Redcarpet, и этим руководством о том, как это сделать:
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!(/\[([\s\S]+)\|([\s\S]+)\]/, 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!(/\[([\-s\S]+)\|([-\s\S]+)\]/-, s)
^
HotelDown.rb:4: syntax error, unexpected ')', expecting '='
doc.gs-ub!(/\[([\-s\S]+)\|([-\s\S]+)\]/-, s)
^
Кажется, что-то не так с моим синтаксисом (лишний пробел, пропущенные скобки или что-то в этом роде). Я что-то пропустил?
1 ответ
Решение
В вашем коде есть несколько специальных символов, которые вызывают эту ошибку:
syntax error, unexpected ')', expecting '='
doc.gs-ub!(/\[([\-s\S]+)\|([-\s\S]+)\]/-, 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!(/\[([\s\S]+)\|([\s\S]+)\]/, s)
doc
end
end
markdown = Redcarpet::Markdown.new(HotelDown)
и это должно работать!