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