Class CodeRay::Encoders::Term
In: lib/coderay/encoders/term.rb
Parent: Encoder

Methods

finish   setup   token  

Constants

TOKEN_COLORS = { :annotation => '35', :attribute_name => '33', :attribute_name_fat => '33', :attribute_value => '31', :attribute_value_fat => '31', :bin => '1;35', :char => {:self => '36', :delimiter => '34'}, :class => '1;35', :class_variable => '36', :color => '32', :comment => '37', :complex => '34', :constant => ['34', '4'], :decoration => '35', :definition => '1;32', :directive => ['32', '4'], :doc => '46', :doctype => '1;30', :doc_string => ['31', '4'], :entity => '33', :error => ['1;33', '41'], :exception => '1;31', :float => '1;35', :function => '1;34', :global_variable => '42', :hex => '1;36', :important => '1;31', :include => '33', :integer => '1;34', :interpreted => '1;35', :key => '35', :label => '1;4', :local_variable => '33', :oct => '1;35', :operator_name => '1;29', :pre_constant => '1;36', :pre_type => '1;30', :predefined => ['4', '1;34'], :preprocessor => '36', :pseudo_class => '34', :regexp => { :content => '31', :delimiter => '1;29', :modifier => '35', :function => '1;29'

Protected Instance methods

[Source]

     # File lib/coderay/encoders/term.rb, line 98
 98:       def finish(options)
 99:         super
100:       end

[Source]

    # File lib/coderay/encoders/term.rb, line 92
92:       def setup(options)
93:         @out = ''
94:         @opened = [nil]
95:         @subcolors = nil
96:       end

[Source]

     # File lib/coderay/encoders/term.rb, line 102
102:       def token text, type = :plain
103:         case text
104:       
105:         when nil
106:           # raise 'Token with nil as text was given: %p' % [[text, type]] 
107:       
108:         when String
109:         
110:           if color = (@subcolors || TOKEN_COLORS)[type]
111:             color = color[:self] || return if Hash === color
112: 
113:             @out << col(color) + text.gsub("\n", col(0) + "\n" + col(color)) + col(0)
114:             @out << col(@subcolors[:self]) if @subcolors && @subcolors[:self]
115:           else
116:             @out << text
117:           end
118:       
119:         # token groups, eg. strings
120:         when :open
121:           @opened[0] = type
122:           if color = TOKEN_COLORS[type]
123:             if Hash === color
124:               @subcolors = color
125:               @out << col(color[:self]) if color[:self]
126:             else
127:               @subcolors = {}
128:               @out << col(color)
129:             end
130:           end
131:           @opened << type
132:         when :close
133:           if @opened.empty?
134:             # nothing to close
135:           else
136:             @out << col(0) if (@subcolors || {})[:self]
137:             @subcolors = nil
138:             @opened.pop
139:           end
140:       
141:         # whole lines to be highlighted, eg. a added/modified/deleted lines in a diff
142:         when :begin_line
143:         
144:         when :end_line        
145:       
146:         else
147:           raise 'unknown token kind: %p' % [text]
148:         end
149:       end

[Validate]