Sha256: bcc7efdf6e0f9d41d60e37c1faad8368ababc5ac79ce2f57bb262732ef080d4f

Contents?: true

Size: 1.07 KB

Versions: 3

Compression:

Stored size: 1.07 KB

Contents

module RestfulObjects
  module ObjectMacros
    def property(name, type, options = {})
      RestfulObjects::DomainModel.current.types[self.name].properties.add(name.to_s, type, options)
      if options[:read_only]
        self.class_eval { attr_reader name }
      else
        if not options[:max_length]
          self.class_eval { attr_accessor name }
        else
          self.class_eval do
            attr_reader name

            define_method "#{name}=".to_sym do |value|
              raise "string max length exceeded" if value && value.length > options[:max_length]
              instance_variable_set("@#{name}".to_sym, value)
            end
          end
        end
      end
    end

    def collection(name, type, options = {})
      type = type.name if type.is_a? Class

      RestfulObjects::DomainModel.current.types[self.name].collections.add(name.to_s, type, options)

      self.class_eval { attr_reader name }
    end

    def action(name, options = {})
      RestfulObjects::DomainModel.current.types[self.name].actions.add(name.to_s, options)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
restful_objects-0.0.5 lib/restful_objects/object_macros.rb
restful_objects-0.0.4 lib/restful_objects/object_macros.rb
restful_objects-0.0.3 lib/restful_objects/object_macros.rb