class ActiveSetting::Setting
Attributes
category[RW]
data_type[R]
default[RW]
description[RW]
name[RW]
object_options[W]
options[R]
raw_value[RW]
subtype[R]
Public Class Methods
convert_value(val, data_type)
click to toggle source
# File lib/active_setting/setting.rb, line 92 def self.convert_value(val, data_type) case data_type when :boolean then ![nil, false, 'false', 0, '0'].include?(val) when :integer then val.to_i when :string then val.to_s when :symbol then val.to_sym when :decimal then BigDecimal(val) else val end end
define_shortcut_method(setting)
click to toggle source
# File lib/active_setting/setting.rb, line 29 def self.define_shortcut_method(setting) class_eval <<-TEXT def self.#{setting.name} self.class.registered_settings[:#{setting.name}].value end def self.#{setting.name}=(value) self.class.registered_settings[:#{setting.name}].raw_value = value end TEXT end
new(attr = {})
click to toggle source
# File lib/active_setting/setting.rb, line 12 def initialize(attr = {}) attr.each do |key, value| setter = "#{key}=" send(setter, value) if respond_to?(setter) end end
register(name, options)
click to toggle source
# File lib/active_setting/setting.rb, line 19 def self.register(name, options) new(options.merge(name: name)).register end
registered_settings()
click to toggle source
# File lib/active_setting/setting.rb, line 8 def self.registered_settings @registered_settings ||= {} end
Public Instance Methods
calculate_object_options()
click to toggle source
DEPRECATED: Please use standard options instead.
# File lib/active_setting/setting.rb, line 63 def calculate_object_options puts '[WARNING] ActiveSetting::Setting#object_options is deprecated'\ ' as it poses a serious security risk and will be removed in future versions' objects, key, value = @object_options.split(' ') value = key if value.nil? || value == '' # TODO: Remove this method, as it uses eval !!! objects_from_collection(eval(objects), key, value) end
data_type=(data_type)
click to toggle source
# File lib/active_setting/setting.rb, line 44 def data_type=(data_type) @data_type = data_type.to_sym if data_type end
objects_from_collection(collection, key, value)
click to toggle source
# File lib/active_setting/setting.rb, line 73 def objects_from_collection(collection, key, value) collection.map { |o| [o.send(key), o.send(value)] } end
options=(options)
click to toggle source
# File lib/active_setting/setting.rb, line 56 def options=(options) @options = options.split(' ') end
raw_value=(new)
click to toggle source
# File lib/active_setting/setting.rb, line 77 def raw_value=(new) @value = nil @raw_value = new end
register()
click to toggle source
# File lib/active_setting/setting.rb, line 23 def register self.class.registered_settings[name.to_sym] = self Setting.define_shortcut_method(self) self end
setting()
click to toggle source
# File lib/active_setting/setting.rb, line 40 def setting self.class.registered_settings[@name.to_sym] end
subtype=(subtype)
click to toggle source
# File lib/active_setting/setting.rb, line 48 def subtype=(subtype) @subtype = subtype.to_sym if subtype end
value()
click to toggle source
# File lib/active_setting/setting.rb, line 82 def value v = raw_value v = default if raw_value.nil? # TODO: WHY IS the first line here return nil if v.nil? @value ||= build_value(v) end
Private Instance Methods
build_value(v)
click to toggle source
# File lib/active_setting/setting.rb, line 105 def build_value(v) case data_type when :hash hash_value(v) when :csv csv_value(v) else Setting.convert_value(v, data_type) end end
csv_value(v)
click to toggle source
# File lib/active_setting/setting.rb, line 124 def csv_value(v) return v if v.is_a?(Array) # e.g. default = [] v.to_s.split(',').map(&:strip).map { |e| Setting.convert_value(e, subtype) } end
hash_value(v)
click to toggle source
# File lib/active_setting/setting.rb, line 116 def hash_value(v) chunks = v.split(',') chunks.map.with_object({}) do |val, h| key, subval = val.split(':').map(&:strip) h[key.to_sym] = subval end end