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.
96 97 98 |
# File 'lib/restpack_serializer/serializable.rb', line 96 def href_prefix @href_prefix end |
#key ⇒ Object
Returns the value of attribute key.
96 97 98 |
# File 'lib/restpack_serializer/serializable.rb', line 96 def key @key end |
#model_class ⇒ Object
Returns the value of attribute model_class.
96 97 98 |
# File 'lib/restpack_serializer/serializable.rb', line 96 def model_class @model_class end |
#track_defined_methods ⇒ Object
Returns the value of attribute track_defined_methods.
96 97 98 |
# File 'lib/restpack_serializer/serializable.rb', line 96 def track_defined_methods @track_defined_methods end |
#user_defined_methods ⇒ Object
Returns the value of attribute user_defined_methods.
96 97 98 |
# File 'lib/restpack_serializer/serializable.rb', line 96 def user_defined_methods @user_defined_methods end |
Instance Method Details
#array_as_json(models, context = {}) ⇒ Object
124 125 126 |
# File 'lib/restpack_serializer/serializable.rb', line 124 def array_as_json(models, context = {}) new.as_json(models, context) end |
#as_json(model, context = {}) ⇒ Object
128 129 130 |
# File 'lib/restpack_serializer/serializable.rb', line 128 def as_json(model, context = {}) new.as_json(model, context) end |
#has_user_defined_method?(method_name) ⇒ Boolean
106 107 108 109 110 |
# File 'lib/restpack_serializer/serializable.rb', line 106 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
112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/restpack_serializer/serializable.rb', line 112 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
98 99 100 101 102 103 104 |
# File 'lib/restpack_serializer/serializable.rb', line 98 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
156 157 158 |
# File 'lib/restpack_serializer/serializable.rb', line 156 def plural_key self.key end |
#serialize(models, context = {}) ⇒ Object
132 133 134 135 136 137 138 |
# File 'lib/restpack_serializer/serializable.rb', line 132 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
152 153 154 |
# File 'lib/restpack_serializer/serializable.rb', line 152 def singular_key self.key.to_s.singularize.to_sym end |