Sha256: b2b53f021c0203f2b1275bc2efa1887ad6e97b655ae3515a2f4dd4e80dc4a584

Contents?: true

Size: 997 Bytes

Versions: 14

Compression:

Stored size: 997 Bytes

Contents

module JasonObjectListProperties
  def self.included(base)
    base.extend(MetaListProperties)
  end
  
  module MetaListProperties
    def create_member_list list_name, list_class, list_type
      list = {}
      list = self.class_variable_get :@@lists if self.class_variable_defined? :@@lists
      list[list_name] = [list_class, list_type]
      self.send(:class_variable_set, "@@lists", list)

      define_method(list_name) do
        #puts "Looking at the #{list_name.to_s} list, which is full of #{list_type.name}s"
        Medea::JasonListProperty.new self, list_name, list_class, list_type
      end
    end

    def has_many list_name, list_class
      create_member_list list_name, list_class, :reference
    end

    def owns_many list_name, list_class
      create_member_list list_name, list_class, :value

      #also modify the items in the list so that they know that they're owned
      #list_type.class_variable_set :@@owner, self
      list_class.owned = true
    end
  end
end

Version data entries

14 entries across 14 versions & 2 rubygems

Version Path
Medea-0.2.26 lib/medea/list_properties.rb
medea-0.2.25 lib/medea/list_properties.rb
medea-0.2.24 lib/medea/list_properties.rb
medea-0.2.23 lib/medea/list_properties.rb
medea-0.2.22 lib/medea/list_properties.rb
medea-0.2.21 lib/medea/list_properties.rb
medea-0.2.20 lib/medea/list_properties.rb
medea-0.2.19 lib/medea/list_properties.rb
medea-0.2.18 lib/medea/list_properties.rb
medea-0.2.17 lib/medea/list_properties.rb
medea-0.2.16 lib/medea/list_properties.rb
medea-0.2.15 lib/medea/list_properties.rb
medea-0.2.14 lib/medea/list_properties.rb
medea-0.2.13 lib/medea/list_properties.rb