mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* ext/syck/syck.h: version 0.43.
* ext/syck/lib/gram.c: allow root-level inline collections. [ruby-talk:94922] * lib/yaml/rubytypes.rb (Symbol#to_yaml): emit symbols as implicits. [ruby-talk:94930] * ext/syck/bytecode.c: turn off default implicit typing. * ext/syck/implicit.c: detect base60 integers. * ext/syck/rubyext.c: handle base60, as well as hex and octal with commas. implicit typing of ruby symbols. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@6083 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
7c67e3f978
commit
1ba2a61687
8 changed files with 1762 additions and 1601 deletions
17
ChangeLog
17
ChangeLog
|
|
@ -1,3 +1,20 @@
|
||||||
|
Sat Apr 3 17:11:05 2004 why the lucky stiff <why@ruby-lang.org>
|
||||||
|
|
||||||
|
* ext/syck/syck.h: version 0.43.
|
||||||
|
|
||||||
|
* ext/syck/lib/gram.c: allow root-level inline collections.
|
||||||
|
[ruby-talk:94922]
|
||||||
|
|
||||||
|
* lib/yaml/rubytypes.rb (Symbol#to_yaml): emit symbols as implicits.
|
||||||
|
[ruby-talk:94930]
|
||||||
|
|
||||||
|
* ext/syck/bytecode.c: turn off default implicit typing.
|
||||||
|
|
||||||
|
* ext/syck/implicit.c: detect base60 integers.
|
||||||
|
|
||||||
|
* ext/syck/rubyext.c: handle base60, as well as hex and octal
|
||||||
|
with commas. implicit typing of ruby symbols.
|
||||||
|
|
||||||
Thu Apr 1 19:58:37 2004 NAKAMURA, Hiroshi <nakahiro@sarion.co.jp>
|
Thu Apr 1 19:58:37 2004 NAKAMURA, Hiroshi <nakahiro@sarion.co.jp>
|
||||||
|
|
||||||
* lib/soap/mapping/{factory.rb,registry.rb}: fixed illegal mapped URI
|
* lib/soap/mapping/{factory.rb,registry.rb}: fixed illegal mapped URI
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
/* Generated by re2c 0.5 on Sun Nov 23 14:51:02 2003 */
|
/* Generated by re2c 0.5 on Mon Jan 12 11:40:10 2004 */
|
||||||
#line 1 "bytecode.re"
|
#line 1 "bytecode.re"
|
||||||
/*
|
/*
|
||||||
* bytecode.re
|
* bytecode.re
|
||||||
|
|
@ -510,7 +510,7 @@ yy44: yych = *++YYCURSOR;
|
||||||
|
|
||||||
Directive:
|
Directive:
|
||||||
{
|
{
|
||||||
YYTOKTMP = YYCURSOR;
|
YYTOKEN = YYCURSOR;
|
||||||
|
|
||||||
{
|
{
|
||||||
YYCTYPE yych;
|
YYCTYPE yych;
|
||||||
|
|
@ -611,7 +611,7 @@ yy48: yyaccept = 0;
|
||||||
}
|
}
|
||||||
yy49:
|
yy49:
|
||||||
#line 400
|
#line 400
|
||||||
{ YYCURSOR = YYTOKTMP;
|
{ YYCURSOR = YYTOKEN;
|
||||||
return YAML_DOCSEP;
|
return YAML_DOCSEP;
|
||||||
}
|
}
|
||||||
yy50: yych = *++YYCURSOR;
|
yy50: yych = *++YYCURSOR;
|
||||||
|
|
@ -876,7 +876,7 @@ yy58: yych = *++YYCURSOR;
|
||||||
|
|
||||||
Comment:
|
Comment:
|
||||||
{
|
{
|
||||||
YYTOKTMP = YYCURSOR;
|
YYTOKEN = YYCURSOR;
|
||||||
|
|
||||||
{
|
{
|
||||||
YYCTYPE yych;
|
YYCTYPE yych;
|
||||||
|
|
|
||||||
652
ext/syck/gram.c
652
ext/syck/gram.c
File diff suppressed because it is too large
Load diff
2257
ext/syck/implicit.c
2257
ext/syck/implicit.c
File diff suppressed because it is too large
Load diff
|
|
@ -1,3 +1,4 @@
|
||||||
|
/* -*- indent-tabs-mode: nil -*-
|
||||||
/*
|
/*
|
||||||
* rubyext.c
|
* rubyext.c
|
||||||
*
|
*
|
||||||
|
|
@ -15,23 +16,23 @@
|
||||||
typedef struct RVALUE {
|
typedef struct RVALUE {
|
||||||
union {
|
union {
|
||||||
#if 0
|
#if 0
|
||||||
struct {
|
struct {
|
||||||
unsigned long flags; /* always 0 for freed obj */
|
unsigned long flags; /* always 0 for freed obj */
|
||||||
struct RVALUE *next;
|
struct RVALUE *next;
|
||||||
} free;
|
} free;
|
||||||
#endif
|
#endif
|
||||||
struct RBasic basic;
|
struct RBasic basic;
|
||||||
struct RObject object;
|
struct RObject object;
|
||||||
struct RClass klass;
|
struct RClass klass;
|
||||||
/*struct RFloat flonum;*/
|
/*struct RFloat flonum;*/
|
||||||
/*struct RString string;*/
|
/*struct RString string;*/
|
||||||
struct RArray array;
|
struct RArray array;
|
||||||
/*struct RRegexp regexp;*/
|
/*struct RRegexp regexp;*/
|
||||||
struct RHash hash;
|
struct RHash hash;
|
||||||
/*struct RData data;*/
|
/*struct RData data;*/
|
||||||
struct RStruct rstruct;
|
struct RStruct rstruct;
|
||||||
/*struct RBignum bignum;*/
|
/*struct RBignum bignum;*/
|
||||||
/*struct RFile file;*/
|
/*struct RFile file;*/
|
||||||
} as;
|
} as;
|
||||||
} RVALUE;
|
} RVALUE;
|
||||||
|
|
||||||
|
|
@ -49,6 +50,7 @@ typedef struct {
|
||||||
* symbols and constants
|
* symbols and constants
|
||||||
*/
|
*/
|
||||||
static ID s_new, s_utc, s_at, s_to_f, s_to_i, s_read, s_binmode, s_call, s_transfer, s_update, s_dup, s_match, s_keys, s_to_str, s_unpack, s_tr_bang, s_anchors, s_default_set;
|
static ID s_new, s_utc, s_at, s_to_f, s_to_i, s_read, s_binmode, s_call, s_transfer, s_update, s_dup, s_match, s_keys, s_to_str, s_unpack, s_tr_bang, s_anchors, s_default_set;
|
||||||
|
static ID s_anchors, s_domain, s_families, s_kind, s_name, s_options, s_private_types, s_type_id, s_value;
|
||||||
static VALUE sym_model, sym_generic, sym_input, sym_bytecode;
|
static VALUE sym_model, sym_generic, sym_input, sym_bytecode;
|
||||||
static VALUE sym_scalar, sym_seq, sym_map;
|
static VALUE sym_scalar, sym_seq, sym_map;
|
||||||
VALUE cDate, cParser, cLoader, cNode, cPrivateType, cDomainType, cBadAlias, cDefaultKey, cMergeKey, cEmitter;
|
VALUE cDate, cParser, cLoader, cNode, cPrivateType, cDomainType, cBadAlias, cDefaultKey, cMergeKey, cEmitter;
|
||||||
|
|
@ -85,7 +87,7 @@ struct parser_xtra {
|
||||||
*/
|
*/
|
||||||
VALUE
|
VALUE
|
||||||
rb_syck_compile(self, port)
|
rb_syck_compile(self, port)
|
||||||
VALUE self, port;
|
VALUE self, port;
|
||||||
{
|
{
|
||||||
SYMID oid;
|
SYMID oid;
|
||||||
int taint;
|
int taint;
|
||||||
|
|
@ -94,7 +96,7 @@ rb_syck_compile(self, port)
|
||||||
bytestring_t *sav;
|
bytestring_t *sav;
|
||||||
|
|
||||||
SyckParser *parser = syck_new_parser();
|
SyckParser *parser = syck_new_parser();
|
||||||
taint = syck_parser_assign_io(parser, port);
|
taint = syck_parser_assign_io(parser, port);
|
||||||
syck_parser_handler( parser, syck_yaml2byte_handler );
|
syck_parser_handler( parser, syck_yaml2byte_handler );
|
||||||
syck_parser_error_handler( parser, NULL );
|
syck_parser_error_handler( parser, NULL );
|
||||||
syck_parser_implicit_typing( parser, 0 );
|
syck_parser_implicit_typing( parser, 0 );
|
||||||
|
|
@ -151,14 +153,14 @@ rb_syck_io_str_read( char *buf, SyckIoStr *str, long max_size, long skip )
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
syck_parser_assign_io(parser, port)
|
syck_parser_assign_io(parser, port)
|
||||||
SyckParser *parser;
|
SyckParser *parser;
|
||||||
VALUE port;
|
VALUE port;
|
||||||
{
|
{
|
||||||
int taint = Qtrue;
|
int taint = Qtrue;
|
||||||
if (rb_respond_to(port, s_to_str)) {
|
if (rb_respond_to(port, s_to_str)) {
|
||||||
taint = OBJ_TAINTED(port); /* original taintedness */
|
taint = OBJ_TAINTED(port); /* original taintedness */
|
||||||
StringValue(port); /* possible conversion */
|
StringValue(port); /* possible conversion */
|
||||||
syck_parser_str( parser, RSTRING(port)->ptr, RSTRING(port)->len, NULL );
|
syck_parser_str( parser, RSTRING(port)->ptr, RSTRING(port)->len, NULL );
|
||||||
}
|
}
|
||||||
else if (rb_respond_to(port, s_read)) {
|
else if (rb_respond_to(port, s_read)) {
|
||||||
if (rb_respond_to(port, s_binmode)) {
|
if (rb_respond_to(port, s_binmode)) {
|
||||||
|
|
@ -197,7 +199,8 @@ rb_syck_mktime(str)
|
||||||
{
|
{
|
||||||
VALUE time;
|
VALUE time;
|
||||||
char *ptr = str;
|
char *ptr = str;
|
||||||
VALUE year, mon, day, hour, min, sec, usec;
|
VALUE year, mon, day, hour, min, sec;
|
||||||
|
long usec;
|
||||||
|
|
||||||
/* Year*/
|
/* Year*/
|
||||||
ptr[4] = '\0';
|
ptr[4] = '\0';
|
||||||
|
|
@ -232,23 +235,23 @@ rb_syck_mktime(str)
|
||||||
ptr += 2;
|
ptr += 2;
|
||||||
if ( *ptr == '.' )
|
if ( *ptr == '.' )
|
||||||
{
|
{
|
||||||
usec = INT2FIX( strtod( ptr, NULL ) * 1000000 );
|
char *padded = syck_strndup( "000000", 6 );
|
||||||
|
char *end = ptr + 1;
|
||||||
|
while ( isdigit( *end ) ) end++;
|
||||||
|
MEMCPY(padded, ptr + 1, char, end - (ptr + 1));
|
||||||
|
usec = strtol(padded, NULL, 10);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
usec = INT2FIX( 0 );
|
usec = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Make UTC time*/
|
|
||||||
time = rb_funcall(rb_cTime, s_utc, 7, year, mon, day, hour, min, sec, usec);
|
|
||||||
|
|
||||||
/* Time Zone*/
|
/* Time Zone*/
|
||||||
while ( *ptr != 'Z' && *ptr != '+' && *ptr != '-' && *ptr != '\0' ) ptr++;
|
while ( *ptr != 'Z' && *ptr != '+' && *ptr != '-' && *ptr != '\0' ) ptr++;
|
||||||
if ( *ptr == '-' || *ptr == '+' )
|
if ( *ptr == '-' || *ptr == '+' )
|
||||||
{
|
{
|
||||||
double tz_offset = 0;
|
time_t tz_offset = strtol(ptr, NULL, 10) * 3600;
|
||||||
double utc_time = 0;
|
time_t tmp;
|
||||||
tz_offset += strtod(ptr, NULL) * 3600;
|
|
||||||
|
|
||||||
while ( *ptr != ':' && *ptr != '\0' ) ptr++;
|
while ( *ptr != ':' && *ptr != '\0' ) ptr++;
|
||||||
if ( *ptr == ':' )
|
if ( *ptr == ':' )
|
||||||
|
|
@ -256,21 +259,25 @@ rb_syck_mktime(str)
|
||||||
ptr += 1;
|
ptr += 1;
|
||||||
if ( tz_offset < 0 )
|
if ( tz_offset < 0 )
|
||||||
{
|
{
|
||||||
tz_offset -= strtod(ptr, NULL) * 60;
|
tz_offset -= strtol(ptr, NULL, 10) * 60;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tz_offset += strtod(ptr, NULL) * 60;
|
tz_offset += strtol(ptr, NULL, 10) * 60;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Make TZ time*/
|
/* Make TZ time*/
|
||||||
utc_time = NUM2DBL(rb_funcall(time, s_to_f, 0));
|
time = rb_funcall(rb_cTime, s_utc, 6, year, mon, day, hour, min, sec);
|
||||||
utc_time -= tz_offset;
|
tmp = NUM2LONG(rb_funcall(time, s_to_i, 0)) - tz_offset;
|
||||||
time = rb_funcall(rb_cTime, s_at, 1, rb_float_new(utc_time));
|
return rb_funcall(rb_cTime, s_at, 2, LONG2NUM(tmp), LONG2NUM(usec));
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Make UTC time*/
|
||||||
|
return rb_funcall(rb_cTime, s_utc, 7, year, mon, day, hour, min, sec, LONG2NUM(usec));
|
||||||
|
|
||||||
return time;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -290,18 +297,18 @@ rb_syck_parse_handler(p, n)
|
||||||
if ( n->type_id != NULL )
|
if ( n->type_id != NULL )
|
||||||
{
|
{
|
||||||
t = rb_str_new2(n->type_id);
|
t = rb_str_new2(n->type_id);
|
||||||
rb_iv_set(obj, "@type_id", t);
|
rb_ivar_set(obj, s_type_id, t);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (n->kind)
|
switch (n->kind)
|
||||||
{
|
{
|
||||||
case syck_str_kind:
|
case syck_str_kind:
|
||||||
rb_iv_set(obj, "@kind", sym_scalar);
|
rb_ivar_set(obj, s_kind, sym_scalar);
|
||||||
v = rb_str_new( n->data.str->ptr, n->data.str->len );
|
v = rb_str_new( n->data.str->ptr, n->data.str->len );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case syck_seq_kind:
|
case syck_seq_kind:
|
||||||
rb_iv_set(obj, "@kind", sym_seq);
|
rb_ivar_set(obj, s_kind, sym_seq);
|
||||||
v = rb_ary_new2( n->data.list->idx );
|
v = rb_ary_new2( n->data.list->idx );
|
||||||
for ( i = 0; i < n->data.list->idx; i++ )
|
for ( i = 0; i < n->data.list->idx; i++ )
|
||||||
{
|
{
|
||||||
|
|
@ -310,7 +317,7 @@ rb_syck_parse_handler(p, n)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case syck_map_kind:
|
case syck_map_kind:
|
||||||
rb_iv_set(obj, "@kind", sym_map);
|
rb_ivar_set(obj, s_kind, sym_map);
|
||||||
v = rb_hash_new();
|
v = rb_hash_new();
|
||||||
for ( i = 0; i < n->data.pairs->idx; i++ )
|
for ( i = 0; i < n->data.pairs->idx; i++ )
|
||||||
{
|
{
|
||||||
|
|
@ -326,9 +333,9 @@ rb_syck_parse_handler(p, n)
|
||||||
|
|
||||||
bonus = (struct parser_xtra *)p->bonus;
|
bonus = (struct parser_xtra *)p->bonus;
|
||||||
if ( bonus->taint) OBJ_TAINT( obj );
|
if ( bonus->taint) OBJ_TAINT( obj );
|
||||||
if ( bonus->proc != 0 ) rb_funcall(bonus->proc, s_call, 1, v);
|
if ( bonus->proc != 0 ) rb_funcall(bonus->proc, s_call, 1, v);
|
||||||
|
|
||||||
rb_iv_set(obj, "@value", v);
|
rb_ivar_set(obj, s_value, v);
|
||||||
rb_hash_aset(bonus->data, INT2FIX(RHASH(bonus->data)->tbl->num_entries), obj);
|
rb_hash_aset(bonus->data, INT2FIX(RHASH(bonus->data)->tbl->num_entries), obj);
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
@ -341,10 +348,10 @@ VALUE
|
||||||
syck_merge_i( entry, hsh )
|
syck_merge_i( entry, hsh )
|
||||||
VALUE entry, hsh;
|
VALUE entry, hsh;
|
||||||
{
|
{
|
||||||
if ( rb_obj_is_kind_of( entry, rb_cHash ) )
|
if ( rb_obj_is_kind_of( entry, rb_cHash ) )
|
||||||
{
|
{
|
||||||
rb_funcall( hsh, s_update, 1, entry );
|
rb_funcall( hsh, s_update, 1, entry );
|
||||||
}
|
}
|
||||||
return Qnil;
|
return Qnil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -360,12 +367,12 @@ rb_new_syck_node( obj, type_id )
|
||||||
|
|
||||||
if (rb_respond_to(obj, s_to_str))
|
if (rb_respond_to(obj, s_to_str))
|
||||||
{
|
{
|
||||||
StringValue(obj); /* possible conversion */
|
StringValue(obj); /* possible conversion */
|
||||||
n = syck_alloc_str();
|
n = syck_alloc_str();
|
||||||
n->data.str->ptr = RSTRING(obj)->ptr;
|
n->data.str->ptr = RSTRING(obj)->ptr;
|
||||||
n->data.str->len = RSTRING(obj)->len;
|
n->data.str->len = RSTRING(obj)->len;
|
||||||
}
|
}
|
||||||
else if ( rb_obj_is_kind_of( obj, rb_cArray ) )
|
else if ( rb_obj_is_kind_of( obj, rb_cArray ) )
|
||||||
{
|
{
|
||||||
n = syck_alloc_seq();
|
n = syck_alloc_seq();
|
||||||
for ( i = 0; i < RARRAY(obj)->len; i++ )
|
for ( i = 0; i < RARRAY(obj)->len; i++ )
|
||||||
|
|
@ -411,7 +418,7 @@ yaml_org_handler( n, ref )
|
||||||
{
|
{
|
||||||
case syck_str_kind:
|
case syck_str_kind:
|
||||||
transferred = 1;
|
transferred = 1;
|
||||||
if ( type_id == NULL || strcmp( type_id, "str" ) == 0 )
|
if ( type_id == NULL )
|
||||||
{
|
{
|
||||||
obj = rb_str_new( n->data.str->ptr, n->data.str->len );
|
obj = rb_str_new( n->data.str->ptr, n->data.str->len );
|
||||||
}
|
}
|
||||||
|
|
@ -437,12 +444,39 @@ yaml_org_handler( n, ref )
|
||||||
}
|
}
|
||||||
else if ( strcmp( type_id, "int#hex" ) == 0 )
|
else if ( strcmp( type_id, "int#hex" ) == 0 )
|
||||||
{
|
{
|
||||||
|
syck_str_blow_away_commas( n );
|
||||||
obj = rb_cstr2inum( n->data.str->ptr, 16 );
|
obj = rb_cstr2inum( n->data.str->ptr, 16 );
|
||||||
}
|
}
|
||||||
else if ( strcmp( type_id, "int#oct" ) == 0 )
|
else if ( strcmp( type_id, "int#oct" ) == 0 )
|
||||||
{
|
{
|
||||||
|
syck_str_blow_away_commas( n );
|
||||||
obj = rb_cstr2inum( n->data.str->ptr, 8 );
|
obj = rb_cstr2inum( n->data.str->ptr, 8 );
|
||||||
}
|
}
|
||||||
|
else if ( strcmp( type_id, "int#base60" ) == 0 )
|
||||||
|
{
|
||||||
|
char *ptr, *end;
|
||||||
|
long sixty = 1;
|
||||||
|
long total = 0;
|
||||||
|
syck_str_blow_away_commas( n );
|
||||||
|
ptr = n->data.str->ptr;
|
||||||
|
end = n->data.str->ptr + n->data.str->len;
|
||||||
|
while ( end > ptr )
|
||||||
|
{
|
||||||
|
long bnum = 0;
|
||||||
|
char *colon = end - 1;
|
||||||
|
while ( colon >= ptr && *colon != ':' )
|
||||||
|
{
|
||||||
|
colon--;
|
||||||
|
}
|
||||||
|
if ( *colon == ':' ) *colon = '\0';
|
||||||
|
|
||||||
|
bnum = strtol( colon + 1, NULL, 10 );
|
||||||
|
total += bnum * sixty;
|
||||||
|
sixty *= 60;
|
||||||
|
end = colon;
|
||||||
|
}
|
||||||
|
obj = INT2FIX(total);
|
||||||
|
}
|
||||||
else if ( strncmp( type_id, "int", 3 ) == 0 )
|
else if ( strncmp( type_id, "int", 3 ) == 0 )
|
||||||
{
|
{
|
||||||
syck_str_blow_away_commas( n );
|
syck_str_blow_away_commas( n );
|
||||||
|
|
@ -494,6 +528,14 @@ yaml_org_handler( n, ref )
|
||||||
while ( !ISDIGIT( *ptr ) ) ptr++;
|
while ( !ISDIGIT( *ptr ) ) ptr++;
|
||||||
day = INT2FIX(strtol(ptr, NULL, 10));
|
day = INT2FIX(strtol(ptr, NULL, 10));
|
||||||
|
|
||||||
|
if ( !cDate ) {
|
||||||
|
/*
|
||||||
|
* Load Date module
|
||||||
|
*/
|
||||||
|
rb_require( "date" );
|
||||||
|
cDate = rb_const_get( rb_cObject, rb_intern("Date") );
|
||||||
|
}
|
||||||
|
|
||||||
obj = rb_funcall( cDate, s_new, 3, year, mon, day );
|
obj = rb_funcall( cDate, s_new, 3, year, mon, day );
|
||||||
}
|
}
|
||||||
else if ( strncmp( type_id, "timestamp", 9 ) == 0 )
|
else if ( strncmp( type_id, "timestamp", 9 ) == 0 )
|
||||||
|
|
@ -508,6 +550,17 @@ yaml_org_handler( n, ref )
|
||||||
{
|
{
|
||||||
obj = rb_funcall( cDefaultKey, s_new, 0 );
|
obj = rb_funcall( cDefaultKey, s_new, 0 );
|
||||||
}
|
}
|
||||||
|
else if ( strncmp( n->data.str->ptr, ":", 1 ) == 0 )
|
||||||
|
{
|
||||||
|
char *tmp;
|
||||||
|
tmp = syck_strndup( n->data.str->ptr + 1, n->data.str->len - 1 );
|
||||||
|
obj = ID2SYM( rb_intern( tmp ) );
|
||||||
|
free( tmp );
|
||||||
|
}
|
||||||
|
else if ( strcmp( type_id, "str" ) == 0 )
|
||||||
|
{
|
||||||
|
obj = rb_str_new( n->data.str->ptr, n->data.str->len );
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
transferred = 0;
|
transferred = 0;
|
||||||
|
|
@ -616,7 +669,7 @@ rb_syck_load_handler(p, n)
|
||||||
|
|
||||||
bonus = (struct parser_xtra *)p->bonus;
|
bonus = (struct parser_xtra *)p->bonus;
|
||||||
if ( bonus->taint) OBJ_TAINT( obj );
|
if ( bonus->taint) OBJ_TAINT( obj );
|
||||||
if ( bonus->proc != 0 ) rb_funcall(bonus->proc, s_call, 1, obj);
|
if ( bonus->proc != 0 ) rb_funcall(bonus->proc, s_call, 1, obj);
|
||||||
|
|
||||||
rb_hash_aset(bonus->data, INT2FIX(RHASH(bonus->data)->tbl->num_entries), obj);
|
rb_hash_aset(bonus->data, INT2FIX(RHASH(bonus->data)->tbl->num_entries), obj);
|
||||||
return obj;
|
return obj;
|
||||||
|
|
@ -662,21 +715,21 @@ rb_syck_bad_anchor_handler(p, a)
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
syck_set_model( parser, input, model )
|
syck_set_model( parser, input, model )
|
||||||
SyckParser *parser;
|
SyckParser *parser;
|
||||||
VALUE input, model;
|
VALUE input, model;
|
||||||
{
|
{
|
||||||
if ( model == sym_generic )
|
if ( model == sym_generic )
|
||||||
{
|
{
|
||||||
syck_parser_handler( parser, rb_syck_parse_handler );
|
syck_parser_handler( parser, rb_syck_parse_handler );
|
||||||
syck_parser_implicit_typing( parser, 1 );
|
syck_parser_implicit_typing( parser, 1 );
|
||||||
syck_parser_taguri_expansion( parser, 1 );
|
syck_parser_taguri_expansion( parser, 1 );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
syck_parser_handler( parser, rb_syck_load_handler );
|
syck_parser_handler( parser, rb_syck_load_handler );
|
||||||
syck_parser_implicit_typing( parser, 1 );
|
syck_parser_implicit_typing( parser, 1 );
|
||||||
syck_parser_taguri_expansion( parser, 0 );
|
syck_parser_taguri_expansion( parser, 0 );
|
||||||
}
|
}
|
||||||
if ( input == sym_bytecode )
|
if ( input == sym_bytecode )
|
||||||
{
|
{
|
||||||
syck_parser_set_input_type( parser, syck_bytecode_utf8 );
|
syck_parser_set_input_type( parser, syck_bytecode_utf8 );
|
||||||
|
|
@ -703,13 +756,13 @@ VALUE
|
||||||
syck_parser_new(argc, argv, class)
|
syck_parser_new(argc, argv, class)
|
||||||
int argc;
|
int argc;
|
||||||
VALUE *argv;
|
VALUE *argv;
|
||||||
VALUE class;
|
VALUE class;
|
||||||
{
|
{
|
||||||
VALUE pobj, options, init_argv[1];
|
VALUE pobj, options, init_argv[1];
|
||||||
SyckParser *parser = syck_new_parser();
|
SyckParser *parser = syck_new_parser();
|
||||||
|
|
||||||
rb_scan_args(argc, argv, "01", &options);
|
rb_scan_args(argc, argv, "01", &options);
|
||||||
pobj = Data_Wrap_Struct( class, syck_mark_parser, syck_free_parser, parser );
|
pobj = Data_Wrap_Struct( class, syck_mark_parser, syck_free_parser, parser );
|
||||||
|
|
||||||
syck_parser_set_root_on_error( parser, Qnil );
|
syck_parser_set_root_on_error( parser, Qnil );
|
||||||
|
|
||||||
|
|
@ -717,9 +770,9 @@ syck_parser_new(argc, argv, class)
|
||||||
{
|
{
|
||||||
options = rb_hash_new();
|
options = rb_hash_new();
|
||||||
}
|
}
|
||||||
init_argv[0] = options;
|
init_argv[0] = options;
|
||||||
rb_obj_call_init(pobj, 1, init_argv);
|
rb_obj_call_init(pobj, 1, init_argv);
|
||||||
return pobj;
|
return pobj;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -729,8 +782,8 @@ static VALUE
|
||||||
syck_parser_initialize( self, options )
|
syck_parser_initialize( self, options )
|
||||||
VALUE self, options;
|
VALUE self, options;
|
||||||
{
|
{
|
||||||
rb_iv_set(self, "@options", options);
|
rb_ivar_set(self, s_options, options);
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -740,13 +793,13 @@ static VALUE
|
||||||
syck_parser_bufsize_set( self, size )
|
syck_parser_bufsize_set( self, size )
|
||||||
VALUE self, size;
|
VALUE self, size;
|
||||||
{
|
{
|
||||||
SyckParser *parser;
|
SyckParser *parser;
|
||||||
|
|
||||||
Data_Get_Struct(self, SyckParser, parser);
|
Data_Get_Struct(self, SyckParser, parser);
|
||||||
if ( rb_respond_to( size, s_to_i ) ) {
|
if ( rb_respond_to( size, s_to_i ) ) {
|
||||||
parser->bufsize = NUM2INT(rb_funcall(size, s_to_i, 0));
|
parser->bufsize = NUM2INT(rb_funcall(size, s_to_i, 0));
|
||||||
}
|
}
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -756,10 +809,10 @@ static VALUE
|
||||||
syck_parser_bufsize_get( self )
|
syck_parser_bufsize_get( self )
|
||||||
VALUE self;
|
VALUE self;
|
||||||
{
|
{
|
||||||
SyckParser *parser;
|
SyckParser *parser;
|
||||||
|
|
||||||
Data_Get_Struct(self, SyckParser, parser);
|
Data_Get_Struct(self, SyckParser, parser);
|
||||||
return INT2FIX( parser->bufsize );
|
return INT2FIX( parser->bufsize );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -769,26 +822,26 @@ VALUE
|
||||||
syck_parser_load(argc, argv, self)
|
syck_parser_load(argc, argv, self)
|
||||||
int argc;
|
int argc;
|
||||||
VALUE *argv;
|
VALUE *argv;
|
||||||
VALUE self;
|
VALUE self;
|
||||||
{
|
{
|
||||||
VALUE port, proc, model, input;
|
VALUE port, proc, model, input;
|
||||||
SyckParser *parser;
|
SyckParser *parser;
|
||||||
struct parser_xtra bonus;
|
struct parser_xtra bonus;
|
||||||
volatile VALUE hash; /* protect from GC */
|
volatile VALUE hash; /* protect from GC */
|
||||||
|
|
||||||
rb_scan_args(argc, argv, "11", &port, &proc);
|
rb_scan_args(argc, argv, "11", &port, &proc);
|
||||||
Data_Get_Struct(self, SyckParser, parser);
|
Data_Get_Struct(self, SyckParser, parser);
|
||||||
|
|
||||||
input = rb_hash_aref( rb_iv_get( self, "@options" ), sym_input );
|
input = rb_hash_aref( rb_attr_get( self, s_options ), sym_input );
|
||||||
model = rb_hash_aref( rb_iv_get( self, "@options" ), sym_model );
|
model = rb_hash_aref( rb_attr_get( self, s_options ), sym_model );
|
||||||
syck_set_model( parser, input, model );
|
syck_set_model( parser, input, model );
|
||||||
|
|
||||||
bonus.taint = syck_parser_assign_io(parser, port);
|
bonus.taint = syck_parser_assign_io(parser, port);
|
||||||
bonus.data = hash = rb_hash_new();
|
bonus.data = hash = rb_hash_new();
|
||||||
if ( NIL_P( proc ) ) bonus.proc = 0;
|
if ( NIL_P( proc ) ) bonus.proc = 0;
|
||||||
else bonus.proc = proc;
|
else bonus.proc = proc;
|
||||||
|
|
||||||
parser->bonus = (void *)&bonus;
|
parser->bonus = (void *)&bonus;
|
||||||
|
|
||||||
return syck_parse( parser );
|
return syck_parse( parser );
|
||||||
}
|
}
|
||||||
|
|
@ -800,38 +853,38 @@ VALUE
|
||||||
syck_parser_load_documents(argc, argv, self)
|
syck_parser_load_documents(argc, argv, self)
|
||||||
int argc;
|
int argc;
|
||||||
VALUE *argv;
|
VALUE *argv;
|
||||||
VALUE self;
|
VALUE self;
|
||||||
{
|
{
|
||||||
VALUE port, proc, v, input, model;
|
VALUE port, proc, v, input, model;
|
||||||
SyckParser *parser;
|
SyckParser *parser;
|
||||||
struct parser_xtra bonus;
|
struct parser_xtra bonus;
|
||||||
volatile VALUE hash;
|
volatile VALUE hash;
|
||||||
|
|
||||||
rb_scan_args(argc, argv, "1&", &port, &proc);
|
rb_scan_args(argc, argv, "1&", &port, &proc);
|
||||||
Data_Get_Struct(self, SyckParser, parser);
|
Data_Get_Struct(self, SyckParser, parser);
|
||||||
|
|
||||||
input = rb_hash_aref( rb_iv_get( self, "@options" ), sym_input );
|
input = rb_hash_aref( rb_attr_get( self, s_options ), sym_input );
|
||||||
model = rb_hash_aref( rb_iv_get( self, "@options" ), sym_model );
|
model = rb_hash_aref( rb_attr_get( self, s_options ), sym_model );
|
||||||
syck_set_model( parser, input, model );
|
syck_set_model( parser, input, model );
|
||||||
|
|
||||||
bonus.taint = syck_parser_assign_io(parser, port);
|
bonus.taint = syck_parser_assign_io(parser, port);
|
||||||
while ( 1 )
|
while ( 1 )
|
||||||
{
|
{
|
||||||
/* Reset hash for tracking nodes */
|
/* Reset hash for tracking nodes */
|
||||||
bonus.data = hash = rb_hash_new();
|
bonus.data = hash = rb_hash_new();
|
||||||
bonus.proc = 0;
|
bonus.proc = 0;
|
||||||
parser->bonus = (void *)&bonus;
|
parser->bonus = (void *)&bonus;
|
||||||
|
|
||||||
/* Parse a document */
|
/* Parse a document */
|
||||||
v = syck_parse( parser );
|
v = syck_parse( parser );
|
||||||
if ( parser->eof == 1 )
|
if ( parser->eof == 1 )
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Pass document to block */
|
/* Pass document to block */
|
||||||
rb_funcall( proc, s_call, 1, v );
|
rb_funcall( proc, s_call, 1, v );
|
||||||
}
|
}
|
||||||
|
|
||||||
return Qnil;
|
return Qnil;
|
||||||
}
|
}
|
||||||
|
|
@ -845,15 +898,15 @@ syck_loader_initialize( self )
|
||||||
{
|
{
|
||||||
VALUE families;
|
VALUE families;
|
||||||
|
|
||||||
rb_iv_set(self, "@families", rb_hash_new() );
|
families = rb_hash_new();
|
||||||
rb_iv_set(self, "@private_types", rb_hash_new() );
|
rb_ivar_set(self, s_families, families);
|
||||||
rb_iv_set(self, "@anchors", rb_hash_new() );
|
rb_ivar_set(self, s_private_types, rb_hash_new());
|
||||||
families = rb_iv_get(self, "@families");
|
rb_ivar_set(self, s_anchors, rb_hash_new());
|
||||||
|
|
||||||
rb_hash_aset(families, rb_str_new2( YAML_DOMAIN ), rb_hash_new());
|
rb_hash_aset(families, rb_str_new2( YAML_DOMAIN ), rb_hash_new());
|
||||||
rb_hash_aset(families, rb_str_new2( RUBY_DOMAIN ), rb_hash_new());
|
rb_hash_aset(families, rb_str_new2( RUBY_DOMAIN ), rb_hash_new());
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -865,7 +918,7 @@ syck_loader_add_type_family( self, domain, type_re, proc )
|
||||||
{
|
{
|
||||||
VALUE families, domain_types;
|
VALUE families, domain_types;
|
||||||
|
|
||||||
families = rb_iv_get(self, "@families");
|
families = rb_attr_get(self, s_families);
|
||||||
domain_types = syck_get_hash_aref(families, domain);
|
domain_types = syck_get_hash_aref(families, domain);
|
||||||
rb_hash_aset( domain_types, type_re, proc );
|
rb_hash_aset( domain_types, type_re, proc );
|
||||||
return Qnil;
|
return Qnil;
|
||||||
|
|
@ -933,7 +986,7 @@ syck_loader_add_private_type( argc, argv, self )
|
||||||
|
|
||||||
rb_scan_args(argc, argv, "1&", &type_re, &proc);
|
rb_scan_args(argc, argv, "1&", &type_re, &proc);
|
||||||
|
|
||||||
priv_types = rb_iv_get(self, "@private_types");
|
priv_types = rb_attr_get(self, s_private_types);
|
||||||
rb_hash_aset( priv_types, type_re, proc );
|
rb_hash_aset( priv_types, type_re, proc );
|
||||||
return Qnil;
|
return Qnil;
|
||||||
}
|
}
|
||||||
|
|
@ -965,15 +1018,15 @@ transfer_find_i(entry, col)
|
||||||
{
|
{
|
||||||
VALUE key = rb_ary_entry( entry, 0 );
|
VALUE key = rb_ary_entry( entry, 0 );
|
||||||
VALUE tid = rb_ary_entry( col, 0 );
|
VALUE tid = rb_ary_entry( col, 0 );
|
||||||
if ( rb_respond_to( key, s_match ) )
|
if ( rb_respond_to( key, s_match ) )
|
||||||
{
|
{
|
||||||
VALUE match = rb_funcall( key, rb_intern("match"), 1, tid );
|
VALUE match = rb_funcall( key, rb_intern("match"), 1, tid );
|
||||||
if ( ! NIL_P( match ) )
|
if ( ! NIL_P( match ) )
|
||||||
{
|
{
|
||||||
rb_ary_push( col, rb_ary_entry( entry, 1 ) );
|
rb_ary_push( col, rb_ary_entry( entry, 1 ) );
|
||||||
rb_iter_break();
|
rb_iter_break();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Qnil;
|
return Qnil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1018,13 +1071,13 @@ syck_loader_transfer( self, type, val )
|
||||||
if ( rb_str_cmp( scheme, str_xprivate ) == 0 )
|
if ( rb_str_cmp( scheme, str_xprivate ) == 0 )
|
||||||
{
|
{
|
||||||
name = rb_ary_join( parts, rb_str_new2( ":" ) );
|
name = rb_ary_join( parts, rb_str_new2( ":" ) );
|
||||||
type_hash = rb_iv_get(self, "@private_types");
|
type_hash = rb_attr_get(self, s_private_types);
|
||||||
}
|
}
|
||||||
else if ( rb_str_cmp( scheme, str_taguri ) == 0 )
|
else if ( rb_str_cmp( scheme, str_taguri ) == 0 )
|
||||||
{
|
{
|
||||||
domain = rb_ary_shift( parts );
|
domain = rb_ary_shift( parts );
|
||||||
name = rb_ary_join( parts, rb_str_new2( ":" ) );
|
name = rb_ary_join( parts, rb_str_new2( ":" ) );
|
||||||
type_hash = rb_iv_get(self, "@families");
|
type_hash = rb_attr_get(self, s_families);
|
||||||
type_hash = rb_hash_aref(type_hash, domain);
|
type_hash = rb_hash_aref(type_hash, domain);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -1089,7 +1142,7 @@ VALUE
|
||||||
syck_badalias_initialize( self, val )
|
syck_badalias_initialize( self, val )
|
||||||
VALUE self, val;
|
VALUE self, val;
|
||||||
{
|
{
|
||||||
rb_iv_set( self, "@name", val );
|
rb_ivar_set( self, s_name, val );
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1100,9 +1153,9 @@ VALUE
|
||||||
syck_domaintype_initialize( self, domain, type_id, val )
|
syck_domaintype_initialize( self, domain, type_id, val )
|
||||||
VALUE self, type_id, val;
|
VALUE self, type_id, val;
|
||||||
{
|
{
|
||||||
rb_iv_set( self, "@domain", domain );
|
rb_ivar_set( self, s_domain, domain );
|
||||||
rb_iv_set( self, "@type_id", type_id );
|
rb_ivar_set( self, s_type_id, type_id );
|
||||||
rb_iv_set( self, "@value", val );
|
rb_ivar_set( self, s_value, val );
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1113,8 +1166,8 @@ VALUE
|
||||||
syck_privatetype_initialize( self, type_id, val )
|
syck_privatetype_initialize( self, type_id, val )
|
||||||
VALUE self, type_id, val;
|
VALUE self, type_id, val;
|
||||||
{
|
{
|
||||||
rb_iv_set( self, "@type_id", type_id );
|
rb_ivar_set( self, s_type_id, type_id );
|
||||||
rb_iv_set( self, "@value", val );
|
rb_ivar_set( self, s_value, val );
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1125,8 +1178,8 @@ VALUE
|
||||||
syck_node_initialize( self, type_id, val )
|
syck_node_initialize( self, type_id, val )
|
||||||
VALUE self, type_id, val;
|
VALUE self, type_id, val;
|
||||||
{
|
{
|
||||||
rb_iv_set( self, "@type_id", type_id );
|
rb_ivar_set( self, s_type_id, type_id );
|
||||||
rb_iv_set( self, "@value", val );
|
rb_ivar_set( self, s_value, val );
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1158,8 +1211,8 @@ syck_node_transform( self )
|
||||||
VALUE self;
|
VALUE self;
|
||||||
{
|
{
|
||||||
VALUE t = Qnil;
|
VALUE t = Qnil;
|
||||||
VALUE type_id = rb_iv_get( self, "@type_id" );
|
VALUE type_id = rb_attr_get( self, s_type_id );
|
||||||
VALUE val = rb_iv_get( self, "@value" );
|
VALUE val = rb_attr_get( self, s_value );
|
||||||
if ( rb_obj_is_instance_of( val, rb_cHash ) )
|
if ( rb_obj_is_instance_of( val, rb_cHash ) )
|
||||||
{
|
{
|
||||||
t = rb_hash_new();
|
t = rb_hash_new();
|
||||||
|
|
@ -1215,9 +1268,9 @@ VALUE
|
||||||
syck_emitter_new(argc, argv, class)
|
syck_emitter_new(argc, argv, class)
|
||||||
int argc;
|
int argc;
|
||||||
VALUE *argv;
|
VALUE *argv;
|
||||||
VALUE class;
|
VALUE class;
|
||||||
{
|
{
|
||||||
VALUE pobj, options, init_argv[1];
|
VALUE pobj, options, init_argv[1];
|
||||||
SyckEmitter *emitter = syck_new_emitter();
|
SyckEmitter *emitter = syck_new_emitter();
|
||||||
syck_emitter_ignore_id( emitter, Qnil );
|
syck_emitter_ignore_id( emitter, Qnil );
|
||||||
syck_emitter_handler( emitter, rb_syck_output_handler );
|
syck_emitter_handler( emitter, rb_syck_output_handler );
|
||||||
|
|
@ -1225,15 +1278,15 @@ syck_emitter_new(argc, argv, class)
|
||||||
emitter->bonus = (void *)rb_str_new2( "" );
|
emitter->bonus = (void *)rb_str_new2( "" );
|
||||||
|
|
||||||
rb_scan_args(argc, argv, "01", &options);
|
rb_scan_args(argc, argv, "01", &options);
|
||||||
pobj = Data_Wrap_Struct( class, syck_mark_emitter, syck_free_emitter, emitter );
|
pobj = Data_Wrap_Struct( class, syck_mark_emitter, syck_free_emitter, emitter );
|
||||||
|
|
||||||
if ( ! rb_obj_is_instance_of( options, rb_cHash ) )
|
if ( ! rb_obj_is_instance_of( options, rb_cHash ) )
|
||||||
{
|
{
|
||||||
options = rb_hash_new();
|
options = rb_hash_new();
|
||||||
}
|
}
|
||||||
init_argv[0] = options;
|
init_argv[0] = options;
|
||||||
rb_obj_call_init(pobj, 1, init_argv);
|
rb_obj_call_init(pobj, 1, init_argv);
|
||||||
return pobj;
|
return pobj;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -1243,8 +1296,8 @@ static VALUE
|
||||||
syck_emitter_initialize( self, options )
|
syck_emitter_initialize( self, options )
|
||||||
VALUE self, options;
|
VALUE self, options;
|
||||||
{
|
{
|
||||||
rb_iv_set(self, "@options", options);
|
rb_ivar_set(self, s_options, options);
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -1256,7 +1309,7 @@ syck_emitter_level_m( self )
|
||||||
{
|
{
|
||||||
SyckEmitter *emitter;
|
SyckEmitter *emitter;
|
||||||
|
|
||||||
Data_Get_Struct(self, SyckEmitter, emitter);
|
Data_Get_Struct(self, SyckEmitter, emitter);
|
||||||
return LONG2NUM( emitter->level );
|
return LONG2NUM( emitter->level );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1269,7 +1322,7 @@ syck_emitter_flush_m( self )
|
||||||
{
|
{
|
||||||
SyckEmitter *emitter;
|
SyckEmitter *emitter;
|
||||||
|
|
||||||
Data_Get_Struct(self, SyckEmitter, emitter);
|
Data_Get_Struct(self, SyckEmitter, emitter);
|
||||||
syck_emitter_flush( emitter, 0 );
|
syck_emitter_flush( emitter, 0 );
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
@ -1283,7 +1336,7 @@ syck_emitter_write_m( self, str )
|
||||||
{
|
{
|
||||||
SyckEmitter *emitter;
|
SyckEmitter *emitter;
|
||||||
|
|
||||||
Data_Get_Struct(self, SyckEmitter, emitter);
|
Data_Get_Struct(self, SyckEmitter, emitter);
|
||||||
syck_emitter_write( emitter, RSTRING(str)->ptr, RSTRING(str)->len );
|
syck_emitter_write( emitter, RSTRING(str)->ptr, RSTRING(str)->len );
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
@ -1297,7 +1350,7 @@ syck_emitter_simple_write( self, str )
|
||||||
{
|
{
|
||||||
SyckEmitter *emitter;
|
SyckEmitter *emitter;
|
||||||
|
|
||||||
Data_Get_Struct(self, SyckEmitter, emitter);
|
Data_Get_Struct(self, SyckEmitter, emitter);
|
||||||
syck_emitter_simple( emitter, RSTRING(str)->ptr, RSTRING(str)->len );
|
syck_emitter_simple( emitter, RSTRING(str)->ptr, RSTRING(str)->len );
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
@ -1312,7 +1365,7 @@ syck_emitter_start_object( self, oid )
|
||||||
char *anchor_name;
|
char *anchor_name;
|
||||||
SyckEmitter *emitter;
|
SyckEmitter *emitter;
|
||||||
|
|
||||||
Data_Get_Struct(self, SyckEmitter, emitter);
|
Data_Get_Struct(self, SyckEmitter, emitter);
|
||||||
anchor_name = syck_emitter_start_obj( emitter, oid );
|
anchor_name = syck_emitter_start_obj( emitter, oid );
|
||||||
|
|
||||||
if ( anchor_name == NULL )
|
if ( anchor_name == NULL )
|
||||||
|
|
@ -1332,7 +1385,7 @@ syck_emitter_end_object( self )
|
||||||
{
|
{
|
||||||
SyckEmitter *emitter;
|
SyckEmitter *emitter;
|
||||||
|
|
||||||
Data_Get_Struct(self, SyckEmitter, emitter);
|
Data_Get_Struct(self, SyckEmitter, emitter);
|
||||||
syck_emitter_end_obj( emitter );
|
syck_emitter_end_obj( emitter );
|
||||||
|
|
||||||
if ( emitter->level < 0 )
|
if ( emitter->level < 0 )
|
||||||
|
|
@ -1353,9 +1406,9 @@ Init_syck()
|
||||||
rb_define_const( rb_syck, "VERSION", rb_str_new2( SYCK_VERSION ) );
|
rb_define_const( rb_syck, "VERSION", rb_str_new2( SYCK_VERSION ) );
|
||||||
rb_define_module_function( rb_syck, "compile", rb_syck_compile, 1 );
|
rb_define_module_function( rb_syck, "compile", rb_syck_compile, 1 );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Global symbols
|
* Global symbols
|
||||||
*/
|
*/
|
||||||
s_new = rb_intern("new");
|
s_new = rb_intern("new");
|
||||||
s_utc = rb_intern("utc");
|
s_utc = rb_intern("utc");
|
||||||
s_at = rb_intern("at");
|
s_at = rb_intern("at");
|
||||||
|
|
@ -1366,29 +1419,33 @@ Init_syck()
|
||||||
s_binmode = rb_intern("binmode");
|
s_binmode = rb_intern("binmode");
|
||||||
s_transfer = rb_intern("transfer");
|
s_transfer = rb_intern("transfer");
|
||||||
s_call = rb_intern("call");
|
s_call = rb_intern("call");
|
||||||
s_update = rb_intern("update");
|
s_update = rb_intern("update");
|
||||||
s_dup = rb_intern("dup");
|
s_dup = rb_intern("dup");
|
||||||
s_default_set = rb_intern("default=");
|
s_default_set = rb_intern("default=");
|
||||||
s_match = rb_intern("match");
|
s_match = rb_intern("match");
|
||||||
s_keys = rb_intern("keys");
|
s_keys = rb_intern("keys");
|
||||||
s_to_str = rb_intern("to_str");
|
s_to_str = rb_intern("to_str");
|
||||||
s_tr_bang = rb_intern("tr!");
|
s_tr_bang = rb_intern("tr!");
|
||||||
s_unpack = rb_intern("unpack");
|
s_unpack = rb_intern("unpack");
|
||||||
|
|
||||||
sym_model = ID2SYM(rb_intern("Model"));
|
s_anchors = rb_intern("@anchors");
|
||||||
sym_generic = ID2SYM(rb_intern("Generic"));
|
s_domain = rb_intern("@domain");
|
||||||
sym_input = ID2SYM(rb_intern("Input"));
|
s_families = rb_intern("@families");
|
||||||
sym_bytecode = ID2SYM(rb_intern("Bytecode"));
|
s_kind = rb_intern("@kind");
|
||||||
|
s_name = rb_intern("@name");
|
||||||
|
s_options = rb_intern("@options");
|
||||||
|
s_private_types = rb_intern("@private_types");
|
||||||
|
s_type_id = rb_intern("@type_id");
|
||||||
|
s_value = rb_intern("@value");
|
||||||
|
|
||||||
|
sym_model = ID2SYM(rb_intern("Model"));
|
||||||
|
sym_generic = ID2SYM(rb_intern("Generic"));
|
||||||
|
sym_input = ID2SYM(rb_intern("Input"));
|
||||||
|
sym_bytecode = ID2SYM(rb_intern("Bytecode"));
|
||||||
sym_map = ID2SYM(rb_intern("map"));
|
sym_map = ID2SYM(rb_intern("map"));
|
||||||
sym_scalar = ID2SYM(rb_intern("scalar"));
|
sym_scalar = ID2SYM(rb_intern("scalar"));
|
||||||
sym_seq = ID2SYM(rb_intern("seq"));
|
sym_seq = ID2SYM(rb_intern("seq"));
|
||||||
|
|
||||||
/*
|
|
||||||
* Load Date module
|
|
||||||
*/
|
|
||||||
rb_require( "date" );
|
|
||||||
cDate = rb_funcall( rb_cObject, rb_intern("const_get"), 1, rb_str_new2("Date") );
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Define YAML::Syck::Loader class
|
* Define YAML::Syck::Loader class
|
||||||
*/
|
*/
|
||||||
|
|
@ -1414,7 +1471,7 @@ Init_syck()
|
||||||
*/
|
*/
|
||||||
cParser = rb_define_class_under( rb_syck, "Parser", rb_cObject );
|
cParser = rb_define_class_under( rb_syck, "Parser", rb_cObject );
|
||||||
rb_define_attr( cParser, "options", 1, 1 );
|
rb_define_attr( cParser, "options", 1, 1 );
|
||||||
rb_define_singleton_method( cParser, "new", syck_parser_new, -1 );
|
rb_define_singleton_method( cParser, "new", syck_parser_new, -1 );
|
||||||
rb_define_method(cParser, "initialize", syck_parser_initialize, 1);
|
rb_define_method(cParser, "initialize", syck_parser_initialize, 1);
|
||||||
rb_define_method(cParser, "load", syck_parser_load, -1);
|
rb_define_method(cParser, "load", syck_parser_load, -1);
|
||||||
rb_define_method(cParser, "load_documents", syck_parser_load_documents, -1);
|
rb_define_method(cParser, "load_documents", syck_parser_load_documents, -1);
|
||||||
|
|
@ -1454,21 +1511,21 @@ Init_syck()
|
||||||
rb_define_attr( cBadAlias, "name", 1, 1 );
|
rb_define_attr( cBadAlias, "name", 1, 1 );
|
||||||
rb_define_method( cBadAlias, "initialize", syck_badalias_initialize, 1);
|
rb_define_method( cBadAlias, "initialize", syck_badalias_initialize, 1);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Define YAML::Syck::MergeKey class
|
* Define YAML::Syck::MergeKey class
|
||||||
*/
|
*/
|
||||||
cMergeKey = rb_define_class_under( rb_syck, "MergeKey", rb_cObject );
|
cMergeKey = rb_define_class_under( rb_syck, "MergeKey", rb_cObject );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Define YAML::Syck::DefaultKey class
|
* Define YAML::Syck::DefaultKey class
|
||||||
*/
|
*/
|
||||||
cDefaultKey = rb_define_class_under( rb_syck, "DefaultKey", rb_cObject );
|
cDefaultKey = rb_define_class_under( rb_syck, "DefaultKey", rb_cObject );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Define YAML::Syck::Emitter class
|
* Define YAML::Syck::Emitter class
|
||||||
*/
|
*/
|
||||||
cEmitter = rb_define_class_under( rb_syck, "Emitter", rb_cObject );
|
cEmitter = rb_define_class_under( rb_syck, "Emitter", rb_cObject );
|
||||||
rb_define_singleton_method( cEmitter, "new", syck_emitter_new, -1 );
|
rb_define_singleton_method( cEmitter, "new", syck_emitter_new, -1 );
|
||||||
rb_define_method( cEmitter, "initialize", syck_emitter_initialize, 1 );
|
rb_define_method( cEmitter, "initialize", syck_emitter_initialize, 1 );
|
||||||
rb_define_method( cEmitter, "level", syck_emitter_level_m, 0 );
|
rb_define_method( cEmitter, "level", syck_emitter_level_m, 0 );
|
||||||
rb_define_method( cEmitter, "write", syck_emitter_write_m, 1 );
|
rb_define_method( cEmitter, "write", syck_emitter_write_m, 1 );
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
#define SYCK_YAML_MAJOR 1
|
#define SYCK_YAML_MAJOR 1
|
||||||
#define SYCK_YAML_MINOR 0
|
#define SYCK_YAML_MINOR 0
|
||||||
|
|
||||||
#define SYCK_VERSION "0.42"
|
#define SYCK_VERSION "0.43"
|
||||||
#define YAML_DOMAIN "yaml.org,2002"
|
#define YAML_DOMAIN "yaml.org,2002"
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
|
||||||
20
lib/yaml.rb
20
lib/yaml.rb
|
|
@ -87,6 +87,17 @@ module YAML
|
||||||
return d
|
return d
|
||||||
end
|
end
|
||||||
|
|
||||||
|
#
|
||||||
|
# Dump documents to a stream
|
||||||
|
#
|
||||||
|
def YAML.dump_stream( *objs )
|
||||||
|
d = YAML::Stream.new
|
||||||
|
objs.each do |doc|
|
||||||
|
d.add( doc )
|
||||||
|
end
|
||||||
|
d.emit
|
||||||
|
end
|
||||||
|
|
||||||
#
|
#
|
||||||
# Add a transfer method to a domain
|
# Add a transfer method to a domain
|
||||||
#
|
#
|
||||||
|
|
@ -215,9 +226,14 @@ module Kernel
|
||||||
# ryan:: Either way, I certainly will have a pony parade.
|
# ryan:: Either way, I certainly will have a pony parade.
|
||||||
#
|
#
|
||||||
|
|
||||||
def y( x )
|
def y( *x )
|
||||||
puts x.to_yaml
|
puts( if x.length == 1
|
||||||
|
YAML::dump( *x )
|
||||||
|
else
|
||||||
|
YAML::dump_stream( *x )
|
||||||
|
end )
|
||||||
end
|
end
|
||||||
|
private :y
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -327,7 +327,7 @@ class Symbol
|
||||||
end
|
end
|
||||||
def to_yaml( opts = {} )
|
def to_yaml( opts = {} )
|
||||||
YAML::quick_emit( nil, opts ) { |out|
|
YAML::quick_emit( nil, opts ) { |out|
|
||||||
out << "!ruby/sym "
|
out << ":"
|
||||||
self.id2name.to_yaml( :Emitter => out )
|
self.id2name.to_yaml( :Emitter => out )
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
@ -353,7 +353,7 @@ class Range
|
||||||
def to_yaml( opts = {} )
|
def to_yaml( opts = {} )
|
||||||
YAML::quick_emit( nil, opts ) { |out|
|
YAML::quick_emit( nil, opts ) { |out|
|
||||||
out << "!ruby/range "
|
out << "!ruby/range "
|
||||||
self.inspect.to_yaml( :Emitter => out )
|
self.to_s.to_yaml(:Emitter => out)
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue