mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
7ceafcbdf5
defined, restricted subset of Ruby object types. * ext/psych/lib/psych/class_loader.rb: A class loader for encapsulating the logic for which objects are allowed to be deserialized. * ext/psych/lib/psych/deprecated.rb: Changes to use the class loader * ext/psych/lib/psych/exception.rb: ditto * ext/psych/lib/psych/json/stream.rb: ditto * ext/psych/lib/psych/nodes/node.rb: ditto * ext/psych/lib/psych/scalar_scanner.rb: ditto * ext/psych/lib/psych/stream.rb: ditto * ext/psych/lib/psych/streaming.rb: ditto * ext/psych/lib/psych/visitors/json_tree.rb: ditto * ext/psych/lib/psych/visitors/to_ruby.rb: ditto * ext/psych/lib/psych/visitors/yaml_tree.rb: ditto * ext/psych/psych_to_ruby.c: ditto * test/psych/helper.rb: ditto * test/psych/test_safe_load.rb: tests for restricted subset. * test/psych/test_scalar_scanner.rb: ditto * test/psych/visitors/test_to_ruby.rb: ditto * test/psych/visitors/test_yaml_tree.rb: ditto git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40750 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
43 lines
1.1 KiB
C
43 lines
1.1 KiB
C
#include <psych.h>
|
|
|
|
VALUE cPsychVisitorsToRuby;
|
|
|
|
/* call-seq: vis.build_exception(klass, message)
|
|
*
|
|
* Create an exception with class +klass+ and +message+
|
|
*/
|
|
static VALUE build_exception(VALUE self, VALUE klass, VALUE mesg)
|
|
{
|
|
VALUE e = rb_obj_alloc(klass);
|
|
|
|
rb_iv_set(e, "mesg", mesg);
|
|
|
|
return e;
|
|
}
|
|
|
|
/* call-seq: vis.path2class(path)
|
|
*
|
|
* Convert +path+ string to a class
|
|
*/
|
|
static VALUE path2class(VALUE self, VALUE path)
|
|
{
|
|
#ifdef HAVE_RUBY_ENCODING_H
|
|
return rb_path_to_class(path);
|
|
#else
|
|
return rb_path2class(StringValuePtr(path));
|
|
#endif
|
|
}
|
|
|
|
void Init_psych_to_ruby(void)
|
|
{
|
|
VALUE psych = rb_define_module("Psych");
|
|
VALUE class_loader = rb_define_class_under(psych, "ClassLoader", rb_cObject);
|
|
|
|
VALUE visitors = rb_define_module_under(psych, "Visitors");
|
|
VALUE visitor = rb_define_class_under(visitors, "Visitor", rb_cObject);
|
|
cPsychVisitorsToRuby = rb_define_class_under(visitors, "ToRuby", visitor);
|
|
|
|
rb_define_private_method(cPsychVisitorsToRuby, "build_exception", build_exception, 2);
|
|
rb_define_private_method(class_loader, "path2class", path2class, 1);
|
|
}
|
|
/* vim: set noet sws=4 sw=4: */
|