Class: Deftones::IO::Buffers

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/deftones/io/buffers.rb

Defined Under Namespace

Classes: BulkLoadError

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(buffers = {}, aggregate_errors: false, **keyword_buffers) ⇒ Buffers

Returns a new instance of Buffers.



19
20
21
22
23
24
# File 'lib/deftones/io/buffers.rb', line 19

def initialize(buffers = {}, aggregate_errors: false, **keyword_buffers)
  @buffers = {}
  @load_errors = {}
  @disposed = false
  merge(buffers.merge(keyword_buffers), aggregate_errors: aggregate_errors)
end

Instance Attribute Details

#load_errorsObject (readonly)

Returns the value of attribute load_errors.



17
18
19
# File 'lib/deftones/io/buffers.rb', line 17

def load_errors
  @load_errors
end

Instance Method Details

#[](name) ⇒ Object



37
38
39
# File 'lib/deftones/io/buffers.rb', line 37

def [](name)
  @buffers[key_for(name)]
end

#add(name, buffer) ⇒ Object

Raises:



26
27
28
29
30
31
# File 'lib/deftones/io/buffers.rb', line 26

def add(name, buffer)
  raise Deftones::Error, "cannot add buffer to disposed Buffers" if @disposed

  @buffers[key_for(name)] = normalize_buffer(buffer)
  self
end

#disposeObject



82
83
84
85
86
# File 'lib/deftones/io/buffers.rb', line 82

def dispose
  @buffers.clear
  @disposed = true
  self
end

#each(&block) ⇒ Object



53
54
55
56
57
# File 'lib/deftones/io/buffers.rb', line 53

def each(&block)
  return enum_for(:each) unless block

  @buffers.each(&block)
end

#fetch(name) ⇒ Object



41
42
43
# File 'lib/deftones/io/buffers.rb', line 41

def fetch(name)
  @buffers.fetch(key_for(name))
end

#get(name) ⇒ Object



33
34
35
# File 'lib/deftones/io/buffers.rb', line 33

def get(name)
  self[name]
end

#has?(name) ⇒ Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/deftones/io/buffers.rb', line 45

def has?(name)
  @buffers.key?(key_for(name))
end

#key_for(name) ⇒ Object (private)



92
93
94
# File 'lib/deftones/io/buffers.rb', line 92

def key_for(name)
  name.to_sym
end

#keysObject



59
60
61
# File 'lib/deftones/io/buffers.rb', line 59

def keys
  @buffers.keys
end

#loaded?Boolean Also known as: loaded

Returns:

  • (Boolean)


49
50
51
# File 'lib/deftones/io/buffers.rb', line 49

def loaded?
  !@disposed
end

#merge(buffers, aggregate_errors: false) ⇒ Object

Raises:



67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/deftones/io/buffers.rb', line 67

def merge(buffers, aggregate_errors: false)
  errors = {}
  buffers.each do |name, buffer|
    add(name, buffer)
  rescue StandardError => error
    raise unless aggregate_errors

    errors[key_for(name)] = error
  end
  @load_errors.merge!(errors)
  raise BulkLoadError, errors if errors.any?

  self
end

#normalize_buffer(buffer) ⇒ Object (private)



96
97
98
# File 'lib/deftones/io/buffers.rb', line 96

def normalize_buffer(buffer)
  buffer.is_a?(Buffer) ? buffer : Buffer.load(buffer)
end

#to_hObject



63
64
65
# File 'lib/deftones/io/buffers.rb', line 63

def to_h
  @buffers.dup
end