class Dry::Types::PrimitiveInferrer::Compiler

Compiler reduces type AST into a list of primitives

@api private

Public Instance Methods

visit(node) click to toggle source

@api private

# File lib/dry/types/primitive_inferrer.rb, line 16
def visit(node)
  meth, rest = node
  public_send(:"visit_#{meth}", rest)
end
visit_any(_) click to toggle source

@api private

# File lib/dry/types/primitive_inferrer.rb, line 69
def visit_any(_)
  ::Object
end
visit_array(_) click to toggle source

@api private

# File lib/dry/types/primitive_inferrer.rb, line 34
def visit_array(_)
  ::Array
end
visit_constrained(node) click to toggle source

@api private

# File lib/dry/types/primitive_inferrer.rb, line 63
def visit_constrained(node)
  other, * = node
  visit(other)
end
visit_constructor(node) click to toggle source

@api private

# File lib/dry/types/primitive_inferrer.rb, line 44
def visit_constructor(node)
  other, * = node
  visit(other)
end
visit_enum(node) click to toggle source

@api private

# File lib/dry/types/primitive_inferrer.rb, line 50
def visit_enum(node)
  other, * = node
  visit(other)
end
visit_hash(_) click to toggle source

@api private

# File lib/dry/types/primitive_inferrer.rb, line 28
def visit_hash(_)
  ::Hash
end
Also aliased as: visit_schema
visit_lax(node) click to toggle source

@api private

# File lib/dry/types/primitive_inferrer.rb, line 39
def visit_lax(node)
  visit(node)
end
visit_nominal(node) click to toggle source

@api private

# File lib/dry/types/primitive_inferrer.rb, line 22
def visit_nominal(node)
  type, _ = node
  type
end
visit_schema(_)
Alias for: visit_hash
visit_sum(node) click to toggle source

@api private

# File lib/dry/types/primitive_inferrer.rb, line 56
def visit_sum(node)
  left, right = node

  [visit(left), visit(right)].flatten(1)
end