module Leftovers::MatcherBuilders::Node

Public Class Methods

build(pattern) click to toggle source
# File lib/leftovers/matcher_builders/node.rb, line 6
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
build_from_hash( names: nil, match: nil, has_prefix: nil, has_suffix: nil, paths: nil, has_arguments: nil, unless_arg: nil ) click to toggle source
# File lib/leftovers/matcher_builders/node.rb, line 20
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,
  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::Unless.build(
      (::Leftovers::MatcherBuilders::Node.build(unless_arg) if unless_arg)
    )
  ])
end