blob: b980445a9ca0673995f5a7b352e5413287447c61 [file] [log] [blame]
module SafeYAML
class SafeToRubyVisitor < Psych::Visitors::ToRuby
INITIALIZE_ARITY = superclass.instance_method(:initialize).arity
def initialize(resolver)
case INITIALIZE_ARITY
when 2
# https://github.com/tenderlove/psych/blob/v2.0.0/lib/psych/visitors/to_ruby.rb#L14-L28
loader = Psych::ClassLoader.new
scanner = Psych::ScalarScanner.new(loader)
super(scanner, loader)
else
super()
end
@resolver = resolver
end
def accept(node)
if node.tag
SafeYAML.tag_safety_check!(node.tag, @resolver.options)
return super
end
@resolver.resolve_node(node)
end
end
end