module Preferencias::Preferable

Public Instance Methods

clear_preferences() click to toggle source
# File lib/preferencias/preferences/preferable.rb, line 86
def clear_preferences
  preferences.keys.each {|pref| preferences.delete pref}
end
default_preferences() click to toggle source
# File lib/preferencias/preferences/preferable.rb, line 78
def default_preferences
  Hash[
    defined_preferences.map do |preference|
      [preference, preference_default(preference)]
    end
  ]
end
defined_preferences() click to toggle source
# File lib/preferencias/preferences/preferable.rb, line 72
def defined_preferences
  methods.grep(/\Apreferred_.*=\Z/).map do |pref_method|
    pref_method.to_s.gsub(/\Apreferred_|=\Z/, '').to_sym
  end
end
get_preference(name) click to toggle source
# File lib/preferencias/preferences/preferable.rb, line 44
def get_preference(name)
  has_preference! name
  send self.class.preference_getter_method(name)
end
has_preference!(name) click to toggle source
# File lib/preferencias/preferences/preferable.rb, line 64
def has_preference!(name)
  raise NoMethodError.new "#{name} preference not defined" unless has_preference? name
end
has_preference?(name) click to toggle source
# File lib/preferencias/preferences/preferable.rb, line 68
def has_preference?(name)
  respond_to? self.class.preference_getter_method(name)
end
preference_default(name) click to toggle source
# File lib/preferencias/preferences/preferable.rb, line 59
def preference_default(name)
  has_preference! name
  send self.class.preference_default_getter_method(name)
end
preference_type(name) click to toggle source
# File lib/preferencias/preferences/preferable.rb, line 54
def preference_type(name)
  has_preference! name
  send self.class.preference_type_getter_method(name)
end
set_preference(name, value) click to toggle source
# File lib/preferencias/preferences/preferable.rb, line 49
def set_preference(name, value)
  has_preference! name
  send self.class.preference_setter_method(name), value
end

Private Instance Methods

convert_preference_value(value, type) click to toggle source
# File lib/preferencias/preferences/preferable.rb, line 92
def convert_preference_value(value, type)
  case type
  when :string, :text
    value.to_s
  when :password
    value.to_s
  when :decimal
    BigDecimal.new(value.to_s)
  when :integer
    value.to_i
  when :boolean
    if value.is_a?(FalseClass) ||
       value.nil? ||
       value == 0 ||
       value =~ /^(f|false|0)$/i ||
       (value.respond_to? :empty? and value.empty?)
       false
    else
       true
    end
  else
    value
  end
end