Sha256: 902b7765795ee60004a9b5f6be27e022f4cbf421cbf32ce7c24b40c24418c315

Contents?: true

Size: 1.32 KB

Versions: 6

Compression:

Stored size: 1.32 KB

Contents

# frozen-string-literal: true

module Leftovers
  module MatcherBuilders
    module Node
      def self.build(pattern)
        ::Leftovers::MatcherBuilders::Or.each_or_self(pattern) do |pat|
          case pat
          when ::String
            ::Leftovers::MatcherBuilders::NodeName.build(pat)
          when ::Hash
            build_from_hash(**pat)
          # :nocov:
          else raise
            # :nocov:
          end
        end
      end

      def self.build_from_hash( # rubocop:disable Metrics/ParameterLists, Metrics/MethodLength
        names: nil, match: nil, has_prefix: nil, has_suffix: nil,
        paths: nil,
        has_arguments: nil,
        has_receiver: nil,
        unless_arg: nil
      )
        ::Leftovers::MatcherBuilders::And.build([
          ::Leftovers::MatcherBuilders::NodeName.build([
            names,
            { match: match, has_prefix: has_prefix, has_suffix: has_suffix }.compact
          ]),
          ::Leftovers::MatcherBuilders::NodePath.build(paths),
          ::Leftovers::MatcherBuilders::NodeHasArgument.build(has_arguments),
          ::Leftovers::MatcherBuilders::NodeHasReceiver.build(has_receiver),
          ::Leftovers::MatcherBuilders::Unless.build(
            (::Leftovers::MatcherBuilders::Node.build(unless_arg) if unless_arg)
          )
        ])
      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.rb
leftovers-0.5.4 lib/leftovers/matcher_builders/node.rb
leftovers-0.5.3 lib/leftovers/matcher_builders/node.rb
leftovers-0.5.2 lib/leftovers/matcher_builders/node.rb
leftovers-0.5.1 lib/leftovers/matcher_builders/node.rb
leftovers-0.5.0 lib/leftovers/matcher_builders/node.rb