Class: Ecogem::Util::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/ecogem/util/config.rb,
lib/ecogem/util/config/entry.rb,
lib/ecogem/util/config/value.rb,
lib/ecogem/util/config/value_container.rb

Direct Known Subclasses

Config, Gitsfile

Defined Under Namespace

Classes: Entry, Value, ValueContainer

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(base, path) ⇒ Config

Returns a new instance of Config.



36
37
38
39
# File 'lib/ecogem/util/config.rb', line 36

def initialize(base, path)
  @base = base
  @path = ::File.expand_path(path)
end

Class Method Details

.entriesObject



32
33
34
# File 'lib/ecogem/util/config.rb', line 32

def self.entries
  @entries ||= {}
end

.entry(key) ⇒ Object



19
20
21
22
# File 'lib/ecogem/util/config.rb', line 19

def self.entry(key)
  e = ::Ecogem::Util::Config::Entry.create(self, key)
  entries[key] = e
end

.entry_namespace(ns) ⇒ Object



15
16
17
# File 'lib/ecogem/util/config.rb', line 15

def self.entry_namespace(ns)
  entry_namespaces << ns
end

.entry_namespacesObject



11
12
13
# File 'lib/ecogem/util/config.rb', line 11

def self.entry_namespaces
  @entry_namespaces ||= []
end

.find_entry_class(key) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/ecogem/util/config.rb', line 24

def self.find_entry_class(key)
  pascal = key.to_s.split(/_/).map{|i| i[0].upcase + i[1..-1]}.join('')
  entry_namespaces.reverse.each do |ns|
    return ns.const_get(pascal, false) if ns.const_defined?(pascal, false)
  end
  nil
end

Instance Method Details

#dirObject



41
42
43
# File 'lib/ecogem/util/config.rb', line 41

def dir
  @dir ||= ::File.dirname(@path)
end

#saveObject



57
58
59
# File 'lib/ecogem/util/config.rb', line 57

def save
  ::File.write @path, value_container.values_to_h.to_yaml
end

#valuesObject



49
50
51
# File 'lib/ecogem/util/config.rb', line 49

def values
  @values ||= value_container.proxy
end