Sha256: c47c1c433b07c9b74d8036823561549dab04973edc8aa2eb857c7b892789c55d

Contents?: true

Size: 695 Bytes

Versions: 6

Compression:

Stored size: 695 Bytes

Contents

#
# Copyright (c) 2018-present, Blue Marble Payroll, LLC
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
#

module Logicality
  module Interpreter
    class NodeVisitor

      def visit(node)
        return nil unless node

        visitor_name = method_name(node)

        if respond_to?(visitor_name)
          send(visitor_name, node)
        else
          generic_visit(node)
        end
      end

      private

      def generic_visit(node)
        raise ArgumentError, "No visitor method: #{method_name(node)}"
      end

      def method_name(node)
        "visit_#{node.name}"
      end

    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
logicality-1.0.4 lib/logicality/interpreter/node_visitor.rb
logicality-1.0.3 lib/logicality/interpreter/node_visitor.rb
logicality-1.0.2 lib/logicality/interpreter/node_visitor.rb
logicality-1.0.1 lib/logicality/interpreter/node_visitor.rb
logicality-1.0.0 lib/logicality/interpreter/node_visitor.rb
logicality-0.0.1 lib/logicality/interpreter/node_visitor.rb