class CodeRay::Encoders::Debug

See also: Scanners::Debug
Use Tokens#dump for caching purposes.
output, because consecutive :space tokens are merged.
You cannot fully restore the tokens information from the
It is readable and diff-able and is used for testing.
Fast encoder producing simple debug output.
= Debug Encoder

def begin_group kind

def begin_group kind
  @opened << kind
  @out << kind.to_s << '<'
end

def begin_line kind

def begin_line kind
  @out << kind.to_s << '['
end

def end_group kind

def end_group kind
  if @opened.last != kind
    puts @out
    raise "we are inside #{@opened.inspect}, not #{kind}"
  end
  @opened.pop
  @out << '>'
end

def end_line kind

def end_line kind
  @out << ']'
end

def initialize options = {}

def initialize options = {}
  super
  @opened = []
end

def text_token text, kind

def text_token text, kind
  if kind == :space
    @out << text
  else
    # TODO: Escape (
    text = text.gsub(/[)\\]/, '\\\\\0')  # escape ) and \
    @out << kind.to_s << '(' << text << ')'
  end
end