Class: ActionFilter

Inherits:
Object show all
Defined in:
lib/mspec/runner/actions/filter.rb

Overview

ActionFilter is a base class for actions that are triggered by specs that match the filter. The filter may be specified by strings that match spec descriptions or by tags for strings that match spec descriptions.

Unlike TagFilter and RegexpFilter, ActionFilter instances do not affect the specs that are run. The filter is only used to trigger the action.

Direct Known Subclasses

TagAction

Instance Method Summary collapse

Constructor Details

#initialize(tags = nil, descs = nil) ⇒ ActionFilter


13
14
15
16
17
# File 'lib/mspec/runner/actions/filter.rb', line 13

def initialize(tags=nil, descs=nil)
  @tags = Array(tags)
  descs = Array(descs)
  @sfilter = MatchFilter.new(nil, *descs) unless descs.empty?
end

Instance Method Details

#===(string) ⇒ Object


19
20
21
# File 'lib/mspec/runner/actions/filter.rb', line 19

def ===(string)
  @sfilter === string or @tfilter === string
end

#loadObject


23
24
25
26
27
28
29
30
31
# File 'lib/mspec/runner/actions/filter.rb', line 23

def load
  @tfilter = nil
  return if @tags.empty?

  desc = MSpec.read_tags(@tags).map { |t| t.description }
  return if desc.empty?

  @tfilter = MatchFilter.new(nil, *desc)
end

#registerObject


33
34
35
# File 'lib/mspec/runner/actions/filter.rb', line 33

def register
  MSpec.register :load, self
end

#unregisterObject


37
38
39
# File 'lib/mspec/runner/actions/filter.rb', line 37

def unregister
  MSpec.unregister :load, self
end