Используйте блок ERB как литерал в подсветке синтаксиса Rouge - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь настроить Rouge для моего приложения Rails, и у меня возникают проблемы с передачей встроенных строк или блоков 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

приложение/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") %>
  

Не работает

Когда я перезаписываю файл index.html.erb этим -

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

Я получаю эту ошибку -

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>
...