Sha256: 75d90ccb894e26ec3ee57c42d6cca7d4b1b2accbda87c2be8b3a6dda5500ba6f

Contents?: true

Size: 1.03 KB

Versions: 3

Compression:

Stored size: 1.03 KB

Contents

require 'active_record'
require 'active_support/core_ext'
require 'set_builder/traits'
require 'set_builder/modifiers'
require 'set_builder/value_map'
require 'set_builder/set'
require 'set_builder/engine'


module SetBuilder
  
  
  def self.extended(base)
    base.instance_variable_set("@traits", SetBuilder::Traits.new)
    base.send(:include, SetBuilder::Modifiers)
  end
  
  
  attr_reader :traits
  
  
  def modifiers
    traits.modifiers
  end
  
  
  def that_belong_to(set)
    SetBuilder::Set.new(self, to_scope, set)
  end
  
  
  def to_scope
    scoped
  end
  
  
protected
  
  
  
  def trait(*args, &block)
    part_of_speech = get_part_of_speech(args.shift)
    name = args.shift
    traits << Trait.new(name, part_of_speech, *args, &block)
  end
  
  
  def get_part_of_speech(arg)
    case arg
    when :is, :are, :reflexive
      :reflexive
    when nil, :active
      :active
    when :was, :were, :passive
      :passive
    when :has, :have, :perfect
      :perfect
    when :whose, :noun
      :noun
    end
  end
  
  
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
set_builder-1.2.0.beta3 lib/set_builder.rb
set_builder-1.2.0.beta2 lib/set_builder.rb
set_builder-1.2.0.beta1 lib/set_builder.rb