diff options
Diffstat (limited to 'lib/coderay/encoders/debug.rb')
-rw-r--r-- | lib/coderay/encoders/debug.rb | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/lib/coderay/encoders/debug.rb b/lib/coderay/encoders/debug.rb index 03d6876..4c680d3 100644 --- a/lib/coderay/encoders/debug.rb +++ b/lib/coderay/encoders/debug.rb @@ -1,3 +1,4 @@ +($:.unshift '../..'; require 'coderay') unless defined? CodeRay module CodeRay module Encoders @@ -10,6 +11,8 @@ module Encoders # 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 include Streamable @@ -47,3 +50,50 @@ module Encoders end end + +if $0 == __FILE__ + $VERBOSE = true + $: << File.join(File.dirname(__FILE__), '..') + eval DATA.read, nil, $0, __LINE__ + 4 +end + +__END__ +require 'test/unit' + +class DebugEncoderTest < Test::Unit::TestCase + + def test_creation + assert CodeRay::Encoders::Debug < CodeRay::Encoders::Encoder + debug = nil + assert_nothing_raised do + debug = CodeRay.encoder :debug + end + assert_kind_of CodeRay::Encoders::Encoder, debug + end + + TEST_INPUT = CodeRay::Tokens[ + ['10', :integer], + ['(\\)', :operator], + [:open, :string], + ['test', :content], + [:close, :string], + [:begin_line, :test], + ["\n", :space], + ["\n \t", :space], + [" \n", :space], + ["[]", :method], + [:end_line, :test], + ] + TEST_OUTPUT = <<-'DEBUG'.chomp +integer(10)operator((\\\))string<content(test)>test[ + + +method([])] + DEBUG + + def test_filtering_text_tokens + assert_equal TEST_OUTPUT, CodeRay::Encoders::Debug.new.encode_tokens(TEST_INPUT) + assert_equal TEST_OUTPUT, TEST_INPUT.debug + end + +end |