Class: Leg::DiffTransformers::SyntaxHighlight

Inherits:
BaseTransformer show all
Defined in:
lib/leg/diff_transformers/syntax_highlight.rb

Defined Under Namespace

Classes: HTMLLineByLine

Constant Summary collapse

SYNTAX_HIGHLIGHTER =
HTMLLineByLine.new(Rouge::Formatters::HTML.new)

Instance Method Summary collapse

Methods inherited from BaseTransformer

#initialize

Constructor Details

This class inherits a constructor from Leg::DiffTransformers::BaseTransformer

Instance Method Details

#transform(diff) ⇒ Object



21
22
23
24
25
26
27
28
29
# File 'lib/leg/diff_transformers/syntax_highlight.rb', line 21

def transform(diff)
  new_diff = diff.clone
  code = new_diff.lines.map(&:source).join("\n") + "\n"
  lexer = Rouge::Lexer.guess(filename: new_diff.filename, source: code)
  SYNTAX_HIGHLIGHTER.format(lexer.lex(code)).lines.each.with_index do |line_hl, idx|
    new_diff.lines[idx].source = line_hl
  end
  new_diff
end