Class RDig::UrlFilters::FilterChain
In: lib/rdig/url_filters.rb
Parent: Object

Methods

add   apply   new  

Public Class methods

[Source]

    # File lib/rdig/url_filters.rb, line 6
 6:       def initialize(chain_config)
 7:         @filters = []
 8:         chain_config.each { |filter|
 9:           case filter
10:           when Hash
11:             filter.each_pair { |f, args|
12:               add(f, args)
13:             }
14:           when Array
15:             args = filter
16:             filter = args.shift
17:             add(filter, args)
18:           else
19:             add(filter)
20:           end
21:         }
22:       end

Public Instance methods

add a filter and it’s args to the chain when args is a symbol, it is treated as a configuration key

[Source]

    # File lib/rdig/url_filters.rb, line 26
26:       def add(filter, args=nil)
27:         args = RDig.config.crawler.send(args) if args.is_a? Symbol
28:         case filter
29:         when Symbol
30:           if args.nil?
31:             @filters << lambda { |document|
32:               UrlFilters.send(filter, document)
33:             }
34:           else
35:             @filters << lambda { |document|
36:               UrlFilters.send(filter, document, args)
37:             }
38:           end
39:         when Class
40:           if args.nil?
41:             if filter.respond_to?(:instance)
42:               filter_instance = filter.instance
43:             else
44:               filter_instance = filter.new
45:             end
46:           else
47:             filter_instance = filter.new(args)
48:           end
49:           @filters << lambda { |document|
50:             filter_instance.apply(document)
51:           }
52:         end
53:       end

[Source]

    # File lib/rdig/url_filters.rb, line 55
55:       def apply(document)
56:         @filters.each { |filter|
57:           return nil unless filter.call(document)
58:         }
59:         return document
60:       end

[Validate]