Sha256: 4acc5735481ef228114241543e2c02d917e0e3e2bbbeb5e3c66c6cba73623f3a
Contents?: true
Size: 1.77 KB
Versions: 3
Compression:
Stored size: 1.77 KB
Contents
# frozen_string_literal: true class Runger::Loaders::Registry attr_reader :registry def initialize @registry = [] end def prepend(id, handler = nil, &block) handler ||= block insert_at(0, id, handler) end def append(id, handler = nil, &block) handler ||= block insert_at(registry.size, id, handler) end def insert_before(another_id, id, handler = nil, &block) ind = registry.find_index { |(hid, _)| hid == another_id } raise(ArgumentError, "Loader with ID #{another_id} hasn't been registered") if ind.nil? handler ||= block insert_at(ind, id, handler) end def insert_after(another_id, id, handler = nil, &block) ind = registry.find_index { |(hid, _)| hid == another_id } raise(ArgumentError, "Loader with ID #{another_id} hasn't been registered") if ind.nil? handler ||= block insert_at(ind + 1, id, handler) end def override(id, handler) find(id).then do |id_to_handler| raise(ArgumentError, "Loader with ID #{id} hasn't been registered") if id_to_handler.nil? id_to_handler[1] = handler end end def delete(id) find(id).then do |id_to_handler| raise(ArgumentError, "Loader with ID #{id} hasn't been registered") if id_to_handler.nil? registry.delete(id_to_handler) end end def each(&block) registry.each(&block) end def freeze = registry.freeze private def insert_at(index, id, handler) raise(ArgumentError, "Loader with ID #{id} has been already registered") unless find(id).nil? registry.insert(index, [id, handler]) end def find(id) registry.find { |(hid, _)| hid == id } end end require 'runger/loaders/base' require 'runger/loaders/doppler' require 'runger/loaders/ejson' require 'runger/loaders/env' require 'runger/loaders/yaml'
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
runger_config-5.2.0 | lib/runger/loaders.rb |
runger_config-5.1.0 | lib/runger/loaders.rb |
runger_config-5.0.0 | lib/runger/loaders.rb |