Module: Transmutable
- Defined in:
- lib/transmutable.rb
Class Method Summary collapse
Instance Method Summary collapse
- #serialize ⇒ Object
- #serialize_val(key, return_hash, value) ⇒ Object
- #serialize_with(*relations) ⇒ Object
Class Method Details
.add_default_transmuter_to(base) ⇒ Object
11 12 13 14 15 |
# File 'lib/transmutable.rb', line 11 def self.add_default_transmuter_to(base) base.class_eval do transmuter Base end end |
.included(base) ⇒ Object
5 6 7 8 9 |
# File 'lib/transmutable.rb', line 5 def self.included(base) base.extend(TransmutableClassMethods) add_default_transmuter_to(base) end |
Instance Method Details
#serialize ⇒ Object
17 18 19 |
# File 'lib/transmutable.rb', line 17 def serialize transmuter.new(self).transmute end |
#serialize_val(key, return_hash, value) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/transmutable.rb', line 50 def serialize_val(key, return_hash, value) return return_hash[key] = {} if value.nil? if value.respond_to?(:each) && !value.is_a?(Hash) return_hash[key] = value.collect do |val| if val.respond_to? :serialize return_hash[key] = val.serialize else {} end end else return_hash[key] = value.serialize end end |
#serialize_with(*relations) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/transmutable.rb', line 21 def serialize_with(*relations) return_hash = serialize relations.each do |relation| case relation when String, Symbol serialize_val(relation, return_hash, send(relation)) when Hash relation.each do |key, values| relation_val = send(key) if relation_val.respond_to?(:each) && !relation_val.is_a?(Hash) relation_val.each do |rel_val| if return_hash[key].present? return_hash[key] << rel_val.serialize_with(*values) else return_hash[key] = [rel_val.serialize_with(*values)] end end else return_hash[key] = relation_val.serialize_with(*values) end end end end return_hash end |