Sha256: 0c383b05bf021edb2c131269f167e9ed23103ba9bab68ed47625782fbd8c901a

Contents?: true

Size: 1.5 KB

Versions: 6656

Compression:

Stored size: 1.5 KB

Contents

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

Version data entries

6,656 entries across 6,644 versions & 72 rubygems

Version Path
mux_ruby-3.20.0 vendor/bundle/ruby/3.2.0/gems/coderay-1.1.3/lib/coderay/tokens_proxy.rb
cybrid_api_bank_ruby-0.123.12 vendor/bundle/ruby/3.3.0/gems/coderay-1.1.3/lib/coderay/tokens_proxy.rb
cybrid_api_organization_ruby-0.123.12 vendor/bundle/ruby/3.3.0/gems/coderay-1.1.3/lib/coderay/tokens_proxy.rb
cybrid_api_id_ruby-0.123.12 vendor/bundle/ruby/3.3.0/gems/coderay-1.1.3/lib/coderay/tokens_proxy.rb
cybrid_api_bank_ruby-0.123.11 vendor/bundle/ruby/3.3.0/gems/coderay-1.1.3/lib/coderay/tokens_proxy.rb
cybrid_api_organization_ruby-0.123.11 vendor/bundle/ruby/3.3.0/gems/coderay-1.1.3/lib/coderay/tokens_proxy.rb
cybrid_api_id_ruby-0.123.11 vendor/bundle/ruby/3.3.0/gems/coderay-1.1.3/lib/coderay/tokens_proxy.rb
cybrid_api_id_ruby-0.123.10 vendor/bundle/ruby/3.3.0/gems/coderay-1.1.3/lib/coderay/tokens_proxy.rb
cybrid_api_bank_ruby-0.123.10 vendor/bundle/ruby/3.3.0/gems/coderay-1.1.3/lib/coderay/tokens_proxy.rb
cybrid_api_organization_ruby-0.123.10 vendor/bundle/ruby/3.3.0/gems/coderay-1.1.3/lib/coderay/tokens_proxy.rb
cybrid_api_organization_ruby-0.123.7 vendor/bundle/ruby/3.3.0/gems/coderay-1.1.3/lib/coderay/tokens_proxy.rb
cybrid_api_id_ruby-0.123.7 vendor/bundle/ruby/3.3.0/gems/coderay-1.1.3/lib/coderay/tokens_proxy.rb
cybrid_api_bank_ruby-0.123.7 vendor/bundle/ruby/3.3.0/gems/coderay-1.1.3/lib/coderay/tokens_proxy.rb
ory-client-1.15.12 vendor/bundle/ruby/3.1.0/gems/coderay-1.1.3/lib/coderay/tokens_proxy.rb
cybrid_api_bank_ruby-0.123.4 vendor/bundle/ruby/3.3.0/gems/coderay-1.1.3/lib/coderay/tokens_proxy.rb
cybrid_api_id_ruby-0.123.4 vendor/bundle/ruby/3.3.0/gems/coderay-1.1.3/lib/coderay/tokens_proxy.rb
cybrid_api_organization_ruby-0.123.4 vendor/bundle/ruby/3.3.0/gems/coderay-1.1.3/lib/coderay/tokens_proxy.rb
cybrid_api_bank_ruby-0.123.3 vendor/bundle/ruby/3.3.0/gems/coderay-1.1.3/lib/coderay/tokens_proxy.rb
cybrid_api_organization_ruby-0.123.3 vendor/bundle/ruby/3.3.0/gems/coderay-1.1.3/lib/coderay/tokens_proxy.rb
cybrid_api_id_ruby-0.123.3 vendor/bundle/ruby/3.3.0/gems/coderay-1.1.3/lib/coderay/tokens_proxy.rb