Sha256: 53883e19ac06dceac6c90b82c19bea13fd2c338ae1715c2360883a42d55a2145

Contents?: true

Size: 1.35 KB

Versions: 13

Compression:

Stored size: 1.35 KB

Contents

module Cucumber
  # Filters the AST based on --tags and --name
  class Filter #:nodoc:
    def initialize(lines, options)
      @lines = lines
      @tag_name_lists = options[:tag_names] ? options[:tag_names].map{|tags_with_limit| tags_with_limit.keys } : []
      @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)
      syntax_node.matches_tags?(@tag_name_lists)
    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

13 entries across 13 versions & 4 rubygems

Version Path
cucumber-0.5.3 lib/cucumber/filter.rb
cucumber-0.5.2 lib/cucumber/filter.rb
cucumber-0.5.1 lib/cucumber/filter.rb
cucumber-0.5.0 lib/cucumber/filter.rb
cucumber-0.4.5.rc2 lib/cucumber/filter.rb
kbaum-cucumber-0.4.5.pre lib/cucumber/filter.rb
cucumber-0.4.5.rc1 lib/cucumber/filter.rb
middleman-0.10.17 vendor/gems/gems/cucumber-0.4.4/lib/cucumber/filter.rb
middleman-0.10.16 vendor/gems/gems/cucumber-0.4.4/lib/cucumber/filter.rb
middleman-0.10.15 vendor/gems/gems/cucumber-0.4.4/lib/cucumber/filter.rb
rackjour-0.1.8 vendor/gems/gems/cucumber-0.4.4/lib/cucumber/filter.rb
middleman-0.10.14 vendor/gems/gems/cucumber-0.4.4/lib/cucumber/filter.rb
cucumber-0.4.4 lib/cucumber/filter.rb