Sha256: b7fb4e10f1bec50e9e9173a295d429a2b6e5320e17b03b608835c178c7bc0895

Contents?: true

Size: 1.67 KB

Versions: 15

Compression:

Stored size: 1.67 KB

Contents

require 'enumerator'
require 'cucumber/ast/tags'

module Cucumber
  module Ast
    module FeatureElement #:nodoc:
      attr_accessor :feature

      def attach_steps(steps)
        steps.each {|step| step.feature_element = self}
      end

      def file_colon_line(line = @line)
        @feature.file_colon_line(line) if @feature
      end

      def text_length
        name_line_lengths.max
      end

      def first_line_length
        name_line_lengths[0]
      end

      def name_line_lengths
        if @name.strip.empty?
          [@keyword.jlength]
        else
          @name.split("\n").enum_for(:each_with_index).map do |line, line_number|
            line_number == 0 ? @keyword.jlength + line.jlength : line.jlength + Ast::Step::INDENT - 1 # We -1 as names which are not keyword lines are missing a space between keyword and name
          end
        end
      end

      def matches_scenario_names?(scenario_name_regexps)
        scenario_name_regexps.detect{|name| name =~ @name}
      end

      def backtrace_line(name = "#{@keyword} #{@name}", line = @line)
        @feature.backtrace_line(name, line) if @feature
      end

      def source_indent(text_length)
        max_line_length - text_length
      end

      def max_line_length
        @steps.max_line_length(self)
      end

      def accept_hook?(hook)
        Tags.matches?(source_tag_names, hook.tag_names)
      end

      def source_tag_names
        (@tags.tag_names + (@feature ? @feature.source_tag_names : [])).uniq
      end

      def tag_count(tag)
        @feature.tag_count(tag) == 0 ? @tags.count(tag) : @feature.tag_count(tag)
      end

      def language
        @feature.language
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 3 rubygems

Version Path
aslakhellesoy-cucumber-0.3.101.2 lib/cucumber/ast/feature_element.rb
aslakhellesoy-cucumber-0.3.102.1 lib/cucumber/ast/feature_element.rb
aslakhellesoy-cucumber-0.3.102.2 lib/cucumber/ast/feature_element.rb
aslakhellesoy-cucumber-0.3.102 lib/cucumber/ast/feature_element.rb
aslakhellesoy-cucumber-0.3.103 lib/cucumber/ast/feature_element.rb
aslakhellesoy-cucumber-0.3.104 lib/cucumber/ast/feature_element.rb
kosmas58-cucumber-0.3.102 lib/cucumber/ast/feature_element.rb
kosmas58-cucumber-0.3.103 lib/cucumber/ast/feature_element.rb
cucumber-0.4.2 lib/cucumber/ast/feature_element.rb
cucumber-0.4.1 lib/cucumber/ast/feature_element.rb
cucumber-0.4.0 lib/cucumber/ast/feature_element.rb
cucumber-0.4.0.rc1 lib/cucumber/ast/feature_element.rb
cucumber-0.3.104 lib/cucumber/ast/feature_element.rb
cucumber-0.3.103 lib/cucumber/ast/feature_element.rb
cucumber-0.3.102 lib/cucumber/ast/feature_element.rb