Sha256: 9bf7cc41c88d3ade13a2cb7826bfec5b7520e46e37b6c125cf3cb214704ac38c

Contents?: true

Size: 868 Bytes

Versions: 1

Compression:

Stored size: 868 Bytes

Contents

# frozen-string-literal: true

module Leftovers
  module MatcherBuilders
    module NodeHasKeywordArgument
      class << self
        def build(keywords, value_matcher)
          value_matcher = ::Leftovers::MatcherBuilders::NodePairValue.build(value_matcher)
          keyword_matcher = build_keyword_matcher(keywords)
          pair_matcher = ::Leftovers::MatcherBuilders::And.build([keyword_matcher, value_matcher])

          return unless pair_matcher

          ::Leftovers::Matchers::NodeHasAnyKeywordArgument.new(pair_matcher)
        end

        private

        def build_keyword_matcher(keywords)
          if ::Leftovers.each_or_self(keywords).include?('**')
            ::Leftovers::Matchers::NodeType.new(:pair)
          else
            ::Leftovers::MatcherBuilders::NodePairName.build(keywords)
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
leftovers-0.8.0 lib/leftovers/matcher_builders/node_has_keyword_argument.rb