Sha256: c103995a51bdb24afd27dea5deca82e5857c2e0bca9aab37c78aeabe5295a2fe
Contents?: true
Size: 1.18 KB
Versions: 5
Compression:
Stored size: 1.18 KB
Contents
module CodeRay module Encoders # = 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 Tokens#dump for caching purposes. # # See also: Scanners::Debug class Debug < Encoder register_for :debug FILE_EXTENSION = 'raydebug' def initialize options = {} super @opened = [] end def text_token text, kind if kind == :space @out << text else # FIXME: Escape ( text = text.gsub(/[)\\]/, '\\\\\0') # escape ) and \ @out << kind.to_s << '(' << text << ')' end end def begin_group kind @opened << kind @out << kind.to_s << '<' end def end_group kind if @opened.last != kind puts @out raise "we are inside #{@opened.inspect}, not #{kind}" end @opened.pop @out << '>' end def begin_line kind @out << kind.to_s << '[' end def end_line kind @out << ']' end end end end
Version data entries
5 entries across 5 versions & 1 rubygems