class ComfyConf::Data

Attributes

data[R]
definition[R]
prefix[R]

Public Class Methods

new(prefix, definition, data) click to toggle source
# File lib/comfy_conf/data.rb, line 3
def initialize(prefix, definition, data)
  @prefix, @definition, @data = prefix, definition, data || Hash.new
  load
end

Public Instance Methods

name() click to toggle source
# File lib/comfy_conf/data.rb, line 9
def name
  definition.name
end

Private Instance Methods

child_configs() click to toggle source
# File lib/comfy_conf/data.rb, line 28
def child_configs
  @child_configs ||= definition.configs.map do |config|
    Data.new full_name, config, @data[config.name]
  end
end
define_accessors() click to toggle source
# File lib/comfy_conf/data.rb, line 34
def define_accessors
  definition.props.each do |prop|
    define_singleton_method(prop.name) { data[prop.name] or prop.default }
  end

  child_configs.each do |config|
    define_singleton_method(config.name) { config }
  end
end
full_name() click to toggle source
# File lib/comfy_conf/data.rb, line 20
def full_name
  if prefix
    "#{prefix}[#{definition.name}]"
  else
    definition.name
  end
end
load() click to toggle source
# File lib/comfy_conf/data.rb, line 15
def load
  definition.check_data(full_name, data)
  define_accessors
end