1#include <psych.h>
2
3VALUE cPsychVisitorsToRuby;
4
5/* call-seq: vis.build_exception(klass, message)
6 *
7 * Create an exception with class +klass+ and +message+
8 */
9static VALUE build_exception(VALUE self, VALUE klass, VALUE mesg)
10{
11    VALUE e = rb_obj_alloc(klass);
12
13    rb_iv_set(e, "mesg", mesg);
14
15    return e;
16}
17
18/* call-seq: vis.path2class(path)
19 *
20 * Convert +path+ string to a class
21 */
22static VALUE path2class(VALUE self, VALUE path)
23{
24#ifdef HAVE_RUBY_ENCODING_H
25    return rb_path_to_class(path);
26#else
27    return rb_path2class(StringValuePtr(path));
28#endif
29}
30
31void Init_psych_to_ruby(void)
32{
33    VALUE psych     = rb_define_module("Psych");
34    VALUE visitors  = rb_define_module_under(psych, "Visitors");
35    VALUE visitor   = rb_define_class_under(visitors, "Visitor", rb_cObject);
36    cPsychVisitorsToRuby = rb_define_class_under(visitors, "ToRuby", visitor);
37
38    rb_define_private_method(cPsychVisitorsToRuby, "build_exception", build_exception, 2);
39    rb_define_private_method(cPsychVisitorsToRuby, "path2class", path2class, 1);
40}
41/* vim: set noet sws=4 sw=4: */
42