Class: Gurke::FeatureList::Filter

Inherits:
Object
  • Object
show all
Defined in:
lib/gurke/feature_list.rb

Defined Under Namespace

Classes: TagFilter

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options, files) ⇒ Filter



61
62
63
64
# File 'lib/gurke/feature_list.rb', line 61

def initialize(options, files)
  @options = options
  @files   = files
end

Instance Attribute Details

#filesObject (readonly)

Returns the value of attribute files.



59
60
61
# File 'lib/gurke/feature_list.rb', line 59

def files
  @files
end

#optionsObject (readonly)

Returns the value of attribute options.



59
60
61
# File 'lib/gurke/feature_list.rb', line 59

def options
  @options
end

Instance Method Details

#filtered?(scenario) ⇒ Boolean



72
73
74
# File 'lib/gurke/feature_list.rb', line 72

def filtered?(scenario)
  filtered_by_tags?(scenario) || (scenario)
end

#filtered_by_line?(scenario) ⇒ Boolean



82
83
84
85
86
87
88
# File 'lib/gurke/feature_list.rb', line 82

def (scenario)
  _, lines = files.select{|f, _| f == scenario.file }.first

  return false if lines.empty?

  !lines.any?{|l| scenario.line <= l && scenario.steps.last.line >= l }
end

#filtered_by_tags?(scenario) ⇒ Boolean



76
77
78
79
80
# File 'lib/gurke/feature_list.rb', line 76

def filtered_by_tags?(scenario)
  !tag_filters.reduce(false) do |memo, set|
    memo || set.all?{|rule| rule.match? scenario }
  end
end

#tag_filtersObject



66
67
68
69
70
# File 'lib/gurke/feature_list.rb', line 66

def tag_filters
  @tag_filters ||= options[:tags].map do |list|
    list.strip.split(/[,+\s]\s*/).map{|t| TagFilter.new(t) }
  end
end