view vendor/plugins/coderay-0.9.2/lib/coderay/encoders/debug.rb @ 100:1412841d48a3 cannam

* Projects page: If I'm logged in but have no projects, use single All Projects heading * Projects page: Rename "Other Projects" to "Everyone Else's Projects" * Projects page: Remove stars from my project links; remove key explaining star * Projects page: Reorder top-right nav links to isolate the "+ New Project" icon
author Chris Cannam
date Thu, 16 Dec 2010 16:29:06 +0000
parents 513646585e45
children
line wrap: on
line source
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

    def begin_line kind
      "#{kind}["
    end

    def end_line kind
      "]"
    end

  end

end
end