Sha256: 7c88c7fc6d03539bfdd055f5f0d77d523d7257c0e0b53372d47f6dc50b77cad2

Contents?: true

Size: 1.82 KB

Versions: 24

Compression:

Stored size: 1.82 KB

Contents

require 'enumerator'
require 'gherkin/tag_expression'

module Cucumber
  module Ast
    module HasSteps #:nodoc:
      attr_reader :gherkin_statement, :raw_steps, :title, :description
      def gherkin_statement(statement=nil)
        @gherkin_statement ||= statement
      end

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

      def first_line_length
        name_line_lengths[0]
      end

      def text_length
        name_line_lengths.max
      end

      def name_line_lengths
        if name.strip.empty?
          [Ast::Step::INDENT + @keyword.unpack('U*').length + ': '.length]
        else
          name.split("\n").enum_for(:each_with_index).map do |line, line_number|
            if line_number == 0
              Ast::Step::INDENT + @keyword.unpack('U*').length + ': '.length + line.unpack('U*').length
            else
              Ast::Step::INDENT + Ast::Step::INDENT + line.unpack('U*').length
            end
          end
        end
      end

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

      def backtrace_line(step_name = "#{@keyword}: #{name}", line = self.line)
        "#{location.on_line(line)}:in `#{step_name}'"
      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)
        Gherkin::TagExpression.new(hook.tag_expressions).evaluate(source_tags)
      end

      def source_tag_names
        source_tags.map { |tag| tag.name }
      end

      def source_tags
        @tags.tags.to_a + feature_tags.tags.to_a
      end

      def language
        @language || raise("Language is required for a #{self.class}")
      end

    end
  end
end

Version data entries

24 entries across 22 versions & 2 rubygems

Version Path
honeybadger-2.4.0 vendor/gems/ruby/2.2.0/gems/cucumber-1.3.18/lib/cucumber/ast/has_steps.rb
honeybadger-2.4.0 vendor/gems/ruby/2.1.0/gems/cucumber-1.3.16/lib/cucumber/ast/has_steps.rb
honeybadger-2.4.0 vendor/gems/ruby/1.9.1/gems/cucumber-1.3.18/lib/cucumber/ast/has_steps.rb
cucumber-1.3.20 lib/cucumber/ast/has_steps.rb
cucumber-1.3.19 lib/cucumber/ast/has_steps.rb
cucumber-1.3.18 lib/cucumber/ast/has_steps.rb
cucumber-1.3.17 lib/cucumber/ast/has_steps.rb
cucumber-1.3.16 lib/cucumber/ast/has_steps.rb
cucumber-1.3.15 lib/cucumber/ast/has_steps.rb
cucumber-1.3.14 lib/cucumber/ast/has_steps.rb
cucumber-1.3.13 lib/cucumber/ast/has_steps.rb
cucumber-1.3.12 lib/cucumber/ast/has_steps.rb
cucumber-1.3.11 lib/cucumber/ast/has_steps.rb
cucumber-1.3.10 lib/cucumber/ast/has_steps.rb
cucumber-1.3.9 lib/cucumber/ast/has_steps.rb
cucumber-1.3.8 lib/cucumber/ast/has_steps.rb
cucumber-1.3.7 lib/cucumber/ast/has_steps.rb
cucumber-1.3.6 lib/cucumber/ast/has_steps.rb
cucumber-1.3.5 lib/cucumber/ast/has_steps.rb
cucumber-1.3.4 lib/cucumber/ast/has_steps.rb