语法错误,意外的 ')',期待 '='

syntax error, unexpected ')', expecting '='

我正在为 Jekyll 支持的网站编写 Redcarpet 扩展。我想使用 {x|y} 作为 markdown 中的标签,评估为 HTML <ruby> 标签(及其关联)。我根据 Jekyll's guide, Redcarpet's guide, and this guide 写了这个 class 如何做到这一点:

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)
                                                            ^

我的语法似乎有问题(额外的 space、缺少括号或类似的东西)。我错过了什么吗?

您的代码有一些特殊字符导致此错误:

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)

它应该可以工作!