Sha256: 4fe24f003e77ea7de51932bbfb56ef0c79b04d66be25903b898883fa1047655b

Contents?: true

Size: 761 Bytes

Versions: 4

Compression:

Stored size: 761 Bytes

Contents

# frozen_string_literal: true

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

          return unless pair_matcher

          Matchers::NodeHasAnyKeywordArgument.new(pair_matcher)
        end

        private

        def build_keyword_matcher(keywords)
          if ::Leftovers.wrap_array(keywords).include?('**')
            Matchers::NodeType.new(:pair)
          else
            NodePairKey.build(Node.build(keywords))
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
leftovers-0.12.2 lib/leftovers/matcher_builders/node_has_keyword_argument.rb
leftovers-0.12.1 lib/leftovers/matcher_builders/node_has_keyword_argument.rb
leftovers-0.12.0 lib/leftovers/matcher_builders/node_has_keyword_argument.rb
leftovers-0.11.2 lib/leftovers/matcher_builders/node_has_keyword_argument.rb