Sha256: 6fd150fd94ae24760552bdb80c102306ffefeaddd0779943eca70e23fb11534f

Contents?: true

Size: 1023 Bytes

Versions: 12

Compression:

Stored size: 1023 Bytes

Contents

module Cucumber
  module Ast
    # Holds the names of tags parsed from a feature file:
    #
    #   @invoice @release_2
    #
    # This gets stored internally as <tt>["invoice", "release_2"]</tt>
    #
    class Tags #:nodoc:
      def self.strip_prefix(tag_name)
        tag_name =~ /^@(.*)/ ? $1 : tag_name
      end

      def initialize(line, tag_names)
        @line, @tag_names = line, tag_names
      end

      def accept(visitor)
        return if $cucumber_interrupted
        @tag_names.each do |tag_name|
          visitor.visit_tag_name(tag_name)
        end
      end

      def accept_hook?(hook)
        hook.tag_names.empty? || (hook.tag_names.map{|tag| Ast::Tags.strip_prefix(tag)} & @tag_names).any?
      end

      def count(tag)
        if @tag_names.respond_to?(:count)
          @tag_names.count(tag) # 1.9
        else
          @tag_names.select{|t| t == tag}.length  # 1.8
        end
      end

      def to_sexp
        @tag_names.map{|tag_name| [:tag, tag_name]}
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 3 rubygems

Version Path
aslakhellesoy-cucumber-0.3.100 lib/cucumber/ast/tags.rb
aslakhellesoy-cucumber-0.3.97 lib/cucumber/ast/tags.rb
aslakhellesoy-cucumber-0.3.98 lib/cucumber/ast/tags.rb
aslakhellesoy-cucumber-0.3.99 lib/cucumber/ast/tags.rb
kosmas58-cucumber-0.3.100 lib/cucumber/ast/tags.rb
kosmas58-cucumber-0.3.97 lib/cucumber/ast/tags.rb
kosmas58-cucumber-0.3.98 lib/cucumber/ast/tags.rb
kosmas58-cucumber-0.3.99 lib/cucumber/ast/tags.rb
cucumber-0.3.100 lib/cucumber/ast/tags.rb
cucumber-0.3.99 lib/cucumber/ast/tags.rb
cucumber-0.3.98 lib/cucumber/ast/tags.rb
cucumber-0.3.97 lib/cucumber/ast/tags.rb