Class: Vident::Stimulus::Collection

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/vident/stimulus/collection.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(kind:, items:) ⇒ Collection

Returns a new instance of Collection.



10
11
12
13
# File 'lib/vident/stimulus/collection.rb', line 10

def initialize(kind:, items:)
  @kind = kind
  @items = items.freeze
end

Instance Attribute Details

#itemsObject (readonly)

Returns the value of attribute items.



8
9
10
# File 'lib/vident/stimulus/collection.rb', line 8

def items
  @items
end

#kindObject (readonly)

Returns the value of attribute kind.



8
9
10
# File 'lib/vident/stimulus/collection.rb', line 8

def kind
  @kind
end

Instance Method Details

#any?Boolean

Returns:

  • (Boolean)


25
# File 'lib/vident/stimulus/collection.rb', line 25

def any? = @items.any?

#each(&block) ⇒ Object



15
# File 'lib/vident/stimulus/collection.rb', line 15

def each(&block) = @items.each(&block)

#empty?Boolean

Returns:

  • (Boolean)


23
# File 'lib/vident/stimulus/collection.rb', line 23

def empty? = @items.empty?

#lengthObject



21
# File 'lib/vident/stimulus/collection.rb', line 21

def length = @items.size

#merge(other) ⇒ Object



32
33
34
35
36
37
# File 'lib/vident/stimulus/collection.rb', line 32

def merge(other)
  unless other.is_a?(self.class) && other.kind == @kind
    raise ArgumentError, "Collection#merge: can only merge with same-kind Collection"
  end
  self.class.new(kind: @kind, items: @items + other.items)
end

#sizeObject



19
# File 'lib/vident/stimulus/collection.rb', line 19

def size = @items.size

#to_aObject



17
# File 'lib/vident/stimulus/collection.rb', line 17

def to_a = @items.dup

#to_hObject Also known as: to_hash



27
28
29
# File 'lib/vident/stimulus/collection.rb', line 27

def to_h
  @kind.value_class.to_data_hash(@items)
end