class Indexers::Dsl::Traitable

Public Class Methods

new(indexer=nil, args=[], parent={}, binding=nil, &block) click to toggle source
Calls superclass method Indexers::Dsl::Api::new
# File lib/indexers/dsl/traitable.rb, line 5
def initialize(indexer=nil, args=[], parent={}, binding=nil, &block)
  @indexer = indexer
  @binding = binding
  @block = block
  super args, parent, &block
end

Public Instance Methods

method_missing(name, *args, &block) click to toggle source
Calls superclass method Indexers::Dsl::Api#method_missing
# File lib/indexers/dsl/traitable.rb, line 22
def method_missing(name, *args, &block)
  if args.size == 0 && !block_given? && @binding.try(:local_variable_defined?, name)
    @binding.local_variable_get name
  else
    super
  end
end
traits(*names) click to toggle source
# File lib/indexers/dsl/traitable.rb, line 12
def traits(*names)
  if @indexer
    @binding = @block.binding
    names.each do |name|
      instance_eval &@indexer.options[:traits][name]
    end
    @binding = nil
  end
end

Private Instance Methods

continue(args, parent, &block) click to toggle source
# File lib/indexers/dsl/traitable.rb, line 32
def continue(args, parent, &block)
  self.class.new @indexer, args, parent, @binding, &block
end