class Ez::Settings::Interface

Attributes

groups[R]
name[R]
store[R]

Public Class Methods

define(name, &block) click to toggle source
# File lib/ez/settings/interface.rb, line 23
def self.define(name, &block)
  interface = new(name)
  interface.instance_eval(&block)
  interface
end
new(name) click to toggle source
# File lib/ez/settings/interface.rb, line 33
def initialize(name)
  @name = name
  @keys = []
  @groups = []
end

Public Instance Methods

define(&block) click to toggle source
# File lib/ez/settings/interface.rb, line 39
def define(&block)
  instance_eval(&block)
end
group(name, options = {}, &block) click to toggle source
# File lib/ez/settings/interface.rb, line 43
def group(name, options = {}, &block)
  find_or_initialize_group(name, options, &block)
end
keys() click to toggle source
# File lib/ez/settings/interface.rb, line 47
def keys
  groups.map(&:keys).flatten
end

Private Instance Methods

add_group(group) click to toggle source
# File lib/ez/settings/interface.rb, line 63
def add_group(group)
  @groups << group

  group
end
find_or_initialize_group(name, options = {}, &block) click to toggle source
# File lib/ez/settings/interface.rb, line 53
def find_or_initialize_group(name, options = {}, &block)
  existing_group = groups.find { |g| g.name == name }

  if existing_group
    existing_group.instance_eval(&block)
  else
    add_group(Group.new(name, self.name, options, &block))
  end
end