Module: CodeRay
- Defined in:
- lib/coderay.rb,
lib/coderay/duo.rb,
lib/coderay/style.rb,
lib/coderay/tokens.rb,
lib/coderay/encoder.rb,
lib/coderay/scanner.rb,
lib/coderay/scanners/c.rb,
lib/coderay/styles/_map.rb,
lib/coderay/encoders/div.rb,
lib/coderay/encoders/xml.rb,
lib/coderay/for_redcloth.rb,
lib/coderay/scanners/cpp.rb,
lib/coderay/scanners/sql.rb,
lib/coderay/scanners/xml.rb,
lib/coderay/encoders/_map.rb,
lib/coderay/encoders/html.rb,
lib/coderay/encoders/json.rb,
lib/coderay/encoders/null.rb,
lib/coderay/encoders/page.rb,
lib/coderay/encoders/span.rb,
lib/coderay/encoders/term.rb,
lib/coderay/encoders/text.rb,
lib/coderay/encoders/yaml.rb,
lib/coderay/scanners/_map.rb,
lib/coderay/scanners/diff.rb,
lib/coderay/scanners/html.rb,
lib/coderay/scanners/java.rb,
lib/coderay/scanners/json.rb,
lib/coderay/scanners/ruby.rb,
lib/coderay/scanners/yaml.rb,
lib/coderay/styles/cycnus.rb,
lib/coderay/styles/murphy.rb,
lib/coderay/token_classes.rb,
lib/coderay/encoders/count.rb,
lib/coderay/encoders/debug.rb,
lib/coderay/helpers/plugin.rb,
lib/coderay/scanners/debug.rb,
lib/coderay/scanners/rhtml.rb,
lib/coderay/encoders/filter.rb,
lib/coderay/scanners/delphi.rb,
lib/coderay/scanners/groovy.rb,
lib/coderay/scanners/python.rb,
lib/coderay/scanners/scheme.rb,
lib/coderay/encoders/html/css.rb,
lib/coderay/helpers/file_type.rb,
lib/coderay/helpers/word_list.rb,
lib/coderay/encoders/statistic.rb,
lib/coderay/scanners/plaintext.rb,
lib/coderay/encoders/html/output.rb,
lib/coderay/scanners/java_script.rb,
lib/coderay/scanners/nitro_xhtml.rb,
lib/coderay/encoders/lines_of_code.rb,
lib/coderay/scanners/ruby/patterns.rb,
lib/coderay/encoders/comment_filter.rb,
lib/coderay/encoders/html/numerization.rb,
lib/coderay/encoders/token_class_filter.rb,
lib/coderay/scanners/java/builtin_types.rb
Overview
encoders/term.rb By Rob Aldred (robaldred.co.uk) Based on idea by Nathan Weizenbaum (nex-3.com) MIT License (www.opensource.org/licenses/mit-license.php)
A CodeRay encoder that outputs code highlighted for a color terminal. Check out robaldred.co.uk
Defined Under Namespace
Modules: Encoders, FileType, ForRedCloth, Plugin, PluginHost, Scanners, Streamable, Styles Classes: CaseIgnoringWordList, Duo, NotStreamableError, TokenStream, Tokens, WordList
Constant Summary collapse
- VERSION =
Version: Major.Minor.Teeny Major: 0 for pre-stable, 1 for stable Minor: feature milestone Teeny: development state, 0 for pre-release Revision: Subversion Revision number (generated on rake gem:make)
'0.9.1'
Class Method Summary collapse
-
.encode(code, lang, format, options = {}) ⇒ Object
Encode a string.
-
.encode_file(filename, format, options = {}) ⇒ Object
Encodes
filename(a path to a code file) with the Scanner forlang. -
.encode_stream(code, lang, format, options = {}) ⇒ Object
Encode a string in Streaming mode.
-
.encode_tokens(tokens, format, options = {}) ⇒ Object
Encode pre-scanned Tokens.
-
.encoder(format, options = {}) ⇒ Object
Finds the Encoder class for
formatand creates an instance, passingoptionsto it. -
.get_scanner_options(options) ⇒ Object
Extract the options for the scanner from the
optionshash. -
.highlight(code, lang, options = { :css => :class }, format = :div) ⇒ Object
Highlight a string into a HTML <div>.
-
.highlight_file(filename, options = { :css => :class }, format = :div) ⇒ Object
Highlight a file into a HTML <div>.
-
.require_plugin(path) ⇒ Object
Convenience method for plugin loading.
-
.scan(code, lang, options = {}, &block) ⇒ Object
Scans the given
code(a String) with the Scanner forlang. -
.scan_file(filename, lang = :auto, options = {}, &block) ⇒ Object
Scans
filename(a path to a code file) with the Scanner forlang. -
.scan_stream(code, lang, options = {}, &block) ⇒ Object
Scan the
code(a string) with the scanner forlang. -
.scanner(lang, options = {}) ⇒ Object
Finds the Scanner class for
langand creates an instance, passingoptionsto it.
Class Method Details
.encode(code, lang, format, options = {}) ⇒ Object
Encode a string.
This scans code with the the Scanner for lang and then encodes it with the Encoder for format. options will be passed to the Encoder.
See CodeRay::Encoder.encode
207 208 209 |
# File 'lib/coderay.rb', line 207 def encode code, lang, format, = {} encoder(format, ).encode code, lang, end |
.encode_file(filename, format, options = {}) ⇒ Object
Encodes filename (a path to a code file) with the Scanner for lang.
See CodeRay.scan_file. Notice that the second argument is the output format, not the input language.
Example:
require 'coderay'
page = CodeRay.encode_file 'some_c_code.c', :html
242 243 244 245 |
# File 'lib/coderay.rb', line 242 def encode_file filename, format, = {} tokens = scan_file filename, :auto, () encode_tokens tokens, format, end |
.encode_stream(code, lang, format, options = {}) ⇒ Object
Encode a string in Streaming mode.
This starts scanning code with the the Scanner for lang while encodes the output with the Encoder for format. options will be passed to the Encoder.
See CodeRay::Encoder.encode_stream
196 197 198 |
# File 'lib/coderay.rb', line 196 def encode_stream code, lang, format, = {} encoder(format, ).encode_stream code, lang, end |
.encode_tokens(tokens, format, options = {}) ⇒ Object
230 231 232 |
# File 'lib/coderay.rb', line 230 def encode_tokens tokens, format, = {} encoder(format, ).encode_tokens tokens, end |
.encoder(format, options = {}) ⇒ Object
Finds the Encoder class for format and creates an instance, passing options to it.
Example:
require 'coderay'
stats = CodeRay.encoder(:statistic)
stats.encode("puts 17 + 4\n", :ruby)
puts '%d out of %d tokens have the kind :integer.' % [
stats.type_stats[:integer].count,
stats.real_token_count
]
#-> 2 out of 4 tokens have the kind :integer.
271 272 273 |
# File 'lib/coderay.rb', line 271 def encoder format, = {} Encoders[format].new end |
.get_scanner_options(options) ⇒ Object
Extract the options for the scanner from the options hash.
Returns an empty Hash if :scanner_options is not set.
This is used if a method like CodeRay.encode has to provide options for Encoder and scanner.
289 290 291 |
# File 'lib/coderay.rb', line 289 def .fetch :scanner_options, {} end |
.highlight(code, lang, options = { :css => :class }, format = :div) ⇒ Object
Highlight a string into a HTML <div>.
CSS styles use classes, so you have to include a stylesheet in your output.
See encode.
217 218 219 |
# File 'lib/coderay.rb', line 217 def highlight code, lang, = { :css => :class }, format = :div encode code, lang, format, end |
.highlight_file(filename, options = { :css => :class }, format = :div) ⇒ Object
Highlight a file into a HTML <div>.
CSS styles use classes, so you have to include a stylesheet in your output.
See encode.
253 254 255 |
# File 'lib/coderay.rb', line 253 def highlight_file filename, = { :css => :class }, format = :div encode_file filename, format, end |
.require_plugin(path) ⇒ Object
Convenience method for plugin loading. The syntax used is:
CodeRay.require_plugin '<Host ID>/<Plugin ID>'
Returns the loaded plugin.
341 342 343 344 345 346 347 |
# File 'lib/coderay/helpers/plugin.rb', line 341 def self.require_plugin path host_id, plugin_id = path.split '/', 2 host = PluginHost.host_by_id(host_id) raise PluginHost::HostNotFound, "No host for #{host_id.inspect} found." unless host host.load plugin_id end |
.scan(code, lang, options = {}, &block) ⇒ Object
Scans the given code (a String) with the Scanner for lang.
This is a simple way to use CodeRay. Example:
require 'coderay'
page = CodeRay.scan("puts 'Hello, world!'", :ruby).html
See also demo/demo_simple.
154 155 156 157 |
# File 'lib/coderay.rb', line 154 def scan code, lang, = {}, &block scanner = Scanners[lang].new code, , &block scanner.tokenize end |
.scan_file(filename, lang = :auto, options = {}, &block) ⇒ Object
Scans filename (a path to a code file) with the Scanner for lang.
If lang is :auto or omitted, the CodeRay::FileType module is used to determine it. If it cannot find out what type it is, it uses CodeRay::Scanners::Plaintext.
Calls CodeRay.scan.
Example:
require 'coderay'
page = CodeRay.scan_file('some_c_code.c').html
170 171 172 173 174 175 176 177 |
# File 'lib/coderay.rb', line 170 def scan_file filename, lang = :auto, = {}, &block file = IO.read filename if lang == :auto require 'coderay/helpers/file_type' lang = FileType.fetch filename, :plaintext, true end scan file, lang, = {}, &block end |
.scan_stream(code, lang, options = {}, &block) ⇒ Object
Scan the code (a string) with the scanner for lang.
Calls scan.
See CodeRay.scan.
184 185 186 187 |
# File 'lib/coderay.rb', line 184 def scan_stream code, lang, = {}, &block [:stream] = true scan code, lang, , &block end |
.scanner(lang, options = {}) ⇒ Object
Finds the Scanner class for lang and creates an instance, passing options to it.
See Scanner.new.
279 280 281 |
# File 'lib/coderay.rb', line 279 def scanner lang, = {} Scanners[lang].new '', end |