module Object::Syck
Constants
- DefaultResolver
- GenericResolver
Public Class Methods
compile(p1)
click to toggle source
Convert YAML to bytecode
VALUE rb_syck_compile(VALUE self, VALUE port) { SYMID oid; int taint; char *ret; VALUE bc; bytestring_t *sav = NULL; void *data = NULL; SyckParser *parser = syck_new_parser(); taint = syck_parser_assign_io(parser, &port); syck_parser_handler( parser, syck_yaml2byte_handler ); syck_parser_error_handler( parser, NULL ); syck_parser_implicit_typing( parser, 0 ); syck_parser_taguri_expansion( parser, 0 ); oid = syck_parse( parser ); if (!syck_lookup_sym( parser, oid, &data )) { rb_raise(rb_eSyntaxError, "root node <%p> not found", (void *)oid); } sav = data; ret = S_ALLOCA_N( char, strlen( sav->buffer ) + 3 ); ret[0] = '\0'; strcat( ret, "D\n" ); strcat( ret, sav->buffer ); syck_free_parser( parser ); bc = rb_str_new2( ret ); if ( taint ) OBJ_TAINT( bc ); return bc; }