Module: RestPack::Serializer::ClassMethods
- Defined in:
- lib/restpack_serializer/serializable.rb
Instance Attribute Summary collapse
-
#href_prefix ⇒ Object
Returns the value of attribute href_prefix.
-
#key ⇒ Object
Returns the value of attribute key.
-
#model_class ⇒ Object
Returns the value of attribute model_class.
-
#track_defined_methods ⇒ Object
Returns the value of attribute track_defined_methods.
-
#user_defined_methods ⇒ Object
Returns the value of attribute user_defined_methods.
Instance Method Summary collapse
- #array_as_json(models, context = {}) ⇒ Object
- #as_json(model, context = {}) ⇒ Object
- #has_user_defined_method?(method_name) ⇒ Boolean
- #memoized_has_user_defined_method?(method_name) ⇒ Boolean
- #method_added(name) ⇒ Object
- #plural_key ⇒ Object
- #serialize(models, context = {}) ⇒ Object
- #singular_key ⇒ Object
Instance Attribute Details
#href_prefix ⇒ Object
Returns the value of attribute href_prefix.
132 133 134 |
# File 'lib/restpack_serializer/serializable.rb', line 132 def href_prefix @href_prefix end |
#key ⇒ Object
Returns the value of attribute key.
132 133 134 |
# File 'lib/restpack_serializer/serializable.rb', line 132 def key @key end |
#model_class ⇒ Object
Returns the value of attribute model_class.
132 133 134 |
# File 'lib/restpack_serializer/serializable.rb', line 132 def model_class @model_class end |
#track_defined_methods ⇒ Object
Returns the value of attribute track_defined_methods.
132 133 134 |
# File 'lib/restpack_serializer/serializable.rb', line 132 def track_defined_methods @track_defined_methods end |
#user_defined_methods ⇒ Object
Returns the value of attribute user_defined_methods.
132 133 134 |
# File 'lib/restpack_serializer/serializable.rb', line 132 def user_defined_methods @user_defined_methods end |
Instance Method Details
#array_as_json(models, context = {}) ⇒ Object
160 161 162 |
# File 'lib/restpack_serializer/serializable.rb', line 160 def array_as_json(models, context = {}) new.as_json(models, context) end |
#as_json(model, context = {}) ⇒ Object
164 165 166 |
# File 'lib/restpack_serializer/serializable.rb', line 164 def as_json(model, context = {}) new.as_json(model, context) end |
#has_user_defined_method?(method_name) ⇒ Boolean
142 143 144 145 146 |
# File 'lib/restpack_serializer/serializable.rb', line 142 def has_user_defined_method?(method_name) user_defined_methods = self.user_defined_methods || [] return true if user_defined_methods.include?(method_name) return self.superclass.try(:has_user_defined_method?, method_name) end |
#memoized_has_user_defined_method?(method_name) ⇒ Boolean
148 149 150 151 152 153 154 155 156 157 158 |
# File 'lib/restpack_serializer/serializable.rb', line 148 def memoized_has_user_defined_method?(method_name) @memoized_user_defined_methods ||= {} if @memoized_user_defined_methods.has_key? method_name return @memoized_user_defined_methods[method_name] else has_method = has_user_defined_method?(method_name) @memoized_user_defined_methods[method_name] = has_method return has_method end end |
#method_added(name) ⇒ Object
134 135 136 137 138 139 140 |
# File 'lib/restpack_serializer/serializable.rb', line 134 def method_added(name) #we track used defined methods so that we can make quick decisions at runtime @user_defined_methods ||= [] if @track_defined_methods @user_defined_methods << name end end |
#plural_key ⇒ Object
192 193 194 |
# File 'lib/restpack_serializer/serializable.rb', line 192 def plural_key self.key end |
#serialize(models, context = {}) ⇒ Object
168 169 170 171 172 173 174 |
# File 'lib/restpack_serializer/serializable.rb', line 168 def serialize(models, context = {}) models = [models] unless models.kind_of?(Array) { self.key() => models.map {|model| self.as_json(model, context)} } end |
#singular_key ⇒ Object
188 189 190 |
# File 'lib/restpack_serializer/serializable.rb', line 188 def singular_key self.key.to_s.singularize.to_sym end |