Sha256: ef23a1058956262a575b0a06d44399517a8da65015ebba460c4dfd4e7ee657be

Contents?: true

Size: 1.54 KB

Versions: 15

Compression:

Stored size: 1.54 KB

Contents

module Cucumber
  class Filter
    def initialize(lines, options)
      @lines = lines
      @include_tags = options[:include_tags] || []
      @exclude_tags = options[:exclude_tags] || []
      @name_regexps = options[:name_regexps] || []
    end

    def accept?(syntax_node)
      at_line?(syntax_node) &&
      matches_tags?(syntax_node) &&
      matches_names?(syntax_node)
    end

    def accept_example?(syntax_node, outline)
      (at_line?(syntax_node) || outline_at_line?(outline)) && 
      (matches_names?(syntax_node) || outline_matches_names?(outline))
    end
    
    def at_line?(syntax_node)
      @lines.nil? || @lines.empty? || @lines.detect{|line| syntax_node.at_line?(line)}
    end

    def outline_at_line?(syntax_node)
       @lines.nil? || @lines.empty? || @lines.detect{|line| syntax_node.outline_at_line?(line)}
    end

    def matches_tags?(syntax_node)
      !excluded_by_tags?(syntax_node) &&
      included_by_tags?(syntax_node)
    end

    def included_by_tags?(syntax_node)
      @include_tags.empty? || syntax_node.has_all_tags?(@include_tags)
    end

    def excluded_by_tags?(syntax_node)
      @exclude_tags.any? && syntax_node.has_tags?(@exclude_tags)
    end
    
    def outline_matches_names?(syntax_node)
      @name_regexps.nil? || @name_regexps.empty? || @name_regexps.detect{|name_regexp| syntax_node.outline_matches_name?(name_regexp)}
    end
    
    def matches_names?(syntax_node)
      @name_regexps.nil? || @name_regexps.empty? || @name_regexps.detect{|name_regexp| syntax_node.matches_name?(name_regexp)}
    end
  end
end

Version data entries

15 entries across 15 versions & 5 rubygems

Version Path
aslakhellesoy-cucumber-0.3.11.200907091518 lib/cucumber/filter.rb
aslakhellesoy-cucumber-0.3.90 lib/cucumber/filter.rb
aslakhellesoy-cucumber-0.3.92 lib/cucumber/filter.rb
aslakhellesoy-cucumber-0.3.93.1 lib/cucumber/filter.rb
aslakhellesoy-cucumber-0.3.93 lib/cucumber/filter.rb
jwilger-cucumber-0.3.11.200907091518 lib/cucumber/filter.rb
kosmas58-cucumber-0.3.90 lib/cucumber/filter.rb
kosmas58-cucumber-0.3.92 lib/cucumber/filter.rb
kosmas58-cucumber-0.3.93.1 lib/cucumber/filter.rb
square-cucumber-0.3.93.1.1 lib/cucumber/filter.rb
square-cucumber-0.3.93.1 lib/cucumber/filter.rb
cucumber-0.3.90 lib/cucumber/filter.rb
cucumber-0.3.91 lib/cucumber/filter.rb
cucumber-0.3.92 lib/cucumber/filter.rb
cucumber-0.3.93 lib/cucumber/filter.rb