Class | YAML::Syck::Parser |
In: |
syck/rubyext.c
|
Parent: | Object |
YAML::Syck::Parser.initialize( resolver, options )
/* * YAML::Syck::Parser.initialize( resolver, options ) */ static VALUE syck_parser_initialize(argc, argv, self) int argc; VALUE *argv; VALUE self; { VALUE options; if (rb_scan_args(argc, argv, "01", &options) == 0) { options = rb_hash_new(); } else { Check_Type(options, T_HASH); } rb_ivar_set(self, s_options, options); return self; }
YAML::Syck::Parser.bufsize => Integer
/* * YAML::Syck::Parser.bufsize => Integer */ static VALUE syck_parser_bufsize_get( self ) VALUE self; { SyckParser *parser; Data_Get_Struct(self, SyckParser, parser); return INT2FIX( parser->bufsize ); }
YAML::Syck::Parser.bufsize = Integer
/* * YAML::Syck::Parser.bufsize = Integer */ static VALUE syck_parser_bufsize_set( self, size ) VALUE self, size; { SyckParser *parser; if ( rb_respond_to( size, s_to_i ) ) { int n = NUM2INT(rb_funcall(size, s_to_i, 0)); Data_Get_Struct(self, SyckParser, parser); parser->bufsize = n; } return self; }
YAML::Syck::Parser.load( IO or String )
/* * YAML::Syck::Parser.load( IO or String ) */ VALUE syck_parser_load(argc, argv, self) int argc; VALUE *argv; VALUE self; { VALUE port, proc, model, input; SyckParser *parser; struct parser_xtra *bonus = S_ALLOC_N( struct parser_xtra, 1 ); volatile VALUE hash; /* protect from GC */ rb_scan_args(argc, argv, "11", &port, &proc); input = rb_hash_aref( rb_attr_get( self, s_options ), sym_input ); model = rb_hash_aref( rb_attr_get( self, s_options ), sym_model ); Data_Get_Struct(self, SyckParser, parser); syck_set_model( self, input, model ); bonus->taint = syck_parser_assign_io(parser, port); bonus->data = hash = rb_hash_new(); bonus->resolver = rb_attr_get( self, s_resolver ); if ( NIL_P( proc ) ) bonus->proc = 0; else bonus->proc = proc; parser->bonus = (void *)bonus; return syck_parse( parser ); }
YAML::Syck::Parser.load_documents( IO or String ) { |doc| }
/* * YAML::Syck::Parser.load_documents( IO or String ) { |doc| } */ VALUE syck_parser_load_documents(argc, argv, self) int argc; VALUE *argv; VALUE self; { VALUE port, proc, v, input, model; SyckParser *parser; struct parser_xtra *bonus = S_ALLOC_N( struct parser_xtra, 1 ); volatile VALUE hash; rb_scan_args(argc, argv, "1&", &port, &proc); input = rb_hash_aref( rb_attr_get( self, s_options ), sym_input ); model = rb_hash_aref( rb_attr_get( self, s_options ), sym_model ); Data_Get_Struct(self, SyckParser, parser); syck_set_model( self, input, model ); bonus->taint = syck_parser_assign_io(parser, port); bonus->resolver = rb_attr_get( self, s_resolver ); bonus->proc = 0; parser->bonus = (void *)bonus; while ( 1 ) { /* Reset hash for tracking nodes */ bonus->data = hash = rb_hash_new(); /* Parse a document */ v = syck_parse( parser ); if ( parser->eof == 1 ) { break; } /* Pass document to block */ rb_funcall( proc, s_call, 1, v ); } return Qnil; }
YAML::Syck::Parser#set_resolver
/* * YAML::Syck::Parser#set_resolver */ VALUE syck_parser_set_resolver( self, resolver ) VALUE self, resolver; { rb_ivar_set( self, s_resolver, resolver ); return self; }