Class: Refract::Converter

Inherits:
Prism::BasicVisitor
  • Object
show all
Defined in:
lib/refract/converter.rb

Class Method Summary collapse

Class Method Details

.visit(node_class) ⇒ Object

Raises:

  • (ArgumentError)


5
6
7
8
9
10
11
12
13
14
15
# File 'lib/refract/converter.rb', line 5

def self.visit(node_class, &)
  raise ArgumentError unless Class === node_class && Prism::Node > node_class
  type = node_class.type.name

  define_method("visit_#{type}") do |node|
    raise ArgumentError unless node_class === node
    return_value = instance_exec(node, &)
    raise ArgumentError unless Node === return_value
    return_value
  end
end