encoding: ASCII-8BIT
CODERAY_PATH | = | File.join File.dirname(__FILE__), 'coderay' | ||
VERSION | = | '1.0.8' | ||
TokenKinds | = | Hash.new do |h, k| warn 'Undefined Token kind: %p' % [k] if $CODERAY_DEBUG | A Hash of all known token kinds and their associated CSS classes. |
Assuming the path is a subpath of lib/coderay/
# File lib/coderay.rb, line 133 133: def self.coderay_path *path 134: File.join CODERAY_PATH, *path 135: end
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.
# File lib/coderay.rb, line 197 197: def encode code, lang, format, options = {} 198: encoder(format, options).encode code, lang, options 199: end
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
# File lib/coderay.rb, line 222 222: def encode_file filename, format, options = {} 223: tokens = scan_file filename, :auto, get_scanner_options(options) 224: encode_tokens tokens, format, options 225: end
Encode pre-scanned Tokens. Use this together with CodeRay.scan:
require 'coderay' # Highlight a short Ruby code example in a HTML span tokens = CodeRay.scan '1 + 2', :ruby puts CodeRay.encode_tokens(tokens, :span)
# File lib/coderay.rb, line 210 210: def encode_tokens tokens, format, options = {} 211: encoder(format, options).encode_tokens tokens, options 212: end
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.
# File lib/coderay.rb, line 261 261: def encoder format, options = {} 262: Encoders[format].new options 263: end
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.
# File lib/coderay.rb, line 279 279: def get_scanner_options options 280: options.fetch :scanner_options, {} 281: end
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.
# File lib/coderay.rb, line 168 168: def scan code, lang, options = {}, &block 169: # FIXME: return a proxy for direct-stream encoding 170: TokensProxy.new code, lang, options, block 171: end
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::Text.
Calls CodeRay.scan.
Example:
require 'coderay' page = CodeRay.scan_file('some_c_code.c').html
# File lib/coderay.rb, line 184 184: def scan_file filename, lang = :auto, options = {}, &block 185: lang = FileType.fetch filename, :text, true if lang == :auto 186: code = File.read filename 187: scan code, lang, options, &block 188: end