Class: Restforce::Mash
- Inherits:
-
Hashie::Mash
- Object
- Hashie::Mash
- Restforce::Mash
- Defined in:
- lib/restforce/mash.rb
Direct Known Subclasses
Class Method Summary collapse
-
.build(val, client) ⇒ Object
Pass in an Array or Hash and it will be recursively converted into the appropriate Restforce::Collection, Restforce::SObject and Restforce::Mash objects.
-
.klass(val) ⇒ Object
When passed a hash, it will determine what class is appropriate to represent the data.
Instance Method Summary collapse
- #convert_value(val, duping = false) ⇒ Object
- #dup ⇒ Object
-
#initialize(source_hash = nil, client = nil, default = nil, &blk) ⇒ Mash
constructor
A new instance of Mash.
Constructor Details
#initialize(source_hash = nil, client = nil, default = nil, &blk) ⇒ Mash
Returns a new instance of Mash.
46 47 48 49 50 |
# File 'lib/restforce/mash.rb', line 46 def initialize(source_hash = nil, client = nil, default = nil, &blk) @client = client deep_update(source_hash) if source_hash default ? super(default) : super(&blk) end |
Class Method Details
.build(val, client) ⇒ Object
Pass in an Array or Hash and it will be recursively converted into the appropriate Restforce::Collection, Restforce::SObject and Restforce::Mash objects.
11 12 13 14 15 16 17 18 19 |
# File 'lib/restforce/mash.rb', line 11 def build(val, client) if val.is_a?(Array) val.collect { |a_val| self.build(a_val, client) } elsif val.is_a?(Hash) self.klass(val).new(val, client) else val end end |
.klass(val) ⇒ Object
When passed a hash, it will determine what class is appropriate to represent the data.
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/restforce/mash.rb', line 23 def klass(val) if val.key? 'records' # When the hash has a records key, it should be considered a collection # of sobject records. Restforce::Collection elsif val.key? 'attributes' case (val['attributes']['type']) when "Attachment" Restforce::Attachment when "Document" Restforce::Document else # When the hash contains an attributes key, it should be considered an # sobject record Restforce::SObject end else # Fallback to a standard Restforce::Mash for everything else Restforce::Mash end end |
Instance Method Details
#convert_value(val, duping = false) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/restforce/mash.rb', line 56 def convert_value(val, duping = false) case val when self.class val.dup when ::Hash val = val.dup if duping self.class.klass(val).new(val, @client) when Array val.collect { |e| convert_value(e) } else val end end |
#dup ⇒ Object
52 53 54 |
# File 'lib/restforce/mash.rb', line 52 def dup self.class.new(self, @client, self.default) end |