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
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
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