Class: Deftones::IO::Buffers
- Inherits:
-
Object
- Object
- Deftones::IO::Buffers
- Includes:
- Enumerable
- Defined in:
- lib/deftones/io/buffers.rb
Defined Under Namespace
Classes: BulkLoadError
Instance Attribute Summary collapse
-
#load_errors ⇒ Object
readonly
Returns the value of attribute load_errors.
Instance Method Summary collapse
- #[](name) ⇒ Object
- #add(name, buffer) ⇒ Object
- #dispose ⇒ Object
- #each(&block) ⇒ Object
- #fetch(name) ⇒ Object
- #get(name) ⇒ Object
- #has?(name) ⇒ Boolean
-
#initialize(buffers = {}, aggregate_errors: false, **keyword_buffers) ⇒ Buffers
constructor
A new instance of Buffers.
- #key_for(name) ⇒ Object private
- #keys ⇒ Object
- #loaded? ⇒ Boolean (also: #loaded)
- #merge(buffers, aggregate_errors: false) ⇒ Object
- #normalize_buffer(buffer) ⇒ Object private
- #to_h ⇒ Object
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_errors ⇒ Object (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
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 |
#dispose ⇒ Object
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
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 |
#keys ⇒ Object
59 60 61 |
# File 'lib/deftones/io/buffers.rb', line 59 def keys @buffers.keys end |
#loaded? ⇒ Boolean Also known as: loaded
49 50 51 |
# File 'lib/deftones/io/buffers.rb', line 49 def loaded? !@disposed end |
#merge(buffers, aggregate_errors: false) ⇒ Object
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_h ⇒ Object
63 64 65 |
# File 'lib/deftones/io/buffers.rb', line 63 def to_h @buffers.dup end |