1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* ext/syck/implicit.c, ext/syck/rubyext.c: transfer methods applied to native loading

* ext/syck/token.c: fix for transfer methods on same indentation as nested mapping

* lib/yaml/rubytypes.rb: all type names in lowercase


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3781 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
why 2003-05-11 06:32:13 +00:00
parent 0b5d8d2d66
commit e44e2ef2e8
4 changed files with 121 additions and 91 deletions

View file

@ -1,4 +1,4 @@
/* Generated by re2c 0.5 on Sat May 10 12:56:19 2003 */ /* Generated by re2c 0.5 on Sat May 10 19:43:22 2003 */
#line 1 "implicit.re" #line 1 "implicit.re"
// //
// implicit.re // implicit.re
@ -21,10 +21,20 @@ void
try_tag_implicit( SyckNode *n, int taguri ) try_tag_implicit( SyckNode *n, int taguri )
{ {
char *tid; char *tid;
if ( n->kind != syck_str_kind ) switch ( n->kind )
return; {
case syck_str_kind:
tid = syck_match_implicit( n->data.str->ptr, n->data.str->len );
break;
tid = syck_match_implicit( n->data.str->ptr, n->data.str->len ); case syck_seq_kind:
tid = "seq";
break;
case syck_map_kind:
tid = "map";
break;
}
if ( taguri == 1 ) if ( taguri == 1 )
{ {
n->type_id = syck_taguri( YAML_DOMAIN, tid, strlen( tid ) ); n->type_id = syck_taguri( YAML_DOMAIN, tid, strlen( tid ) );
@ -136,7 +146,7 @@ yy2: YYCURSOR = YYMARKER;
yy3: yych = *++YYCURSOR; yy3: yych = *++YYCURSOR;
if(yych <= '\000') goto yy185; if(yych <= '\000') goto yy185;
yy4: yy4:
#line 102 #line 112
{ return "str"; } { return "str"; }
yy5: yyaccept = 0; yy5: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR); yych = *(YYMARKER = ++YYCURSOR);
@ -298,7 +308,7 @@ yy27: yych = *++YYCURSOR;
if(yych >= '\001') goto yy2; if(yych >= '\001') goto yy2;
yy28: yych = *++YYCURSOR; yy28: yych = *++YYCURSOR;
yy29: yy29:
#line 88 #line 98
{ return "float#inf"; } { return "float#inf"; }
yy30: yych = *++YYCURSOR; yy30: yych = *++YYCURSOR;
if(yych == 'f') goto yy27; if(yych == 'f') goto yy27;
@ -312,7 +322,7 @@ yy33: yych = *++YYCURSOR;
if(yych >= '\001') goto yy2; if(yych >= '\001') goto yy2;
yy34: yych = *++YYCURSOR; yy34: yych = *++YYCURSOR;
yy35: yy35:
#line 92 #line 102
{ return "float#nan"; } { return "float#nan"; }
yy36: yych = *++YYCURSOR; yy36: yych = *++YYCURSOR;
if(yych == 'n') goto yy33; if(yych == 'n') goto yy33;
@ -351,7 +361,7 @@ yy41: if(yybm[0+yych] & 2) goto yy40;
} }
yy42: yych = *++YYCURSOR; yy42: yych = *++YYCURSOR;
yy43: yy43:
#line 82 #line 92
{ return "int"; } { return "int"; }
yy44: ++YYCURSOR; yy44: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1); if(YYLIMIT == YYCURSOR) YYFILL(1);
@ -367,7 +377,7 @@ yy45: if(yych <= ','){
} }
yy46: yych = *++YYCURSOR; yy46: yych = *++YYCURSOR;
yy47: yy47:
#line 84 #line 94
{ return "float#fix"; } { return "float#fix"; }
yy48: ++YYCURSOR; yy48: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1); if(YYLIMIT == YYCURSOR) YYFILL(1);
@ -390,7 +400,7 @@ yy53: if(yych <= '\000') goto yy54;
goto yy2; goto yy2;
yy54: yych = *++YYCURSOR; yy54: yych = *++YYCURSOR;
yy55: yy55:
#line 86 #line 96
{ return "float#exp"; } { return "float#exp"; }
yy56: yych = *++YYCURSOR; yy56: yych = *++YYCURSOR;
if(yych <= '/') goto yy39; if(yych <= '/') goto yy39;
@ -424,7 +434,7 @@ yy63: yych = *++YYCURSOR;
} }
yy64: yych = *++YYCURSOR; yy64: yych = *++YYCURSOR;
yy65: yy65:
#line 94 #line 104
{ return "timestamp#ymd"; } { return "timestamp#ymd"; }
yy66: yych = *++YYCURSOR; yy66: yych = *++YYCURSOR;
if(yych <= '/') goto yy2; if(yych <= '/') goto yy2;
@ -511,7 +521,7 @@ yy86: yych = *++YYCURSOR;
goto yy2; goto yy2;
yy87: yych = *++YYCURSOR; yy87: yych = *++YYCURSOR;
yy88: yy88:
#line 98 #line 108
{ return "timestamp#spaced"; } { return "timestamp#spaced"; }
yy89: yych = *++YYCURSOR; yy89: yych = *++YYCURSOR;
if(yych <= '/') goto yy2; if(yych <= '/') goto yy2;
@ -584,7 +594,7 @@ yy106: yych = *++YYCURSOR;
goto yy2; goto yy2;
yy107: yych = *++YYCURSOR; yy107: yych = *++YYCURSOR;
yy108: yy108:
#line 96 #line 106
{ return "timestamp#iso8601"; } { return "timestamp#iso8601"; }
yy109: yych = *++YYCURSOR; yy109: yych = *++YYCURSOR;
if(yych <= '/') goto yy2; if(yych <= '/') goto yy2;
@ -702,11 +712,11 @@ yy132: if(yybm[0+yych] & 128) goto yy131;
if(yych >= '\001') goto yy2; if(yych >= '\001') goto yy2;
yy133: yych = *++YYCURSOR; yy133: yych = *++YYCURSOR;
yy134: yy134:
#line 78 #line 88
{ return "int#hex"; } { return "int#hex"; }
yy135: yych = *++YYCURSOR; yy135: yych = *++YYCURSOR;
yy136: yy136:
#line 80 #line 90
{ return "int#oct"; } { return "int#oct"; }
yy137: ++YYCURSOR; yy137: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1); if(YYLIMIT == YYCURSOR) YYFILL(1);
@ -758,7 +768,7 @@ yy149: yych = *++YYCURSOR;
if(yych >= '\001') goto yy2; if(yych >= '\001') goto yy2;
yy150: yych = *++YYCURSOR; yy150: yych = *++YYCURSOR;
yy151: yy151:
#line 90 #line 100
{ return "float#neginf"; } { return "float#neginf"; }
yy152: yych = *++YYCURSOR; yy152: yych = *++YYCURSOR;
if(yych == 'f') goto yy149; if(yych == 'f') goto yy149;
@ -780,7 +790,7 @@ yy158: yych = *++YYCURSOR;
if(yych >= '\001') goto yy2; if(yych >= '\001') goto yy2;
yy159: yych = *++YYCURSOR; yy159: yych = *++YYCURSOR;
yy160: yy160:
#line 76 #line 86
{ return "bool#no"; } { return "bool#no"; }
yy161: yych = *++YYCURSOR; yy161: yych = *++YYCURSOR;
if(yych != 'S') goto yy2; if(yych != 'S') goto yy2;
@ -804,7 +814,7 @@ yy168: yych = *++YYCURSOR;
if(yych >= '\001') goto yy2; if(yych >= '\001') goto yy2;
yy169: yych = *++YYCURSOR; yy169: yych = *++YYCURSOR;
yy170: yy170:
#line 74 #line 84
{ return "bool#yes"; } { return "bool#yes"; }
yy171: yych = *++YYCURSOR; yy171: yych = *++YYCURSOR;
if(yych == 'f') goto yy158; if(yych == 'f') goto yy158;
@ -845,7 +855,7 @@ yy184: yych = *++YYCURSOR;
if(yych >= '\001') goto yy2; if(yych >= '\001') goto yy2;
yy185: yych = *++YYCURSOR; yy185: yych = *++YYCURSOR;
yy186: yy186:
#line 72 #line 82
{ return "null"; } { return "null"; }
yy187: yych = *++YYCURSOR; yy187: yych = *++YYCURSOR;
if(yych == 'L') goto yy184; if(yych == 'L') goto yy184;
@ -856,7 +866,7 @@ yy189: yych = *++YYCURSOR;
if(yych == 'l') goto yy184; if(yych == 'l') goto yy184;
goto yy2; goto yy2;
} }
#line 104 #line 114
} }
@ -960,7 +970,7 @@ yy193: yyaccept = 0;
} }
} }
yy194: yy194:
#line 156 #line 166
{ return syck_taguri( YAML_DOMAIN, type_id, strlen( type_id ) ); } { return syck_taguri( YAML_DOMAIN, type_id, strlen( type_id ) ); }
yy195: yyaccept = 0; yy195: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR); yych = *(YYMARKER = ++YYCURSOR);
@ -988,7 +998,7 @@ yy195: yyaccept = 0;
} }
yy196: yych = *++YYCURSOR; yy196: yych = *++YYCURSOR;
yy197: yy197:
#line 130 #line 140
{ return syck_xprivate( type_id + 1, strlen( type_id ) - 1 ); } { return syck_xprivate( type_id + 1, strlen( type_id ) - 1 ); }
yy198: yyaccept = 0; yy198: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR); yych = *(YYMARKER = ++YYCURSOR);
@ -1080,7 +1090,7 @@ yy205: ++YYCURSOR;
} }
yy206: yych = *++YYCURSOR; yy206: yych = *++YYCURSOR;
yy207: yy207:
#line 132 #line 142
{ char *domain = S_ALLOC_N( char, ( YYCURSOR - type_id ) + 15 ); { char *domain = S_ALLOC_N( char, ( YYCURSOR - type_id ) + 15 );
char *uri; char *uri;
@ -1158,7 +1168,7 @@ yy216: yych = *++YYCURSOR;
goto yy192; goto yy192;
yy217: yych = *++YYCURSOR; yy217: yych = *++YYCURSOR;
yy218: yy218:
#line 145 #line 155
{ char *domain = S_ALLOC_N( char, YYCURSOR - type_id ); { char *domain = S_ALLOC_N( char, YYCURSOR - type_id );
char *uri; char *uri;
@ -1250,7 +1260,7 @@ yy230: yych = *++YYCURSOR;
} }
yy231: yych = *++YYCURSOR; yy231: yych = *++YYCURSOR;
yy232: yy232:
#line 128 #line 138
{ return type_id; } { return type_id; }
yy233: yych = *++YYCURSOR; yy233: yych = *++YYCURSOR;
if(yych <= '.'){ if(yych <= '.'){
@ -1431,7 +1441,7 @@ yy253: yych = *++YYCURSOR;
goto yy192; goto yy192;
yy254: yych = *++YYCURSOR; yy254: yych = *++YYCURSOR;
yy255: yy255:
#line 126 #line 136
{ return type_id; } { return type_id; }
yy256: yych = *++YYCURSOR; yy256: yych = *++YYCURSOR;
if(yych <= '/') goto yy192; if(yych <= '/') goto yy192;
@ -1450,7 +1460,7 @@ yy260: yych = *++YYCURSOR;
if(yych == ':') goto yy254; if(yych == ':') goto yy254;
goto yy192; goto yy192;
} }
#line 158 #line 168
} }

View file

@ -15,7 +15,6 @@
#define RUBY_DOMAIN "ruby.yaml.org,2002" #define RUBY_DOMAIN "ruby.yaml.org,2002"
static ID s_utc, s_read, s_binmode; static ID s_utc, s_read, s_binmode;
static VALUE str_taguri, str_xprivate;
static VALUE sym_model, sym_generic; static VALUE sym_model, sym_generic;
static VALUE sym_scalar, sym_seq, sym_map; static VALUE sym_scalar, sym_seq, sym_map;
VALUE cParser, cLoader, cNode, oDefaultLoader; VALUE cParser, cLoader, cNode, oDefaultLoader;
@ -217,6 +216,7 @@ rb_syck_load_handler(p, n)
VALUE obj; VALUE obj;
long i; long i;
int str = 0; int str = 0;
int check_transfers = 0;
switch (n->kind) switch (n->kind)
{ {
@ -289,6 +289,7 @@ rb_syck_load_handler(p, n)
} }
else else
{ {
check_transfers = 1;
obj = rb_str_new( n->data.str->ptr, n->data.str->len ); obj = rb_str_new( n->data.str->ptr, n->data.str->len );
} }
break; break;
@ -299,6 +300,7 @@ rb_syck_load_handler(p, n)
{ {
rb_ary_store( obj, i, syck_seq_read( n, i ) ); rb_ary_store( obj, i, syck_seq_read( n, i ) );
} }
check_transfers = 1;
break; break;
case syck_map_kind: case syck_map_kind:
@ -307,13 +309,21 @@ rb_syck_load_handler(p, n)
{ {
rb_hash_aset( obj, syck_map_read( n, map_key, i ), syck_map_read( n, map_value, i ) ); rb_hash_aset( obj, syck_map_read( n, map_key, i ), syck_map_read( n, map_value, i ) );
} }
check_transfers = 1;
break; break;
} }
if ( p->bonus != 0 ) if ( p->bonus != 0 )
{ {
VALUE proc = (VALUE)p->bonus; VALUE proc = (VALUE)p->bonus;
rb_funcall(proc, rb_intern("call"), 1, obj); rb_funcall(proc, rb_intern("call"), 1, obj);
} }
if ( check_transfers == 1 && n->type_id != NULL )
{
obj = rb_funcall( oDefaultLoader, rb_intern( "transfer" ), 2, rb_str_new2( n->type_id ), obj );
}
return obj; return obj;
} }
@ -631,6 +641,8 @@ syck_loader_transfer( self, type, val )
{ {
VALUE scheme, name, type_hash, type_proc; VALUE scheme, name, type_hash, type_proc;
VALUE type_uri = rb_str_new2( taguri ); VALUE type_uri = rb_str_new2( taguri );
VALUE str_taguri = rb_str_new2("taguri");
VALUE str_xprivate = rb_str_new2("x-private");
VALUE parts = rb_str_split( type_uri, ":" ); VALUE parts = rb_str_split( type_uri, ":" );
// rb_funcall(rb_mKernel, rb_intern("p"), 1, parts); // rb_funcall(rb_mKernel, rb_intern("p"), 1, parts);
@ -749,8 +761,6 @@ Init_syck()
s_utc = rb_intern("utc"); s_utc = rb_intern("utc");
s_read = rb_intern("read"); s_read = rb_intern("read");
s_binmode = rb_intern("binmode"); s_binmode = rb_intern("binmode");
str_taguri = rb_str_new2("taguri");
str_xprivate = rb_str_new2("x-private");
sym_model = ID2SYM(rb_intern("Model")); sym_model = ID2SYM(rb_intern("Model"));
sym_generic = ID2SYM(rb_intern("Generic")); sym_generic = ID2SYM(rb_intern("Generic"));
sym_map = ID2SYM(rb_intern("map")); sym_map = ID2SYM(rb_intern("map"));

View file

@ -1,4 +1,4 @@
/* Generated by re2c 0.5 on Thu May 8 08:06:37 2003 */ /* Generated by re2c 0.5 on Sat May 10 19:31:12 2003 */
#line 1 "token.re" #line 1 "token.re"
// //
// token.re // token.re
@ -443,11 +443,15 @@ yy26:
// Check for open indent // Check for open indent
ENSURE_IEND(lvl, indt_len); ENSURE_IEND(lvl, indt_len);
ENSURE_IOPEN(lvl, indt_len, 0); ENSURE_IOPEN(lvl, indt_len, 0);
if ( indt_len == -1 )
{
return 0;
}
return INDENT; return INDENT;
} }
yy27: yych = *++YYCURSOR; yy27: yych = *++YYCURSOR;
yy28: yy28:
#line 276 #line 280
{ ENSURE_IOPEN(lvl, 0, 1); { ENSURE_IOPEN(lvl, 0, 1);
lvl = CURRENT_LEVEL(); lvl = CURRENT_LEVEL();
ADD_LEVEL(lvl->spaces + 1, syck_lvl_inline); ADD_LEVEL(lvl->spaces + 1, syck_lvl_inline);
@ -455,7 +459,7 @@ yy28:
} }
yy29: yych = *++YYCURSOR; yy29: yych = *++YYCURSOR;
yy30: yy30:
#line 282 #line 286
{ POP_LEVEL(); { POP_LEVEL();
return YYTOKEN[0]; return YYTOKEN[0];
} }
@ -463,7 +467,7 @@ yy31: yych = *++YYCURSOR;
if(yych == '\n') goto yy74; if(yych == '\n') goto yy74;
if(yych == ' ') goto yy71; if(yych == ' ') goto yy71;
yy32: yy32:
#line 331 #line 335
{ ENSURE_IOPEN(lvl, 0, 1); { ENSURE_IOPEN(lvl, 0, 1);
goto Plain; goto Plain;
} }
@ -481,15 +485,15 @@ yy35: yych = *++YYCURSOR;
goto yy32; goto yy32;
yy36: yych = *++YYCURSOR; yy36: yych = *++YYCURSOR;
yy37: yy37:
#line 308 #line 312
{ goto TransferMethod; } { goto TransferMethod; }
yy38: yych = *++YYCURSOR; yy38: yych = *++YYCURSOR;
yy39: yy39:
#line 310 #line 314
{ goto SingleQuote; } { goto SingleQuote; }
yy40: yych = *++YYCURSOR; yy40: yych = *++YYCURSOR;
yy41: yy41:
#line 312 #line 316
{ goto DoubleQuote; } { goto DoubleQuote; }
yy42: yyaccept = 0; yy42: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR); yych = *(YYMARKER = ++YYCURSOR);
@ -510,18 +514,18 @@ yy42: yyaccept = 0;
} }
yy43: yych = *++YYCURSOR; yy43: yych = *++YYCURSOR;
yy44: yy44:
#line 321 #line 325
{ eat_comments( parser ); { eat_comments( parser );
goto Document; goto Document;
} }
yy45: yych = *++YYCURSOR; yy45: yych = *++YYCURSOR;
goto yy51; goto yy51;
yy46: yy46:
#line 325 #line 329
{ goto Document; } { goto Document; }
yy47: yych = *++YYCURSOR; yy47: yych = *++YYCURSOR;
yy48: yy48:
#line 327 #line 331
{ ENSURE_IEND(lvl, -1); { ENSURE_IEND(lvl, -1);
return 0; return 0;
} }
@ -556,7 +560,7 @@ yy55: ++YYCURSOR;
yych = *YYCURSOR; yych = *YYCURSOR;
yy56: if(yych == ' ') goto yy55; yy56: if(yych == ' ') goto yy55;
yy57: yy57:
#line 314 #line 318
{ if ( *( YYCURSOR - 1 ) == '\n' ) { if ( *( YYCURSOR - 1 ) == '\n' )
{ {
YYCURSOR--; YYCURSOR--;
@ -573,7 +577,7 @@ yy60: ++YYCURSOR;
yych = *YYCURSOR; yych = *YYCURSOR;
yy61: if(yybm[0+yych] & 64) goto yy60; yy61: if(yybm[0+yych] & 64) goto yy60;
yy62: yy62:
#line 304 #line 308
{ yylval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 ); { yylval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 );
return ALIAS; return ALIAS;
} }
@ -584,7 +588,7 @@ yy64: if(yych <= '-') goto yy65;
if(yych == '`') goto yy65; if(yych == '`') goto yy65;
if(yych <= 'z') goto yy63; if(yych <= 'z') goto yy63;
yy65: yy65:
#line 300 #line 304
{ yylval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 ); { yylval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 );
return ANCHOR; return ANCHOR;
} }
@ -593,7 +597,7 @@ yy66: ++YYCURSOR;
yych = *YYCURSOR; yych = *YYCURSOR;
yy67: if(yych == ' ') goto yy66; yy67: if(yych == ' ') goto yy66;
yy68: yy68:
#line 290 #line 294
{ ENSURE_IOPEN(lvl, YYTOKEN - YYLINEPTR, 1); { ENSURE_IOPEN(lvl, YYTOKEN - YYLINEPTR, 1);
FORCE_NEXT_TOKEN(IOPEN); FORCE_NEXT_TOKEN(IOPEN);
if ( *( YYCURSOR - 1 ) == '\n' ) if ( *( YYCURSOR - 1 ) == '\n' )
@ -613,7 +617,7 @@ yy71: ++YYCURSOR;
yych = *YYCURSOR; yych = *YYCURSOR;
yy72: if(yych == ' ') goto yy71; yy72: if(yych == ' ') goto yy71;
yy73: yy73:
#line 286 #line 290
{ YYPOS(1); { YYPOS(1);
return YYTOKEN[0]; return YYTOKEN[0];
} }
@ -633,7 +637,7 @@ yy78: ++YYCURSOR;
yy79: if(yybm[0+yych] & 128) goto yy78; yy79: if(yybm[0+yych] & 128) goto yy78;
goto yy26; goto yy26;
} }
#line 335 #line 339
} }
@ -701,14 +705,14 @@ yy83: yyaccept = 0;
if(yych == '`') goto yy84; if(yych == '`') goto yy84;
if(yych <= 'z') goto yy90; if(yych <= 'z') goto yy90;
yy84: yy84:
#line 348 #line 352
{ YYCURSOR = YYTOKTMP; { YYCURSOR = YYTOKTMP;
return DOCSEP; return DOCSEP;
} }
yy85: yych = *++YYCURSOR; yy85: yych = *++YYCURSOR;
goto yy89; goto yy89;
yy86: yy86:
#line 346 #line 350
{ goto Directive; } { goto Directive; }
yy87: yych = *++YYCURSOR; yy87: yych = *++YYCURSOR;
goto yy84; goto yy84;
@ -730,10 +734,10 @@ yy93: ++YYCURSOR;
yych = *YYCURSOR; yych = *YYCURSOR;
yy94: if(yybm[0+yych] & 128) goto yy93; yy94: if(yybm[0+yych] & 128) goto yy93;
yy95: yy95:
#line 344 #line 348
{ goto Directive; } { goto Directive; }
} }
#line 351 #line 355
} }
@ -816,7 +820,7 @@ yy96:
yy98: yych = *++YYCURSOR; yy98: yych = *++YYCURSOR;
goto yy122; goto yy122;
yy99: yy99:
#line 371 #line 375
{ int indt_len; { int indt_len;
SyckLevel *lvl; SyckLevel *lvl;
char *tok = YYTOKTMP; char *tok = YYTOKTMP;
@ -835,11 +839,11 @@ yy100: yych = *++YYCURSOR;
if(yych == '\n') goto yy119; if(yych == '\n') goto yy119;
if(yych == ' ') goto yy116; if(yych == ' ') goto yy116;
yy101: yy101:
#line 400 #line 404
{ goto Plain2; } { goto Plain2; }
yy102: yych = *++YYCURSOR; yy102: yych = *++YYCURSOR;
yy103: yy103:
#line 388 #line 392
{ if ( plvl->status != syck_lvl_inline ) goto Plain2; { if ( plvl->status != syck_lvl_inline ) goto Plain2;
RETURN_IMPLICIT(multiLine); RETURN_IMPLICIT(multiLine);
} }
@ -849,18 +853,18 @@ yy104: yych = *++YYCURSOR;
goto yy101; goto yy101;
yy105: yych = *++YYCURSOR; yy105: yych = *++YYCURSOR;
yy106: yy106:
#line 392 #line 396
{ RETURN_IMPLICIT(multiLine); } { RETURN_IMPLICIT(multiLine); }
yy107: yych = *++YYCURSOR; yy107: yych = *++YYCURSOR;
if(yych == '#') goto yy110; if(yych == '#') goto yy110;
yy108: yy108:
#line 398 #line 402
{ goto Plain3; } { goto Plain3; }
yy109: yych = *++YYCURSOR; yy109: yych = *++YYCURSOR;
goto yy101; goto yy101;
yy110: yych = *++YYCURSOR; yy110: yych = *++YYCURSOR;
yy111: yy111:
#line 394 #line 398
{ eat_comments( parser ); { eat_comments( parser );
RETURN_IMPLICIT(multiLine); RETURN_IMPLICIT(multiLine);
} }
@ -879,7 +883,7 @@ yy116: ++YYCURSOR;
yych = *YYCURSOR; yych = *YYCURSOR;
yy117: if(yych == ' ') goto yy116; yy117: if(yych == ' ') goto yy116;
yy118: yy118:
#line 386 #line 390
{ RETURN_IMPLICIT(multiLine); } { RETURN_IMPLICIT(multiLine); }
yy119: ++YYCURSOR; yy119: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1); if(YYLIMIT == YYCURSOR) YYFILL(1);
@ -897,7 +901,7 @@ yy123: ++YYCURSOR;
yy124: if(yybm[0+yych] & 128) goto yy123; yy124: if(yybm[0+yych] & 128) goto yy123;
goto yy99; goto yy99;
} }
#line 402 #line 406
} }
@ -962,7 +966,7 @@ yy125:
yy127: yych = *++YYCURSOR; yy127: yych = *++YYCURSOR;
goto yy137; goto yy137;
yy128: yy128:
#line 416 #line 420
{ int indt_len; { int indt_len;
int nl_count = 0; int nl_count = 0;
SyckLevel *lvl; SyckLevel *lvl;
@ -1001,7 +1005,7 @@ yy128:
yy129: yych = *++YYCURSOR; yy129: yych = *++YYCURSOR;
if(yych == '\'') goto yy134; if(yych == '\'') goto yy134;
yy130: yy130:
#line 456 #line 460
{ SyckLevel *lvl; { SyckLevel *lvl;
SyckNode *n = syck_alloc_str(); SyckNode *n = syck_alloc_str();
lvl = CURRENT_LEVEL(); lvl = CURRENT_LEVEL();
@ -1019,13 +1023,13 @@ yy131: yych = *++YYCURSOR;
goto yy130; goto yy130;
yy132: yych = *++YYCURSOR; yy132: yych = *++YYCURSOR;
yy133: yy133:
#line 470 #line 474
{ QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1)); { QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1));
goto SingleQuote2; goto SingleQuote2;
} }
yy134: yych = *++YYCURSOR; yy134: yych = *++YYCURSOR;
yy135: yy135:
#line 452 #line 456
{ QUOTECAT(qstr, qcapa, qidx, '\''); { QUOTECAT(qstr, qcapa, qidx, '\'');
goto SingleQuote2; goto SingleQuote2;
} }
@ -1040,7 +1044,7 @@ yy138: ++YYCURSOR;
yy139: if(yybm[0+yych] & 128) goto yy138; yy139: if(yybm[0+yych] & 128) goto yy138;
goto yy128; goto yy128;
} }
#line 474 #line 478
} }
@ -1110,7 +1114,7 @@ yy140:
yy142: yych = *++YYCURSOR; yy142: yych = *++YYCURSOR;
goto yy158; goto yy158;
yy143: yy143:
#line 492 #line 496
{ int indt_len; { int indt_len;
int nl_count = 0; int nl_count = 0;
SyckLevel *lvl; SyckLevel *lvl;
@ -1182,13 +1186,13 @@ yy144: yyaccept = 0;
} }
} }
yy145: yy145:
#line 567 #line 571
{ QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1)); { QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1));
goto DoubleQuote2; goto DoubleQuote2;
} }
yy146: yych = *++YYCURSOR; yy146: yych = *++YYCURSOR;
yy147: yy147:
#line 553 #line 557
{ SyckLevel *lvl; { SyckLevel *lvl;
SyckNode *n = syck_alloc_str(); SyckNode *n = syck_alloc_str();
lvl = CURRENT_LEVEL(); lvl = CURRENT_LEVEL();
@ -1217,14 +1221,14 @@ yy152: YYCURSOR = YYMARKER;
} }
yy153: yych = *++YYCURSOR; yy153: yych = *++YYCURSOR;
yy154: yy154:
#line 548 #line 552
{ keep_nl = 0; { keep_nl = 0;
YYCURSOR--; YYCURSOR--;
goto DoubleQuote2; goto DoubleQuote2;
} }
yy155: yych = *++YYCURSOR; yy155: yych = *++YYCURSOR;
yy156: yy156:
#line 532 #line 536
{ char ch = *( YYCURSOR - 1 ); { char ch = *( YYCURSOR - 1 );
switch ( ch ) switch ( ch )
{ {
@ -1251,7 +1255,7 @@ yy159: ++YYCURSOR;
yy160: if(yybm[0+yych] & 128) goto yy159; yy160: if(yybm[0+yych] & 128) goto yy159;
goto yy143; goto yy143;
} }
#line 571 #line 575
} }
@ -1312,7 +1316,7 @@ yy161:
yy163:yy164: yych = *++YYCURSOR; yy163:yy164: yych = *++YYCURSOR;
goto yy172; goto yy172;
yy165: yy165:
#line 580 #line 584
{ SyckLevel *lvl; { SyckLevel *lvl;
YYCURSOR = YYTOKTMP; YYCURSOR = YYTOKTMP;
if ( YYCURSOR == YYTOKEN + 1 ) if ( YYCURSOR == YYTOKEN + 1 )
@ -1354,13 +1358,19 @@ yy165:
yylval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 ); yylval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 );
} }
} }
if ( *YYCURSOR == '\n' )
{
FORCE_NEXT_TOKEN(IOPEN);
ADD_LEVEL(lvl->spaces, syck_lvl_doc);
}
return TRANSFER; return TRANSFER;
} }
yy166: yych = *++YYCURSOR; yy166: yych = *++YYCURSOR;
goto yy170; goto yy170;
yy167: yych = *++YYCURSOR; yy167: yych = *++YYCURSOR;
yy168: yy168:
#line 624 #line 634
{ goto TransferMethod; } { goto TransferMethod; }
yy169: ++YYCURSOR; yy169: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1); if(YYLIMIT == YYCURSOR) YYFILL(1);
@ -1373,7 +1383,7 @@ yy171: ++YYCURSOR;
yy172: if(yybm[0+yych] & 128) goto yy171; yy172: if(yybm[0+yych] & 128) goto yy171;
goto yy165; goto yy165;
} }
#line 626 #line 636
} }
@ -1466,7 +1476,7 @@ yy173:
yy175: yych = *++YYCURSOR; yy175: yych = *++YYCURSOR;
goto yy184; goto yy184;
yy176: yy176:
#line 668 #line 678
{ int indt_len; { int indt_len;
GOBBLE_UP_INDENT( indt_len, YYTOKTMP ); GOBBLE_UP_INDENT( indt_len, YYTOKTMP );
lvl = CURRENT_LEVEL(); lvl = CURRENT_LEVEL();
@ -1499,7 +1509,7 @@ yy176:
} }
yy177: yych = *++YYCURSOR; yy177: yych = *++YYCURSOR;
yy178: yy178:
#line 700 #line 710
{ lvl = CURRENT_LEVEL(); { lvl = CURRENT_LEVEL();
YYCURSOR--; YYCURSOR--;
yylval->nodeData = syck_new_str2( YYTOKEN, YYCURSOR - YYTOKEN ); yylval->nodeData = syck_new_str2( YYTOKEN, YYCURSOR - YYTOKEN );
@ -1509,7 +1519,7 @@ yy178:
} }
yy179: yych = *++YYCURSOR; yy179: yych = *++YYCURSOR;
yy180: yy180:
#line 708 #line 718
{ lvl = CURRENT_LEVEL(); { lvl = CURRENT_LEVEL();
if ( lvl->status != syck_lvl_block ) if ( lvl->status != syck_lvl_block )
{ {
@ -1520,7 +1530,7 @@ yy180:
} }
yy181: yych = *++YYCURSOR; yy181: yych = *++YYCURSOR;
yy182: yy182:
#line 717 #line 727
{ goto ScalarBlock2; } { goto ScalarBlock2; }
yy183: ++YYCURSOR; yy183: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1); if(YYLIMIT == YYCURSOR) YYFILL(1);
@ -1533,7 +1543,7 @@ yy185: ++YYCURSOR;
yy186: if(yybm[0+yych] & 128) goto yy185; yy186: if(yybm[0+yych] & 128) goto yy185;
goto yy176; goto yy176;
} }
#line 719 #line 729
} }
@ -1595,7 +1605,7 @@ yy187:
goto yy192; goto yy192;
yy189: yych = *++YYCURSOR; yy189: yych = *++YYCURSOR;
yy190: yy190:
#line 735 #line 745
{ SyckLevel *lvl = CURRENT_LEVEL(); { SyckLevel *lvl = CURRENT_LEVEL();
YYCURSOR = tok; YYCURSOR = tok;
return; return;
@ -1604,7 +1614,7 @@ yy191: yych = *++YYCURSOR;
goto yy195; goto yy195;
yy192: yych = *++YYCURSOR; yy192: yych = *++YYCURSOR;
yy193: yy193:
#line 740 #line 750
{ goto Comment; { goto Comment;
} }
yy194: ++YYCURSOR; yy194: ++YYCURSOR;
@ -1613,7 +1623,7 @@ yy194: ++YYCURSOR;
yy195: if(yybm[0+yych] & 128) goto yy194; yy195: if(yybm[0+yych] & 128) goto yy194;
goto yy190; goto yy190;
} }
#line 743 #line 753
} }

View file

@ -23,7 +23,7 @@ class Object
end end
end end
YAML.add_ruby_type( Object ) { |type, val| YAML.add_ruby_type( 'object' ) { |type, val|
type, obj_class = YAML.read_type_class( type, Object ) type, obj_class = YAML.read_type_class( type, Object )
YAML.object_maker( obj_class, val ) YAML.object_maker( obj_class, val )
} }
@ -78,8 +78,8 @@ hash_proc = Proc.new { |type, val|
end end
val val
} }
YAML.add_builtin_type( /^map/, &hash_proc ) YAML.add_builtin_type( 'map', &hash_proc )
YAML.add_ruby_type( Hash, &hash_proc ) YAML.add_ruby_type( 'hash', &hash_proc )
module YAML module YAML
@ -120,7 +120,7 @@ module YAML
end end
end end
YAML.add_ruby_type( :flexhash ) { |type, val| YAML.add_ruby_type( 'flexhash' ) { |type, val|
if Array === val if Array === val
p = FlexHash.new p = FlexHash.new
val.each { |v| val.each { |v|
@ -159,7 +159,7 @@ class Struct
end end
end end
YAML.add_ruby_type( Struct ) { |type, val| YAML.add_ruby_type( 'struct' ) { |type, val|
type =~ /^struct:(\w+)/ type =~ /^struct:(\w+)/
if Hash === val if Hash === val
type = $1 type = $1
@ -237,8 +237,8 @@ array_proc = Proc.new { |type, val|
val.to_a val.to_a
end end
} }
YAML.add_builtin_type( /^seq/, &array_proc ) YAML.add_builtin_type( 'seq', &array_proc )
YAML.add_ruby_type( Array, &array_proc ) YAML.add_ruby_type( 'array', &array_proc )
# #
# String#to_yaml # String#to_yaml
@ -318,8 +318,8 @@ symbol_proc = Proc.new { |type, val|
raise YAML::Error, "Invalid Symbol: " + val.inspect raise YAML::Error, "Invalid Symbol: " + val.inspect
end end
} }
YAML.add_ruby_type( Symbol, &symbol_proc ) YAML.add_ruby_type( 'symbol', &symbol_proc )
YAML.add_ruby_type( :sym, &symbol_proc ) YAML.add_ruby_type( 'sym', &symbol_proc )
# #
# Range#to_yaml # Range#to_yaml
@ -336,7 +336,7 @@ class Range
end end
end end
YAML.add_ruby_type( Range ) { |type, val| YAML.add_ruby_type( 'range' ) { |type, val|
if String === val and val =~ /^(.*[^.])(\.{2,3})([^.].*)$/ if String === val and val =~ /^(.*[^.])(\.{2,3})([^.].*)$/
r1, rdots, r2 = $1, $2, $3 r1, rdots, r2 = $1, $2, $3
Range.new( YAML.try_implicit( r1 ), YAML.try_implicit( r2 ), rdots.length == 3 ) Range.new( YAML.try_implicit( r1 ), YAML.try_implicit( r2 ), rdots.length == 3 )
@ -384,7 +384,7 @@ regexp_proc = Proc.new { |type, val|
end end
} }
YAML.add_domain_type( "perl.yaml.org,2002", /^regexp/, &regexp_proc ) YAML.add_domain_type( "perl.yaml.org,2002", /^regexp/, &regexp_proc )
YAML.add_ruby_type( Regexp, &regexp_proc ) YAML.add_ruby_type( 'regexp', &regexp_proc )
# #
# Emit a Time object as an ISO 8601 timestamp # Emit a Time object as an ISO 8601 timestamp