module Preferred::Preferable

Public Instance Methods

clear_preferences() click to toggle source
# File lib/preferred/preferable.rb, line 51
def clear_preferences
  preference_hash.keys.each {|pref| preference_hash.delete pref} if preference_hash.is_a? Hash
end
get_preference(name) click to toggle source
# File lib/preferred/preferable.rb, line 8
def get_preference(name)
  has_preference! name
  send self.class.preference_getter_method(name)
end
Also aliased as: preferred, prefers?
has_preference!(name) click to toggle source
# File lib/preferred/preferable.rb, line 35
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/preferred/preferable.rb, line 39
def has_preference?(name)
  respond_to? self.class.preference_getter_method(name)
end
preference_default(name) click to toggle source
# File lib/preferred/preferable.rb, line 25
def preference_default(name)
  has_preference! name
  send self.class.preference_default_getter_method(name)
end
preference_description(name) click to toggle source
# File lib/preferred/preferable.rb, line 30
def preference_description(name)
  has_preference! name
  send self.class.preference_description_getter_method(name)
end
preference_type(name) click to toggle source
# File lib/preferred/preferable.rb, line 20
def preference_type(name)
  has_preference! name
  send self.class.preference_type_getter_method(name)
end
preferences() click to toggle source
# File lib/preferred/preferable.rb, line 43
def preferences
  prefs = {}
  methods.grep(/^prefers_.*\?$/).each do |pref_method|
    prefs[pref_method.to_s.gsub(/prefers_|\?/, '').to_sym] = send(pref_method)
  end
  prefs
end
preferred(name)
Alias for: get_preference
prefers?(name)
Alias for: get_preference
set_preference(name, value) click to toggle source
# File lib/preferred/preferable.rb, line 15
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/preferred/preferable.rb, line 57
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
  when :date
    value.is_a?(Date) ? value : Date.parse(value)
  else
    value
  end
end