Class: CodeRay::Encoders::Terminal
- Defined in:
- lib/coderay/encoders/terminal.rb
Overview
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)
Constant Summary collapse
- TOKEN_COLORS =
{ :annotation => '35', :attribute_name => '33', :attribute_value => '31', :binary => '1;35', :char => { :self => '36', :delimiter => '1;34' }, :class => '1;35', :class_variable => '36', :color => '32', :comment => '37', :complex => '1;34', :constant => ['1;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', :include => '33', :integer => '1;34', :key => '35', :label => '1;15', :local_variable => '33', :octal => '1;35', :operator_name => '1;29', :predefined_constant => '1;36', :predefined_type => '1;30', :predefined => ['4', '1;34'], :preprocessor => '36', :pseudo_class => '1;34', :regexp => { :self => '31', :content => '31', :delimiter => '1;29', :modifier => '35', :function => '1;29' }, :reserved => '1;31', :shell => { :self => '42', :content => '1;29', :delimiter => '37', }, :string => { :self => '32', :modifier => '1;32', :escape => '1;36', :delimiter => '1;32', }, :symbol => '1;32', :tag => '1;34', :type => '1;34', :value => '36', :variable => '1;34', :insert => '42', :delete => '41', :change => '44', :head => '45' }
Constants inherited from Encoder
Instance Attribute Summary
Attributes inherited from Encoder
Attributes included from Plugin
Instance Method Summary collapse
- #begin_group(kind) ⇒ Object (also: #begin_line)
- #end_group(kind) ⇒ Object
- #end_line(kind) ⇒ Object
- #text_token(text, kind) ⇒ Object
Methods inherited from Encoder
#<<, const_missing, #encode, #encode_tokens, file_extension, #file_extension, #initialize, #token
Methods included from Plugin
#aliases, #plugin_host, #register_for, #title
Constructor Details
This class inherits a constructor from CodeRay::Encoders::Encoder
Instance Method Details
#begin_group(kind) ⇒ Object Also known as: begin_line
126 127 128 129 |
# File 'lib/coderay/encoders/terminal.rb', line 126 def begin_group kind @opened << kind @out << open_token(kind) end |
#end_group(kind) ⇒ Object
132 133 134 135 136 137 138 139 140 |
# File 'lib/coderay/encoders/terminal.rb', line 132 def end_group kind if @opened.empty? # nothing to close else @opened.pop @out << ansi_clear @out << open_token(@opened.last) end end |
#end_line(kind) ⇒ Object
142 143 144 145 146 147 148 149 150 151 152 |
# File 'lib/coderay/encoders/terminal.rb', line 142 def end_line kind if @opened.empty? # nothing to close else @opened.pop # whole lines to be highlighted, # eg. added/modified/deleted lines in a diff @out << "\t" * 100 + ansi_clear @out << open_token(@opened.last) end end |
#text_token(text, kind) ⇒ Object
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/coderay/encoders/terminal.rb', line 106 def text_token text, kind if color = (@subcolors || TOKEN_COLORS)[kind] if Hash === color if color[:self] color = color[:self] else @out << text return end end @out << ansi_colorize(color) @out << text.gsub("\n", ansi_clear + "\n" + ansi_colorize(color)) @out << ansi_clear @out << ansi_colorize(@subcolors[:self]) if @subcolors && @subcolors[:self] else @out << text end end |