Class: Fume::Settable::Base

Inherits:
Object
  • Object
show all
Includes:
MemHashProvider, RubyProvider, YamlProvider
Defined in:
lib/fume-settable/base.rb

Defined Under Namespace

Classes: Proxy

Class Method Summary collapse

Class Method Details

.append_providers(*providers, &block) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/fume-settable/base.rb', line 27

def self.append_providers(*providers, &block)
  providers = [ providers, block ].compact.flatten
  
  providers.each do |provider|
    if provider.respond_to? :call
      self.providers << provider
    else
      self.providers << ->(name) { send(provider, name) }
    end
  end
end

.fetch(name, *args, &block) ⇒ Object



15
16
17
18
19
20
21
# File 'lib/fume-settable/base.rb', line 15

def self.fetch(name, *args, &block)
  (self.providers || []).each do |provider|
    value = provider.call(name.to_s, *args, &block)
    return value if !value.nil?
  end
  nil
end

.settingsObject



23
24
25
# File 'lib/fume-settable/base.rb', line 23

def self.settings
  @proxy ||= Proxy.new(&self.method(:fetch))
end