Class: LHS::Collection::InternalCollection::Collection

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/lhs/concerns/collection/internal_collection.rb

Overview

The internal collection class that includes enumerable and insures to return LHS::Items in case of iterating items

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(raw, parent, record) ⇒ Collection

Returns a new instance of Collection.



19
20
21
22
23
# File 'lib/lhs/concerns/collection/internal_collection.rb', line 19

def initialize(raw, parent, record)
  self.raw = raw
  @parent = parent
  @record = record
end

Instance Attribute Details

#rawObject

Returns the value of attribute raw.



15
16
17
# File 'lib/lhs/concerns/collection/internal_collection.rb', line 15

def raw
  @raw
end

Instance Method Details

#compactObject



39
40
41
42
43
# File 'lib/lhs/concerns/collection/internal_collection.rb', line 39

def compact
  dup.tap do |collection|
    collection.compact! if collection.raw.present?
  end.as_json # do not return an internal collection!
end

#compact!Object



45
46
47
48
49
50
51
52
53
# File 'lib/lhs/concerns/collection/internal_collection.rb', line 45

def compact!
  self.raw = raw.map do |item|
    if item.is_a?(LHS::Data) && item._request && !item._request.response.success?
      nil
    else
      cast_item(item)
    end
  end.compact
end

#each(&_block) ⇒ Object



29
30
31
32
33
34
35
36
37
# File 'lib/lhs/concerns/collection/internal_collection.rb', line 29

def each(&_block)
  raw.each do |item|
    if item.is_a? Hash
      yield cast_item(item)
    else
      yield item
    end
  end
end

#to_aryObject



25
26
27
# File 'lib/lhs/concerns/collection/internal_collection.rb', line 25

def to_ary
  map { |item| item }
end