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
The #convert_value method and its signature are part of Hashie::Mash’s API, so we can’t unilaterally decide to change ‘duping` to be a keyword argument rubocop:disable Style/OptionalBooleanParameter.
- #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.
49 50 51 52 53 |
# File 'lib/restforce/mash.rb', line 49 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.
13 14 15 16 17 18 19 20 21 22 |
# File 'lib/restforce/mash.rb', line 13 def build(val, client) case val when Array val.collect { |a_val| self.build(a_val, client) } when 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.
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/restforce/mash.rb', line 26 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.dig('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
The #convert_value method and its signature are part of Hashie::Mash’s API, so we can’t unilaterally decide to change ‘duping` to be a keyword argument rubocop:disable Style/OptionalBooleanParameter
62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/restforce/mash.rb', line 62 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
55 56 57 |
# File 'lib/restforce/mash.rb', line 55 def dup self.class.new(self, @client, self.default) end |