Module: Origami::StandardObject::ClassMethods
- Defined in:
- lib/origami/object.rb
Overview
:nodoc:all
Instance Method Summary collapse
- #define_field_methods(field) ⇒ Object
- #field(name, attributes) ⇒ Object
- #fields ⇒ Object
- #hint_type(name) ⇒ Object
- #inherited(subclass) ⇒ Object
-
#required_fields ⇒ Object
Returns an array of required fields for the current Object.
Instance Method Details
#define_field_methods(field) ⇒ Object
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
# File 'lib/origami/object.rb', line 131 def define_field_methods(field) # # Getter method. # getter = field.to_s remove_method(getter) rescue NameError define_method(getter) do obj = self[field] obj.is_a?(Reference) ? obj.solve : obj end # # Setter method. # setter = field.to_s + "=" remove_method(setter) rescue NameError define_method(setter) do |value| self[field] = value end # Setter method returning self. setter_self = "set" + field.to_s remove_method(setter_self) rescue NameError define_method(setter_self) do |value| self[field] = value self end end |
#field(name, attributes) ⇒ Object
117 118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/origami/object.rb', line 117 def field(name, attributes) if attributes[:Required] == true and attributes.has_key?(:Default) and attributes[:Type] == Name self.add_type_info(self, name, attributes[:Default]) end if @fields.has_key?(name) @fields[name].merge! attributes else @fields[name] = attributes end define_field_methods(name) end |
#fields ⇒ Object
113 114 115 |
# File 'lib/origami/object.rb', line 113 def fields @fields end |
#hint_type(name) ⇒ Object
173 174 175 176 177 |
# File 'lib/origami/object.rb', line 173 def hint_type(name) if @fields.has_key?(name) @fields[name][:Type] end end |
#inherited(subclass) ⇒ Object
109 110 111 |
# File 'lib/origami/object.rb', line 109 def inherited(subclass) subclass.instance_variable_set(:@fields, Hash[@fields.map{|name, attributes| [name, attributes.clone]}]) end |
#required_fields ⇒ Object
Returns an array of required fields for the current Object.
164 165 166 167 168 169 170 171 |
# File 'lib/origami/object.rb', line 164 def required_fields fields = [] @fields.each_pair do |name, attributes| fields << name if attributes[:Required] == true end fields end |