class CodeRay::Encoders::Debug

Debug Encoder

Fast encoder producing simple debug output.

It is readable and diff-able and is used for testing.

You cannot fully restore the tokens information from the output, because consecutive :space tokens are merged. Use CodeRay::Tokens#dump for caching purposes.

See also: Scanners::Debug

Constants

FILE_EXTENSION

Public Class Methods

new(options = {}) click to toggle source
# File lib/coderay/encoders/debug.rb, line 21
def initialize options = {}
  super
  @opened = []
end

Public Instance Methods

begin_group(kind) click to toggle source
# File lib/coderay/encoders/debug.rb, line 36
def begin_group kind
  @opened << kind
  @out << kind.to_s << '<'
end
begin_line(kind) click to toggle source
# File lib/coderay/encoders/debug.rb, line 50
def begin_line kind
  @out << kind.to_s << '['
end
end_group(kind) click to toggle source
# File lib/coderay/encoders/debug.rb, line 41
def end_group kind
  if @opened.last != kind
    puts @out
    raise "we are inside #{@opened.inspect}, not #{kind}"
  end
  @opened.pop
  @out << '>'
end
end_line(kind) click to toggle source
# File lib/coderay/encoders/debug.rb, line 54
def end_line kind
  @out << ']'
end
text_token(text, kind) click to toggle source
# File lib/coderay/encoders/debug.rb, line 26
def text_token text, kind
  if kind == :space
    @out << text
  else
    # TODO: Escape (
    text = text.gsub(%r[)\\]/, '\\\0')  # escape ) and \
    @out << kind.to_s << '(' << text << ')'
  end
end