Class: LHS::Data
- Inherits:
-
Object
- Object
- LHS::Data
- Defined in:
- lib/lhs/data.rb,
lib/lhs/concerns/data/json.rb,
lib/lhs/concerns/data/becomes.rb,
lib/lhs/concerns/data/to_hash.rb,
lib/lhs/concerns/data/equality.rb
Overview
Data provides functionalities to accesses information
Defined Under Namespace
Modules: Becomes, Equality, Json, ToHash
Instance Attribute Summary collapse
-
#_endpoint ⇒ Object
prevent clashing with attributes of underlying data.
-
#_parent ⇒ Object
prevent clashing with attributes of underlying data.
-
#_proxy ⇒ Object
prevent clashing with attributes of underlying data.
-
#_raw ⇒ Object
Returns the value of attribute _raw.
-
#_record ⇒ Object
prevent clashing with attributes of underlying data.
-
#_request ⇒ Object
prevent clashing with attributes of underlying data.
Instance Method Summary collapse
- #_root ⇒ Object
- #class ⇒ Object
- #collection? ⇒ Boolean
-
#initialize(input, parent = nil, record = nil, request = nil, endpoint = nil) ⇒ Data
constructor
A new instance of Data.
- #item? ⇒ Boolean
-
#merge_raw!(data) ⇒ Object
merging data e.g.
- #parent ⇒ Object
- #root_item? ⇒ Boolean
-
#unwrap(usecase) ⇒ Object
Unwraps data for certain use cases like items_created_key for CREATE, UPDATED etc.
Methods included from Inspect
Methods included from Json
Methods included from Equality
Methods included from Becomes
Constructor Details
#initialize(input, parent = nil, record = nil, request = nil, endpoint = nil) ⇒ Data
Returns a new instance of Data.
24 25 26 27 28 29 30 31 |
# File 'lib/lhs/data.rb', line 24 def initialize(input, parent = nil, record = nil, request = nil, endpoint = nil) self._raw = raw_from_input(input) self._parent = parent self._record = record self._proxy = proxy_from_input(input) self._request = request self._endpoint = endpoint end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args, &block) ⇒ Object (protected)
87 88 89 |
# File 'lib/lhs/data.rb', line 87 def method_missing(name, *args, &block) _proxy.send(name, *args, &block) end |
Instance Attribute Details
#_endpoint ⇒ Object
prevent clashing with attributes of underlying data
21 22 23 |
# File 'lib/lhs/data.rb', line 21 def _endpoint @_endpoint end |
#_parent ⇒ Object
prevent clashing with attributes of underlying data
21 22 23 |
# File 'lib/lhs/data.rb', line 21 def _parent @_parent end |
#_proxy ⇒ Object
prevent clashing with attributes of underlying data
21 22 23 |
# File 'lib/lhs/data.rb', line 21 def _proxy @_proxy end |
#_raw ⇒ Object
Returns the value of attribute _raw.
22 23 24 |
# File 'lib/lhs/data.rb', line 22 def _raw @_raw end |
#_record ⇒ Object
prevent clashing with attributes of underlying data
21 22 23 |
# File 'lib/lhs/data.rb', line 21 def _record @_record end |
#_request ⇒ Object
prevent clashing with attributes of underlying data
21 22 23 |
# File 'lib/lhs/data.rb', line 21 def _request @_request end |
Instance Method Details
#_root ⇒ Object
49 50 51 52 53 |
# File 'lib/lhs/data.rb', line 49 def _root root = self root = root._parent while root&._parent root end |
#class ⇒ Object
63 64 65 |
# File 'lib/lhs/data.rb', line 63 def class _root._record end |
#collection? ⇒ Boolean
77 78 79 |
# File 'lib/lhs/data.rb', line 77 def collection? _proxy.is_a? LHS::Collection end |
#item? ⇒ Boolean
81 82 83 |
# File 'lib/lhs/data.rb', line 81 def item? _proxy.is_a? LHS::Item end |
#merge_raw!(data) ⇒ Object
merging data e.g. when loading remote data via link
35 36 37 38 |
# File 'lib/lhs/data.rb', line 35 def merge_raw!(data) return false if data.blank? || !data._raw.is_a?(Hash) _raw.merge! data._raw end |
#parent ⇒ Object
55 56 57 58 59 60 61 |
# File 'lib/lhs/data.rb', line 55 def parent if _parent&._record _parent._record.new(_parent, false) else _parent end end |
#root_item? ⇒ Boolean
73 74 75 |
# File 'lib/lhs/data.rb', line 73 def root_item? root_item == self end |
#unwrap(usecase) ⇒ Object
Unwraps data for certain use cases like items_created_key for CREATE, UPDATED etc. like item_key for GET etc.
43 44 45 46 47 |
# File 'lib/lhs/data.rb', line 43 def unwrap(usecase) nested_path = record.send(usecase) if record return LHS::Data.new(dig(*nested_path) || _raw, nil, self.class) if nested_path self end |