Sha256: 9fbf42a399d5e25f83524b7f439aee7f7efc0daa1d3e3783f99e441a97809bf9
Contents?: true
Size: 1.19 KB
Versions: 3
Compression:
Stored size: 1.19 KB
Contents
module Econfig class BackendCollection include Enumerable def initialize @backends = [] end def [](name) pair = @backends.assoc(name) pair.last if pair end def each if block_given? @backends.each { |(name, backend)| yield backend } else enum_for { @backends.length } end end def push(name, backend) exists‽(name) @backends.push([name, backend]) end alias_method :use, :push def unshift(name, backend) exists‽(name) @backends.unshift([name, backend]) end def insert_before(other, name, backend) exists‽(name) @backends.insert(index_of!(other), [name, backend]) end def insert_after(other, name, backend) exists‽(name) @backends.insert(index_of!(other) + 1, [name, backend]) end def delete(name) @backends.delete_at(index_of!(name)) end private def exists‽(name) raise KeyError, "#{name} is already set" if index_of(name) end def index_of!(name) index_of(name) or raise KeyError, "#{name} is not set" end def index_of(name) @backends.index(@backends.assoc(name)) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
econfig-1.0.2 | lib/econfig/backend_collection.rb |
econfig-1.0.1 | lib/econfig/backend_collection.rb |
econfig-1.0.0 | lib/econfig/backend_collection.rb |