Sha256: 89047f954fc39b7d98ce4a061c9ecd4d44cb63fdfb493a399903cbca966d5722

Contents?: true

Size: 1.57 KB

Versions: 33

Compression:

Stored size: 1.57 KB

Contents

module Cucumber
  module CucumberExpressions
    class ParameterTypeMatcher
      attr_reader :parameter_type

      def initialize(parameter_type, regexp, text, match_position=0)
        @parameter_type, @regexp, @text = parameter_type, regexp, text
        @match = @regexp.match(@text, match_position)
      end

      def advance_to(new_match_position)
        (new_match_position...@text.length).each {|advancedPos|
          matcher = self.class.new(parameter_type, @regexp, @text, advancedPos)
          if matcher.find && matcher.full_word?
            return matcher
          end
        }

        self.class.new(parameter_type, @regexp, @text, @text.length)
      end

      def find
        !@match.nil? && !group.empty?
      end

      def full_word?
        space_before_match_or_sentence_start? && space_after_match_or_sentence_end?
      end

      def start
        @match.begin(0)
      end

      def group
        @match.captures[0]
      end

      def <=>(other)
        pos_comparison = start <=> other.start
        return pos_comparison if pos_comparison != 0
        length_comparison = other.group.length <=> group.length
        return length_comparison if length_comparison != 0
        0
      end

      private

      def space_before_match_or_sentence_start?
        match_begin = @match.begin(0)
        match_begin == 0 || @text[match_begin - 1].match(/\p{Z}|\p{P}|\p{S}/)
      end

      def space_after_match_or_sentence_end?
        match_end = @match.end(0)
        match_end == @text.length || @text[match_end].match(/\p{Z}|\p{P}|\p{S}/)
      end
    end
  end
end

Version data entries

33 entries across 33 versions & 4 rubygems

Version Path
honeybadger-5.3.0 vendor/bundle/ruby/3.2.0/gems/cucumber-cucumber-expressions-16.1.2/lib/cucumber/cucumber_expressions/parameter_type_matcher.rb
rubypitaya-3.12.5 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/cucumber-cucumber-expressions-15.2.0/lib/cucumber/cucumber_expressions/parameter_type_matcher.rb
rubypitaya-3.12.4 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/cucumber-cucumber-expressions-15.2.0/lib/cucumber/cucumber_expressions/parameter_type_matcher.rb
rubypitaya-3.12.3 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/cucumber-cucumber-expressions-15.2.0/lib/cucumber/cucumber_expressions/parameter_type_matcher.rb
cucumber-cucumber-expressions-16.1.2 lib/cucumber/cucumber_expressions/parameter_type_matcher.rb
rubypitaya-3.12.2 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/cucumber-cucumber-expressions-15.2.0/lib/cucumber/cucumber_expressions/parameter_type_matcher.rb
cucumber-cucumber-expressions-16.1.1 lib/cucumber/cucumber_expressions/parameter_type_matcher.rb
cucumber-cucumber-expressions-16.1.0 lib/cucumber/cucumber_expressions/parameter_type_matcher.rb
cucumber-cucumber-expressions-16.0.1 lib/cucumber/cucumber_expressions/parameter_type_matcher.rb
cucumber-cucumber-expressions-16.0.0 lib/cucumber/cucumber_expressions/parameter_type_matcher.rb
cucumber-cucumber-expressions-15.2.0 lib/cucumber/cucumber_expressions/parameter_type_matcher.rb
cucumber-cucumber-expressions-15.1.1 lib/cucumber/cucumber_expressions/parameter_type_matcher.rb
cucumber-cucumber-expressions-15.1.0 lib/cucumber/cucumber_expressions/parameter_type_matcher.rb
cucumber-cucumber-expressions-15.0.2 lib/cucumber/cucumber_expressions/parameter_type_matcher.rb
phillipug-foodie-0.1.0 .vendor/ruby/3.0.0/gems/cucumber-cucumber-expressions-14.0.0/lib/cucumber/cucumber_expressions/parameter_type_matcher.rb
cucumber-cucumber-expressions-15.0.1 lib/cucumber/cucumber_expressions/parameter_type_matcher.rb
cucumber-cucumber-expressions-14.0.0 lib/cucumber/cucumber_expressions/parameter_type_matcher.rb
cucumber-cucumber-expressions-13.1.3 lib/cucumber/cucumber_expressions/parameter_type_matcher.rb
cucumber-cucumber-expressions-13.1.2 lib/cucumber/cucumber_expressions/parameter_type_matcher.rb
cucumber-cucumber-expressions-13.1.1 lib/cucumber/cucumber_expressions/parameter_type_matcher.rb