42 lines
744 B
Ruby
42 lines
744 B
Ruby
|
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.
|
||
|
class Debug < Encoder
|
||
|
|
||
|
include Streamable
|
||
|
register_for :debug
|
||
|
|
||
|
FILE_EXTENSION = 'raydebug'
|
||
|
|
||
|
protected
|
||
|
def text_token text, kind
|
||
|
if kind == :space
|
||
|
text
|
||
|
else
|
||
|
text = text.gsub(/[)\\]/, '\\\\\0') # escape ) and \
|
||
|
"#{kind}(#{text})"
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def open_token kind
|
||
|
"#{kind}<"
|
||
|
end
|
||
|
|
||
|
def close_token kind
|
||
|
">"
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
end
|
||
|
end
|