Sha256: 762a8e9931e04d8a46537ebce537354b54fd404a9fad7dca726589094c69f29e

Contents?: true

Size: 1.6 KB

Versions: 33

Compression:

Stored size: 1.6 KB

Contents

module Cucumber
  module Ast
    # Represents the root node of a parsed feature.
    class Feature
      attr_accessor :file
      attr_writer :features

      def initialize(background, comment, tags, name, feature_elements)
        @background, @comment, @tags, @name, @feature_elements = background, comment, tags, name, feature_elements

        background.feature = self if background
        @feature_elements.each do |feature_element|
          feature_element.feature = self
        end
      end

      def accept(visitor)
        visitor.visit_comment(@comment)
        visitor.visit_tags(@tags)
        visitor.visit_feature_name(@name)
        visitor.visit_background(@background) if @background
        @feature_elements.each do |feature_element|
          visitor.visit_feature_element(feature_element)
        end
      end

      def accept_hook?(hook)
        @tags.accept_hook?(hook)
      end

      def next_feature_element(feature_element, &proc)
        index = @feature_elements.index(feature_element)
        next_one = @feature_elements[index+1]
        proc.call(next_one) if next_one
      end

      def backtrace_line(step_name, line)
        "#{file_colon_line(line)}:in `#{step_name}'"
      end

      def file_colon_line(line)
        "#{@file}:#{line}"
      end

      def to_sexp
        sexp = [:feature, @file, @name]
        comment = @comment.to_sexp
        sexp += [comment] if comment
        tags = @tags.to_sexp
        sexp += tags if tags.any?
        sexp += [@background.to_sexp] if @background
        sexp += @feature_elements.map{|fe| fe.to_sexp}
        sexp
      end
    end
  end
end

Version data entries

33 entries across 33 versions & 2 rubygems

Version Path
aslakhellesoy-cucumber-0.3.1.1 lib/cucumber/ast/feature.rb
aslakhellesoy-cucumber-0.3.1 lib/cucumber/ast/feature.rb
aslakhellesoy-cucumber-0.3.2 lib/cucumber/ast/feature.rb
aslakhellesoy-cucumber-0.3.3.1 lib/cucumber/ast/feature.rb
aslakhellesoy-cucumber-0.3.3.2 lib/cucumber/ast/feature.rb
aslakhellesoy-cucumber-0.3.3.3 lib/cucumber/ast/feature.rb
aslakhellesoy-cucumber-0.3.3.4 lib/cucumber/ast/feature.rb
aslakhellesoy-cucumber-0.3.3.5 lib/cucumber/ast/feature.rb
aslakhellesoy-cucumber-0.3.3.6 lib/cucumber/ast/feature.rb
aslakhellesoy-cucumber-0.3.3 lib/cucumber/ast/feature.rb
aslakhellesoy-cucumber-0.3.4 lib/cucumber/ast/feature.rb
aslakhellesoy-cucumber-0.3.5 lib/cucumber/ast/feature.rb
aslakhellesoy-cucumber-0.3.6.1 lib/cucumber/ast/feature.rb
aslakhellesoy-cucumber-0.3.7.1 lib/cucumber/ast/feature.rb
aslakhellesoy-cucumber-0.3.7.2 lib/cucumber/ast/feature.rb
aslakhellesoy-cucumber-0.3.7.3 lib/cucumber/ast/feature.rb
aslakhellesoy-cucumber-0.3.7.4 lib/cucumber/ast/feature.rb
aslakhellesoy-cucumber-0.3.7.5 lib/cucumber/ast/feature.rb
aslakhellesoy-cucumber-0.3.7 lib/cucumber/ast/feature.rb
aslakhellesoy-cucumber-0.3.8 lib/cucumber/ast/feature.rb