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 =
{ :debug => "\e[1;37;44m", :annotation => "\e[34m", :attribute_name => "\e[35m", :attribute_value => "\e[31m", :binary => { :self => "\e[31m", :char => "\e[1;31m", :delimiter => "\e[1;31m", }, :char => { :self => "\e[35m", :delimiter => "\e[1;35m" }, :class => "\e[1;35;4m", :class_variable => "\e[36m", :color => "\e[32m", :comment => { :self => "\e[1;30m", :char => "\e[37m", :delimiter => "\e[37m", }, :constant => "\e[1;34;4m", :decorator => "\e[35m", :definition => "\e[1;33m", :directive => "\e[33m", :docstring => "\e[31m", :doctype => "\e[1;34m", :done => "\e[1;30;2m", :entity => "\e[31m", :error => "\e[1;37;41m", :exception => "\e[1;31m", :float => "\e[1;35m", :function => "\e[1;34m", :global_variable => "\e[1;32m", :hex => "\e[1;36m", :id => "\e[1;34m", :include => "\e[31m", :integer => "\e[1;34m", :imaginary => "\e[1;34m", :important => "\e[1;31m", :key => { :self => "\e[35m", :char => "\e[1;35m", :delimiter => "\e[1;35m", }, :keyword => "\e[32m", :label => "\e[1;33m", :local_variable => "\e[33m", :namespace => "\e[1;35m", :octal => "\e[1;34m", :predefined => "\e[36m", :predefined_constant => "\e[1;36m", :predefined_type => "\e[1;32m", :preprocessor => "\e[1;36m", :pseudo_class => "\e[1;34m", :regexp => { :self => "\e[35m", :delimiter => "\e[1;35m", :modifier => "\e[35m", :char => "\e[1;35m", }, :reserved => "\e[32m", :shell => { :self => "\e[33m", :char => "\e[1;33m", :delimiter => "\e[1;33m", :escape => "\e[1;33m", }, :string => { :self => "\e[31m", :modifier => "\e[1;31m", :char => "\e[1;35m", :delimiter => "\e[1;31m", :escape => "\e[1;31m", }, :symbol => { :self => "\e[33m", :delimiter => "\e[1;33m", }, :tag => "\e[32m", :type => "\e[1;34m", :value => "\e[36m", :variable => "\e[34m", :insert => { :self => "\e[42m", :insert => "\e[1;32;42m", :eyecatcher => "\e[102m", }, :delete => { :self => "\e[41m", :delete => "\e[1;31;41m", :eyecatcher => "\e[101m", }, :change => { :self => "\e[44m", :change => "\e[37;44m", }, :head => { :self => "\e[45m", :filename => "\e[37;45m" }, }
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
156 157 158 159 |
# File 'lib/coderay/encoders/terminal.rb', line 156 def begin_group kind @opened << kind @out << open_token(kind) end |
#end_group(kind) ⇒ Object
162 163 164 165 166 167 168 169 170 |
# File 'lib/coderay/encoders/terminal.rb', line 162 def end_group kind if @opened.pop @color_scopes.pop @out << "\e[0m" if outer_color = @color_scopes.last[:self] @out << outer_color end end end |
#end_line(kind) ⇒ Object
172 173 174 175 |
# File 'lib/coderay/encoders/terminal.rb', line 172 def end_line kind @out << (@line_filler ||= "\t" * 100) end_group kind end |
#text_token(text, kind) ⇒ Object
141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
# File 'lib/coderay/encoders/terminal.rb', line 141 def text_token text, kind if color = @color_scopes.last[kind] color = color[:self] if color.is_a? Hash @out << color @out << (text.index("\n") ? text.gsub("\n", "\e[0m\n" + color) : text) @out << "\e[0m" if outer_color = @color_scopes.last[:self] @out << outer_color end else @out << text end end |