将ERB块用作Rouge语法突出显示中的文字

时间:2018-10-10 20:57:13

标签: ruby-on-rails ruby erb rouge

我正在尝试为Rails应用设置Rouge,但在传递内联ERB字符串或块时遇到问题。当它从文件中读取ERB时,它可以正常工作。这是我所拥有的示例-

工程

rouge_helper.rb

def rouge(file, language)
  formatter = Rouge::Formatters::HTML.new(css_class: 'highlight', wrap: true)
  lexer     = Rouge::Lexer.find(language)
  output    = formatter.format(lexer.lex(file))

  output
end

app / views / example / _partial.html.erb

<p>hello <%= p "world" %></p>

app / views / example / index.html.erb

<pre class="highlight">
  <code>
    <%= raw rouge(File.read(Rails.root + "app/views/example/_partial.html.erb"), "erb") %>
  </code>
</pre>

不起作用

当我用 index.html.erb 文件补充-

<pre class="highlight">
  <code>
    <%= raw rouge("<p>hello <%= p 'world' %></p>", "erb") %>
  </code>
</pre>

我收到此错误-

  

app / views / styleguide / index.html.erb:3:语法错误,意外的'>'   app / views / styleguide / index.html.erb:5:未知的正则表达式选项-pr   app / views / styleguide / index.html.erb:6:未终止的字符串遇到结尾   app / views / styleguide / index.html.erb:6:语法错误,   意外的输入结束,期望为')'

所需结果

<p>hello <%= p "world" %></p>

0 个答案:

没有答案