Module: Seabright::Filters::ClassMethods
- Defined in:
- lib/redis_object/ext/filters.rb
Instance Method Summary collapse
- #filter_method(method, filter) ⇒ Object
- #filters_for(method) ⇒ Object
- #get_filter(filter) ⇒ Object
- #intercept_for_filters! ⇒ Object
- #method_filters ⇒ Object
- #set_filter(filter) ⇒ Object
Instance Method Details
#filter_method(method, filter) ⇒ Object
55 56 57 58 59 |
# File 'lib/redis_object/ext/filters.rb', line 55 def filter_method(method, filter) method_filters[method.to_sym] ||= [] method_filters[method.to_sym] << filter.to_sym unless method_filters[method.to_sym].include?(filter.to_sym) intercept_for_filters! end |
#filters_for(method) ⇒ Object
65 66 67 |
# File 'lib/redis_object/ext/filters.rb', line 65 def filters_for(method) method_filters[method.to_sym] end |
#get_filter(filter) ⇒ Object
51 52 53 |
# File 'lib/redis_object/ext/filters.rb', line 51 def get_filter(filter) filter_method(:get,filter) end |
#intercept_for_filters! ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/redis_object/ext/filters.rb', line 6 def intercept_for_filters! return if @intercept_for_filters self.class_eval do filter_gets do |obj, k, v| if filters = obj.class.filters_for(:get) return filters.inject(v) do |acc,f| obj.send(f,acc) end else v end end filter_sets do |obj, k, v| if filters = obj.class.filters_for(:set) filters.inject([k,v]) do |acc,f| obj.send(f,*acc) end else [k,v] end end # filter_msets do |dat| # if filters = self.class.filters_for(method) # filters.each do |f| # next unless args.is_a?(Array) and !args[0].nil? # args = send(f,*args) # end # end # unless args.is_a?(Array) # args = [nil,nil] # end # args # end # end @intercept_for_filters = true end |
#method_filters ⇒ Object
61 62 63 |
# File 'lib/redis_object/ext/filters.rb', line 61 def method_filters @method_filters ||= {} end |
#set_filter(filter) ⇒ Object
47 48 49 |
# File 'lib/redis_object/ext/filters.rb', line 47 def set_filter(filter) filter_method(:set,filter) end |