Class CodeRay::Encoders::Terminal
In: lib/coderay/encoders/terminal.rb
Parent: Encoder

Outputs code highlighted for a color terminal.

Note: This encoder is in beta. It currently doesn‘t use the Styles.

Alias: term

Authors & License

By Rob Aldred (robaldred.co.uk)

Based on idea by Nathan Weizenbaum (nex-3.com)

MIT License (www.opensource.org/licenses/mit-license.php)

Methods

Constants

TOKEN_COLORS = { :annotation => '35', :attribute_name => '33', :attribute_value => '31', :binary => '1;35', :char => { :self => '36', :delimiter => '34'

Public Instance methods

[Source]

     # File lib/coderay/encoders/terminal.rb, line 126
126:       def begin_group kind
127:         @opened << kind
128:         @out << open_token(kind)
129:       end
begin_line(kind)

Alias for begin_group

[Source]

     # File lib/coderay/encoders/terminal.rb, line 132
132:       def end_group kind
133:         if @opened.empty?
134:           # nothing to close
135:         else
136:           @opened.pop
137:           @out << ansi_clear
138:           @out << open_token(@opened.last)
139:         end
140:       end

[Source]

     # File lib/coderay/encoders/terminal.rb, line 142
142:       def end_line kind
143:         if @opened.empty?
144:           # nothing to close
145:         else
146:           @opened.pop
147:           # whole lines to be highlighted,
148:           # eg. added/modified/deleted lines in a diff
149:           @out << "\t" * 100 + ansi_clear
150:           @out << open_token(@opened.last)
151:         end
152:       end

[Source]

     # File lib/coderay/encoders/terminal.rb, line 106
106:       def text_token text, kind
107:         if color = (@subcolors || TOKEN_COLORS)[kind]
108:           if Hash === color
109:             if color[:self]
110:               color = color[:self]
111:             else
112:               @out << text
113:               return
114:             end
115:           end
116:           
117:           @out << ansi_colorize(color)
118:           @out << text.gsub("\n", ansi_clear + "\n" + ansi_colorize(color))
119:           @out << ansi_clear
120:           @out << ansi_colorize(@subcolors[:self]) if @subcolors && @subcolors[:self]
121:         else
122:           @out << text
123:         end
124:       end

Protected Instance methods

[Source]

     # File lib/coderay/encoders/terminal.rb, line 98
 98:       def setup(options)
 99:         super
100:         @opened = []
101:         @subcolors = nil
102:       end

[Validate]