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

时间:2015-10-14 03:51:16

标签: ruby markdown jekyll redcarpet

我正在为Jekyll支持的网站撰写Redcarpet的扩展程序。我想使用{x|y}作为markdown中的标记,其标记为HTML <ruby>标记(及其关联)。我按照Jekyll's guideRedcarpet's guidethis guide编写了关于如何操作的类:

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 个答案:

答案 0 :(得分:3)

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

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)

它应该有效!