Sha256: 369c49b5bfd3363cfe55bab56ed885197c07890a4c97e74a6f994305f489c5bd

Contents?: true

Size: 1.05 KB

Versions: 6

Compression:

Stored size: 1.05 KB

Contents

# frozen-string-literal: true

module Leftovers
  module MatcherBuilders
    module NodeHasPositionalArgument
      class << self
        def build(positions, value_matcher) # rubocop:disable Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity, Metrics/MethodLength
          if positions && value_matcher
            ::Leftovers::MatcherBuilders::Or.each_or_self(positions) do |pos|
              if pos == '*'
                ::Leftovers::Matchers::NodeHasAnyPositionalArgumentWithValue.new(value_matcher)
              else
                ::Leftovers::Matchers::NodeHasPositionalArgumentWithValue.new(pos, value_matcher)
              end
            end
          elsif positions
            pos = 0 if ::Leftovers.each_or_self(positions).any? { |x| x == '*' }
            pos ||= ::Leftovers.each_or_self(positions).min

            ::Leftovers::Matchers::NodeHasPositionalArgument.new(pos)
          elsif value_matcher
            ::Leftovers::Matchers::NodeHasAnyPositionalArgumentWithValue.new(value_matcher)
          end
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
leftovers-0.5.5 lib/leftovers/matcher_builders/node_has_positional_argument.rb
leftovers-0.5.4 lib/leftovers/matcher_builders/node_has_positional_argument.rb
leftovers-0.5.3 lib/leftovers/matcher_builders/node_has_positional_argument.rb
leftovers-0.5.2 lib/leftovers/matcher_builders/node_has_positional_argument.rb
leftovers-0.5.1 lib/leftovers/matcher_builders/node_has_positional_argument.rb
leftovers-0.5.0 lib/leftovers/matcher_builders/node_has_positional_argument.rb