Mercurial > hg > soundsoftware-site
view vendor/gems/coderay-1.0.0/lib/coderay/tokens_proxy.rb @ 1082:997f6d7738f7 bug_531
In repo controller entry action, show the page for the file even if it's binary (so user still has access to history etc links). This makes it possible to use the entry action as the default when a file is clicked on
author | Chris Cannam <chris.cannam@soundsoftware.ac.uk> |
---|---|
date | Thu, 22 Nov 2012 18:04:17 +0000 |
parents | cbb26bc654de |
children |
line wrap: on
line source
module CodeRay # The result of a scan operation is a TokensProxy, but should act like Tokens. # # This proxy makes it possible to use the classic CodeRay.scan.encode API # while still providing the benefits of direct streaming. class TokensProxy attr_accessor :input, :lang, :options, :block # Create a new TokensProxy with the arguments of CodeRay.scan. def initialize input, lang, options = {}, block = nil @input = input @lang = lang @options = options @block = block end # Call CodeRay.encode if +encoder+ is a Symbol; # otherwise, convert the receiver to tokens and call encoder.encode_tokens. def encode encoder, options = {} if encoder.respond_to? :to_sym CodeRay.encode(input, lang, encoder, options) else encoder.encode_tokens tokens, options end end # Tries to call encode; # delegates to tokens otherwise. def method_missing method, *args, &blk encode method.to_sym, *args rescue PluginHost::PluginNotFound tokens.send(method, *args, &blk) end # The (cached) result of the tokenized input; a Tokens instance. def tokens @tokens ||= scanner.tokenize(input) end # A (cached) scanner instance to use for the scan task. def scanner @scanner ||= CodeRay.scanner(lang, options, &block) end # Overwrite Struct#each. def each *args, &blk tokens.each(*args, &blk) self end end end