Class: FilterChain::Chain

Inherits:
Object
  • Object
show all
Defined in:
lib/filter_chain/chain.rb

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) {|_self| ... } ⇒ Chain

Returns a new instance of Chain.

Yields:

  • (_self)

Yield Parameters:



3
4
5
6
7
8
9
# File 'lib/filter_chain/chain.rb', line 3

def initialize(opts = {})
  @opts = opts
  @filters = []
  @state = :initializing
  yield(self)
  @state = :initialized
end

Instance Method Details

#<<(data) ⇒ Object



19
20
21
22
23
# File 'lib/filter_chain/chain.rb', line 19

def <<(data)
  @filters.first << data

  nil
end

#add(filter) ⇒ Object

Raises:



11
12
13
14
15
16
17
# File 'lib/filter_chain/chain.rb', line 11

def add(filter)
  raise InvalidStateError unless @state == :initializing
  @filters.last.next_filter = filter if @filters.last
  @filters << filter

  nil
end

#lengthObject



31
32
33
# File 'lib/filter_chain/chain.rb', line 31

def length
  @filters.length
end

#outputObject



25
26
27
28
29
# File 'lib/filter_chain/chain.rb', line 25

def output
  raise MissingCollectorError if @filters.empty? || !@filters.last.is_a?(Collector)

  @filters.last.collection
end