# frozen_string_literal: true
module Psych
module Visitors
class Visitor
def accept target
visit target
end
private
# @api private
def self.dispatch_cache
Hash.new do |hash, klass|
hash[klass] = :"visit_#{klass.name.gsub('::', '_')}"
end.compare_by_identity
end
if defined?(Ractor)
def dispatch
@dispatch_cache ||= (Ractor.current[:Psych_Visitors_Visitor] ||= Visitor.dispatch_cache)
end
else
DISPATCH = dispatch_cache
def dispatch
DISPATCH
end
end
def visit target
send dispatch[target.class], target
end
end
end
end
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| depth_first.rb | File | 626 B | 0644 |
|
| emitter.rb | File | 1.45 KB | 0644 |
|
| json_tree.rb | File | 593 B | 0644 |
|
| to_ruby.rb | File | 12.39 KB | 0644 |
|
| visitor.rb | File | 702 B | 0644 |
|
| yaml_tree.rb | File | 16.25 KB | 0644 |
|