Sha256: 64c2cdc1675cc445bcfb304a4d4edd29b85c317d24c9f74c98702b26af843979

Contents?: true

Size: 1.07 KB

Versions: 3

Compression:

Stored size: 1.07 KB

Contents

# frozen_string_literal: true

require 'set'

module Leftovers
  module MatcherBuilders
    module NodeType
      def self.build(types_pattern) # rubocop:disable Metrics
        Or.each_or_self(types_pattern) do |type|
          case type
          when :Symbol then Matchers::NodeType.new(:sym)
          when :String then Matchers::NodeType.new(:str)
          when :Integer then Matchers::NodeType.new(:int)
          when :Float then Matchers::NodeType.new(:float)
          when :Array then Matchers::NodeType.new(:array)
          when :Hash then Matchers::NodeType.new(:hash)
          when :Proc then Matchers::NodeIsProc
          when :Method
            Matchers::NodeType.new(
              ::Set[:send, :csend, :def, :defs].compare_by_identity.freeze
            )
          when :Constant
            Matchers::NodeType.new(
              ::Set[:const, :class, :module, :casgn].compare_by_identity.freeze
            )
          # :nocov:
          else raise UnexpectedCase, "Unhandled value #{type.inspect}"
            # :nocov:
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

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