class Bonfig::BlankConfig
Public Class Methods
new(&block)
click to toggle source
# File lib/bonfig.rb, line 3 def initialize(&block) @_data = ::Hash.new instance_eval(&block) end
Public Instance Methods
[](key)
click to toggle source
# File lib/bonfig.rb, line 21 def [](key) @_data[key] end
config(name, options = {}, &block)
click to toggle source
# File lib/bonfig.rb, line 8 def config(name, options = {}, &block) name = name.to_sym if block _nested(name, &block) else @_data[name] = options[:default] define_method("#{name}=") { |value| @_data[name] = value } define_method(name) { @_data[name] } end define_method("#{name}?") { @_data.key?(name) } end
instance_of?(klass)
click to toggle source
# File lib/bonfig.rb, line 32 def instance_of?(klass) klass == BlankConfig end
to_hash()
click to toggle source
# File lib/bonfig.rb, line 25 def to_hash @_data.reduce({}) do |accum, (k, val)| accum[k] = val.instance_of?(BlankConfig) ? val.to_hash : val accum end end
Protected Instance Methods
_nested(name, &block)
click to toggle source
# File lib/bonfig.rb, line 42 def _nested(name, &block) nested = @_data[name] = BlankConfig.new(&block) define_method(name) do |&b| if b b.call(nested) else @_data[name] end end define_method("#{name}=") do |val| if val.is_a?(::Hash) nested._update(val) else fail 'Can\'t assign value to nested config.' end end end
_update(data)
click to toggle source
# File lib/bonfig.rb, line 38 def _update(data) @_data.update(data) end
define_method(name, &block)
click to toggle source
# File lib/bonfig.rb, line 62 def define_method(name, &block) name = name.to_sym (class << self; self; end).class_eval do define_method(name, &block) end end