Class: Pirka::Highlighter::Middleware::Rouge

Inherits:
Object
  • Object
show all
Defined in:
lib/pirka/highlighter.rb

Constant Summary collapse

FORMATTER =
::Rouge::Formatters::HTML.new

Instance Method Summary collapse

Constructor Details

#initialize(highlighter, formatter: FORMATTER) ⇒ Rouge

Returns a new instance of Rouge.



18
19
20
21
# File 'lib/pirka/highlighter.rb', line 18

def initialize(highlighter, formatter: FORMATTER)
  @highlighter = highlighter
  @formatter = formatter
end

Instance Method Details

#markup(element, lang) ⇒ Object



23
24
25
26
27
28
29
30
31
# File 'lib/pirka/highlighter.rb', line 23

def markup(element, lang)
  @highlighter.markup(element, lang)
  lexer = ::Rouge::Lexer.find(lang) || ::Rouge::Lexer.guess(source: element.content)
  unless lexer
    warn _("Cannot find lexer for %{lang}") % {lang: lang}
    return
  end
  element.inner_html = @formatter.format(lexer.lex(element.content)) # @todo Consider the case `element` has descendants
end