Sha256: 5032a186343c823dbc6420368fe17c721a3df9df9b4fd38efb596465d1e8b82a

Contents?: true

Size: 1.13 KB

Versions: 1

Compression:

Stored size: 1.13 KB

Contents

# frozen-string-literal: true

require 'set'

module Leftovers
  module MatcherBuilders
    module NodeType
      def self.build(types_pattern) # rubocop:disable Metrics/MethodLength, Metrics/CyclomaticComplexity
        ::Leftovers::MatcherBuilders::Or.each_or_self(types_pattern) do |type|
          case type
          when 'Symbol' then ::Leftovers::Matchers::NodeType.new(:sym)
          when 'String' then ::Leftovers::Matchers::NodeType.new(:str)
          when 'Integer' then ::Leftovers::Matchers::NodeType.new(:int)
          when 'Float' then ::Leftovers::Matchers::NodeType.new(:float)
          when 'Array' then ::Leftovers::Matchers::NodeType.new(:array)
          when 'Hash' then ::Leftovers::Matchers::NodeType.new(:hash)
          when 'Proc' then ::Leftovers::Matchers::Predicate.new(:proc?)
          when 'Method' then ::Leftovers::Matchers::NodeType.new(Set[:send, :csend, :def, :defs])
          when 'Constant'
            ::Leftovers::Matchers::NodeType.new(Set[:const, :class, :module, :casgn])
          # :nocov:
          else raise "Unknown type #{type}"
            # :nocov:
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
leftovers-0.7.0 lib/leftovers/matcher_builders/node_type.rb