Module: Seabright::Filters::ClassMethods

Defined in:
lib/redis_object/ext/filters.rb

Instance Method Summary collapse

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_filtersObject



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