module SmartSettings::Attributes

Public Instance Methods

all() click to toggle source
# File lib/smart_settings/attributes.rb, line 32
def all
  except = setting_groups.values.flatten + [:var]
  single = attributes.symbolize_keys.except(*except)
  groups = Hash[setting_groups.keys.map { |s| [s, group(s)] }]

  single.merge(groups)
end
group(name) click to toggle source
# File lib/smart_settings/attributes.rb, line 44
def group(name)
  return unless group_exists?(name)

  keys = setting_groups[name]
  data = attributes.symbolize_keys.select { |k, _v| k.in? keys }

  Hash[data.map { |k, v| [k.to_s.sub("#{name}_", '').to_sym, v] }]
end
group_exists?(name) click to toggle source
# File lib/smart_settings/attributes.rb, line 40
def group_exists?(name)
  setting_groups.key? name
end
method_missing(method, *args, &block) click to toggle source
Calls superclass method
# File lib/smart_settings/attributes.rb, line 27
def method_missing(method, *args, &block)
  setting_names.any? ? new.send(method, *args, &block) : super
end
setting(name, type_cast = :string, options = {}) click to toggle source
# File lib/smart_settings/attributes.rb, line 14
def setting(name, type_cast = :string, options = {})
  gname = options.delete(:group)
  sname = gname.nil? ? name : :"#{gname}_#{name}"

  attribute sname, type_cast, options
  self.setting_names += [sname]

  return if gname.nil?

  group = setting_groups.fetch(gname, []) + [sname]
  self.setting_groups = setting_groups.merge(gname => group)
end