Синтаксическая ошибка, неожиданная ')', ожидание '='

Я пишу расширение для 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.gs­ub!(/\[([\­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)

и это должно работать!

Другие вопросы по тегам