summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwhy <why@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-09-20 06:46:45 +0000
committerwhy <why@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-09-20 06:46:45 +0000
commitb36eba6e8752f794d898b9543e40868ad46c2ea9 (patch)
treee1dd7146e9bc2cfb3f97950abb16ce6f78b9d943
parent56a97f11d039e2fd9107ea76ec2d0af2e447136e (diff)
* ext/syck/emitter.c (syck_scan_scalar): prevent indicators from
appearing alone or at the end of plain scalars. [ruby-core:5826] * ext/syck/emitter.c (syck_emit_scalar): treat typed scalar nodes as complex keys. * lib/syck.h: version 0.60. * lib/yaml/basenode.rb (YAML::BaseNode#at): transform keys during key searches. * ext/syck/rubyext.c: loading of binary-typed nodes. prevent emission of plain strings that look like symbols, but which aren't. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9241 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog16
-rw-r--r--ext/syck/bytecode.c233
-rw-r--r--ext/syck/emitter.c31
-rw-r--r--ext/syck/handler.c1
-rw-r--r--ext/syck/implicit.c150
-rw-r--r--ext/syck/syck.h2
-rw-r--r--ext/syck/token.c281
-rw-r--r--ext/syck/yaml2byte.c15
-rw-r--r--lib/yaml/basenode.rb14
-rw-r--r--lib/yaml/rubytypes.rb5
10 files changed, 393 insertions, 355 deletions
diff --git a/ChangeLog b/ChangeLog
index 3804198..ccd1ec4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+Tue Sep 20 15:39:40 2005 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/emitter.c (syck_scan_scalar): prevent indicators from
+ appearing alone or at the end of plain scalars. [ruby-core:5826]
+
+ * ext/syck/emitter.c (syck_emit_scalar): treat typed scalar nodes
+ as complex keys.
+
+ * lib/syck.h: version 0.60.
+
+ * lib/yaml/basenode.rb (YAML::BaseNode#at): transform keys during
+ key searches.
+
+ * ext/syck/rubyext.c: loading of binary-typed nodes. prevent
+ emission of plain strings that look like symbols, but which aren't.
+
Tue Sep 20 05:50:22 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp>
* test/xmlrpc/test_webrick_server.rb (setup_http_server):
diff --git a/ext/syck/bytecode.c b/ext/syck/bytecode.c
index bae1f4f..567aaf5 100644
--- a/ext/syck/bytecode.c
+++ b/ext/syck/bytecode.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.9.3 on Tue Apr 12 20:34:14 2005 */
+/* Generated by re2c 0.9.10 on Mon Sep 19 23:21:26 2005 */
#line 1 "bytecode.re"
/*
* bytecode.re
@@ -135,7 +135,6 @@ int
sycklex_bytecode_utf8( YYSTYPE *sycklval, SyckParser *parser )
{
SyckLevel *lvl;
- int doc_level = 0;
syck_parser_ptr = parser;
if ( YYCURSOR == NULL )
{
@@ -149,7 +148,7 @@ sycklex_bytecode_utf8( YYSTYPE *sycklval, SyckParser *parser )
return t;
}
-#line 173 "bytecode.re"
+#line 172 "bytecode.re"
lvl = CURRENT_LEVEL();
@@ -158,22 +157,22 @@ sycklex_bytecode_utf8( YYSTYPE *sycklval, SyckParser *parser )
goto Document;
}
-Header:
+/* Header: */
YYTOKEN = YYCURSOR;
-#line 7 "<stdout>"
+#line 165 "<stdout>"
{
YYCTYPE yych;
unsigned int yyaccept;
goto yy0;
-yy1: ++YYCURSOR;
+ ++YYCURSOR;
yy0:
if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
yych = *YYCURSOR;
switch(yych){
- case '\000': goto yy2;
+ case 0x00: goto yy2;
case 'D': goto yy3;
default: goto yy5;
}
@@ -184,22 +183,22 @@ yy2: YYCURSOR = YYMARKER;
yy3: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
- case '\n': goto yy6;
- case '\r': goto yy8;
+ case 0x0A: goto yy6;
+ case 0x0D: goto yy8;
default: goto yy4;
}
yy4:
-#line 200 "bytecode.re"
+#line 199 "bytecode.re"
{ YYPOS(0);
goto Document;
}
-#line 37 "<stdout>"
+#line 195 "<stdout>"
yy5: yych = *++YYCURSOR;
goto yy4;
yy6: ++YYCURSOR;
goto yy7;
yy7:
-#line 187 "bytecode.re"
+#line 186 "bytecode.re"
{ if ( lvl->status == syck_lvl_header )
{
CHK_NL(YYCURSOR);
@@ -212,14 +211,14 @@ yy7:
return 0;
}
}
-#line 56 "<stdout>"
+#line 214 "<stdout>"
yy8: ++YYCURSOR;
switch((yych = *YYCURSOR)) {
- case '\n': goto yy6;
+ case 0x0A: goto yy6;
default: goto yy2;
}
}
-#line 204 "bytecode.re"
+#line 203 "bytecode.re"
Document:
@@ -233,19 +232,18 @@ Document:
YYTOKEN = YYCURSOR;
-#line 65 "<stdout>"
+#line 235 "<stdout>"
{
YYCTYPE yych;
- unsigned int yyaccept;
goto yy9;
-yy10: ++YYCURSOR;
+ ++YYCURSOR;
yy9:
if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
yych = *YYCURSOR;
switch(yych){
- case '\000': goto yy30;
- case '\n': goto yy27;
- case '\r': goto yy29;
+ case 0x00: goto yy30;
+ case 0x0A: goto yy27;
+ case 0x0D: goto yy29;
case 'A': goto yy19;
case 'D': goto yy12;
case 'E': goto yy16;
@@ -260,68 +258,68 @@ yy9:
}
yy11:yy12: yych = *++YYCURSOR;
switch(yych){
- case '\n': goto yy41;
- case '\r': goto yy44;
+ case 0x0A: goto yy41;
+ case 0x0D: goto yy44;
default: goto yy11;
}
yy13: yych = *++YYCURSOR;
switch(yych){
- case '\n': goto yy41;
- case '\r': goto yy43;
+ case 0x0A: goto yy41;
+ case 0x0D: goto yy43;
default: goto yy11;
}
yy14: yych = *++YYCURSOR;
switch(yych){
- case '\n': goto yy38;
- case '\r': goto yy40;
+ case 0x0A: goto yy38;
+ case 0x0D: goto yy40;
default: goto yy11;
}
yy15: yych = *++YYCURSOR;
switch(yych){
- case '\n': goto yy35;
- case '\r': goto yy37;
+ case 0x0A: goto yy35;
+ case 0x0D: goto yy37;
default: goto yy11;
}
yy16: yych = *++YYCURSOR;
switch(yych){
- case '\n': goto yy32;
- case '\r': goto yy34;
+ case 0x0A: goto yy32;
+ case 0x0D: goto yy34;
default: goto yy11;
}
yy17: ++YYCURSOR;
goto yy18;
yy18:
-#line 289 "bytecode.re"
+#line 288 "bytecode.re"
{ ADD_BYTE_LEVEL(lvl, lvl->spaces + 1, syck_lvl_str);
goto Scalar;
}
-#line 127 "<stdout>"
+#line 296 "<stdout>"
yy19: ++YYCURSOR;
goto yy20;
yy20:
-#line 293 "bytecode.re"
+#line 292 "bytecode.re"
{ ADD_BYTE_LEVEL(lvl, lvl->spaces + 1, syck_lvl_open);
sycklval->name = get_inline( parser );
syck_hdlr_remove_anchor( parser, sycklval->name );
CHK_NL(YYCURSOR);
return YAML_ANCHOR;
}
-#line 138 "<stdout>"
+#line 307 "<stdout>"
yy21: ++YYCURSOR;
goto yy22;
yy22:
-#line 300 "bytecode.re"
+#line 299 "bytecode.re"
{ ADD_BYTE_LEVEL(lvl, lvl->spaces + 1, syck_lvl_str);
sycklval->name = get_inline( parser );
POP_LEVEL();
if ( *( YYCURSOR - 1 ) == '\n' ) YYCURSOR--;
return YAML_ALIAS;
}
-#line 149 "<stdout>"
+#line 318 "<stdout>"
yy23: ++YYCURSOR;
goto yy24;
yy24:
-#line 307 "bytecode.re"
+#line 306 "bytecode.re"
{ char *qstr;
ADD_BYTE_LEVEL(lvl, lvl->spaces + 1, syck_lvl_open);
qstr = get_inline( parser );
@@ -381,17 +379,17 @@ yy24:
sycklval->name = qstr;
return YAML_TAGURI;
}
-#line 213 "<stdout>"
+#line 382 "<stdout>"
yy25: ++YYCURSOR;
goto yy26;
yy26:
-#line 367 "bytecode.re"
+#line 366 "bytecode.re"
{ goto Comment; }
-#line 219 "<stdout>"
+#line 388 "<stdout>"
yy27: ++YYCURSOR;
goto yy28;
yy28:
-#line 369 "bytecode.re"
+#line 368 "bytecode.re"
{ CHK_NL(YYCURSOR);
if ( lvl->status == syck_lvl_seq )
{
@@ -404,25 +402,25 @@ yy28:
}
goto Document;
}
-#line 236 "<stdout>"
+#line 405 "<stdout>"
yy29: yych = *++YYCURSOR;
switch(yych){
- case '\n': goto yy27;
+ case 0x0A: goto yy27;
default: goto yy11;
}
yy30: ++YYCURSOR;
goto yy31;
yy31:
-#line 382 "bytecode.re"
+#line 381 "bytecode.re"
{ ENSURE_YAML_IEND(lvl, -1);
YYPOS(0);
return 0;
}
-#line 250 "<stdout>"
+#line 419 "<stdout>"
yy32: ++YYCURSOR;
goto yy33;
yy33:
-#line 253 "bytecode.re"
+#line 252 "bytecode.re"
{ if ( lvl->status == syck_lvl_seq && lvl->ncount == 0 )
{
lvl->ncount++;
@@ -458,16 +456,16 @@ yy33:
CHK_NL(YYCURSOR);
return YAML_IEND;
}
-#line 290 "<stdout>"
+#line 459 "<stdout>"
yy34: yych = *++YYCURSOR;
switch(yych){
- case '\n': goto yy32;
+ case 0x0A: goto yy32;
default: goto yy11;
}
yy35: ++YYCURSOR;
goto yy36;
yy36:
-#line 238 "bytecode.re"
+#line 237 "bytecode.re"
{ int complex = 0;
if ( lvl->ncount % 2 == 0 && ( lvl->status == syck_lvl_map || lvl->status == syck_lvl_seq ) )
{
@@ -482,16 +480,16 @@ yy36:
}
return YAML_IOPEN;
}
-#line 314 "<stdout>"
+#line 483 "<stdout>"
yy37: yych = *++YYCURSOR;
switch(yych){
- case '\n': goto yy35;
+ case 0x0A: goto yy35;
default: goto yy11;
}
yy38: ++YYCURSOR;
goto yy39;
yy39:
-#line 223 "bytecode.re"
+#line 222 "bytecode.re"
{ int complex = 0;
if ( lvl->ncount % 2 == 0 && ( lvl->status == syck_lvl_map || lvl->status == syck_lvl_seq ) )
{
@@ -506,33 +504,33 @@ yy39:
}
return YAML_IOPEN;
}
-#line 338 "<stdout>"
+#line 507 "<stdout>"
yy40: yych = *++YYCURSOR;
switch(yych){
- case '\n': goto yy38;
+ case 0x0A: goto yy38;
default: goto yy11;
}
yy41: ++YYCURSOR;
goto yy42;
yy42:
-#line 218 "bytecode.re"
+#line 217 "bytecode.re"
{ ENSURE_YAML_IEND(lvl, -1);
YYPOS(0);
return 0;
}
-#line 352 "<stdout>"
+#line 521 "<stdout>"
yy43: yych = *++YYCURSOR;
switch(yych){
- case '\n': goto yy41;
+ case 0x0A: goto yy41;
default: goto yy11;
}
yy44: ++YYCURSOR;
switch((yych = *YYCURSOR)) {
- case '\n': goto yy41;
+ case 0x0A: goto yy41;
default: goto yy11;
}
}
-#line 387 "bytecode.re"
+#line 386 "bytecode.re"
}
@@ -542,17 +540,17 @@ Directive:
YYTOKEN = YYCURSOR;
-#line 366 "<stdout>"
+#line 543 "<stdout>"
{
YYCTYPE yych;
unsigned int yyaccept;
goto yy45;
-yy46: ++YYCURSOR;
+ ++YYCURSOR;
yy45:
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
switch(yych){
- case '\000': goto yy47;
+ case 0x00: goto yy47;
case 'V': goto yy48;
default: goto yy50;
}
@@ -641,15 +639,15 @@ yy48: yyaccept = 0;
default: goto yy49;
}
yy49:
-#line 400 "bytecode.re"
+#line 399 "bytecode.re"
{ YYCURSOR = YYTOKEN;
return YAML_DOCSEP;
}
-#line 469 "<stdout>"
+#line 646 "<stdout>"
yy50: yych = *++YYCURSOR;
goto yy49;
yy51: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
goto yy52;
yy52: switch(yych){
@@ -809,12 +807,12 @@ yy53: yych = *++YYCURSOR;
default: goto yy47;
}
yy54: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
goto yy55;
yy55: switch(yych){
- case '\n': goto yy56;
- case '\r': goto yy58;
+ case 0x0A: goto yy56;
+ case 0x0D: goto yy58;
case '.':
case '/':
case '0':
@@ -895,17 +893,17 @@ yy55: switch(yych){
yy56: ++YYCURSOR;
goto yy57;
yy57:
-#line 397 "bytecode.re"
+#line 396 "bytecode.re"
{ CHK_NL(YYCURSOR);
goto Directive; }
-#line 724 "<stdout>"
+#line 899 "<stdout>"
yy58: ++YYCURSOR;
switch((yych = *YYCURSOR)) {
- case '\n': goto yy56;
+ case 0x0A: goto yy56;
default: goto yy47;
}
}
-#line 403 "bytecode.re"
+#line 402 "bytecode.re"
}
@@ -915,44 +913,43 @@ Comment:
YYTOKEN = YYCURSOR;
-#line 733 "<stdout>"
+#line 916 "<stdout>"
{
YYCTYPE yych;
- unsigned int yyaccept;
goto yy59;
-yy60: ++YYCURSOR;
+ ++YYCURSOR;
yy59:
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
switch(yych){
- case '\000': goto yy61;
- case '\n': goto yy62;
- case '\r': goto yy64;
+ case 0x00: goto yy61;
+ case 0x0A: goto yy62;
+ case 0x0D: goto yy64;
default: goto yy66;
}
yy61:yy62: ++YYCURSOR;
goto yy63;
yy63:
-#line 413 "bytecode.re"
+#line 412 "bytecode.re"
{ CHK_NL(YYCURSOR);
goto Document; }
-#line 754 "<stdout>"
+#line 936 "<stdout>"
yy64: ++YYCURSOR;
switch((yych = *YYCURSOR)) {
- case '\n': goto yy67;
+ case 0x0A: goto yy67;
default: goto yy65;
}
yy65:
-#line 416 "bytecode.re"
+#line 415 "bytecode.re"
{ goto Comment; }
-#line 763 "<stdout>"
+#line 945 "<stdout>"
yy66: yych = *++YYCURSOR;
goto yy65;
yy67: ++YYCURSOR;
yych = *YYCURSOR;
goto yy63;
}
-#line 418 "bytecode.re"
+#line 417 "bytecode.re"
}
@@ -970,19 +967,18 @@ Scalar2:
tok = YYCURSOR;
-#line 771 "<stdout>"
+#line 970 "<stdout>"
{
YYCTYPE yych;
- unsigned int yyaccept;
goto yy68;
-yy69: ++YYCURSOR;
+ ++YYCURSOR;
yy68:
if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
yych = *YYCURSOR;
switch(yych){
- case '\000': goto yy74;
- case '\n': goto yy70;
- case '\r': goto yy72;
+ case 0x00: goto yy74;
+ case 0x0A: goto yy70;
+ case 0x0D: goto yy72;
default: goto yy76;
}
yy70: ++YYCURSOR;
@@ -993,30 +989,30 @@ yy70: ++YYCURSOR;
default: goto yy71;
}
yy71:
-#line 462 "bytecode.re"
+#line 461 "bytecode.re"
{ YYCURSOR = tok;
goto ScalarEnd;
}
-#line 798 "<stdout>"
+#line 996 "<stdout>"
yy72: ++YYCURSOR;
switch((yych = *YYCURSOR)) {
- case '\n': goto yy77;
+ case 0x0A: goto yy77;
default: goto yy73;
}
yy73:
-#line 470 "bytecode.re"
+#line 469 "bytecode.re"
{ CAT(str, cap, idx, tok[0]);
goto Scalar2;
}
-#line 809 "<stdout>"
+#line 1007 "<stdout>"
yy74: ++YYCURSOR;
goto yy75;
yy75:
-#line 466 "bytecode.re"
+#line 465 "bytecode.re"
{ YYCURSOR = tok;
goto ScalarEnd;
}
-#line 817 "<stdout>"
+#line 1015 "<stdout>"
yy76: yych = *++YYCURSOR;
goto yy73;
yy77: yych = *++YYCURSOR;
@@ -1029,10 +1025,10 @@ yy77: yych = *++YYCURSOR;
yy78: ++YYCURSOR;
goto yy79;
yy79:
-#line 436 "bytecode.re"
+#line 435 "bytecode.re"
{ CHK_NL(tok+1);
goto Scalar2; }
-#line 833 "<stdout>"
+#line 1031 "<stdout>"
yy80: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
@@ -1051,7 +1047,7 @@ yy81: switch(yych){
default: goto yy82;
}
yy82:
-#line 439 "bytecode.re"
+#line 438 "bytecode.re"
{ CHK_NL(tok+1);
if ( tok + 2 < YYCURSOR )
{
@@ -1069,18 +1065,18 @@ yy82:
}
goto Scalar2;
}
-#line 871 "<stdout>"
+#line 1068 "<stdout>"
yy83: ++YYCURSOR;
goto yy84;
yy84:
-#line 457 "bytecode.re"
+#line 456 "bytecode.re"
{ CHK_NL(tok+1);
CAT(str, cap, idx, '\0');
goto Scalar2;
}
-#line 880 "<stdout>"
+#line 1077 "<stdout>"
}
-#line 474 "bytecode.re"
+#line 473 "bytecode.re"
ScalarEnd:
@@ -1115,54 +1111,53 @@ Inline:
tok = YYCURSOR;
-#line 884 "<stdout>"
+#line 1114 "<stdout>"
{
YYCTYPE yych;
- unsigned int yyaccept;
goto yy85;
-yy86: ++YYCURSOR;
+ ++YYCURSOR;
yy85:
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
switch(yych){
- case '\000': goto yy91;
- case '\n': goto yy87;
- case '\r': goto yy89;
+ case 0x00: goto yy91;
+ case 0x0A: goto yy87;
+ case 0x0D: goto yy89;
default: goto yy93;
}
yy87: ++YYCURSOR;
goto yy88;
yy88:
-#line 509 "bytecode.re"
+#line 508 "bytecode.re"
{ CHK_NL(YYCURSOR);
return str; }
-#line 905 "<stdout>"
+#line 1134 "<stdout>"
yy89: ++YYCURSOR;
switch((yych = *YYCURSOR)) {
- case '\n': goto yy94;
+ case 0x0A: goto yy94;
default: goto yy90;
}
yy90:
-#line 516 "bytecode.re"
+#line 515 "bytecode.re"
{ CAT(str, cap, idx, tok[0]);
goto Inline;
}
-#line 916 "<stdout>"
+#line 1145 "<stdout>"
yy91: ++YYCURSOR;
goto yy92;
yy92:
-#line 512 "bytecode.re"
+#line 511 "bytecode.re"
{ YYCURSOR = tok;
return str;
}
-#line 924 "<stdout>"
+#line 1153 "<stdout>"
yy93: yych = *++YYCURSOR;
goto yy90;
yy94: ++YYCURSOR;
yych = *YYCURSOR;
goto yy88;
}
-#line 520 "bytecode.re"
+#line 519 "bytecode.re"
}
diff --git a/ext/syck/emitter.c b/ext/syck/emitter.c
index 5cc0906..f5de4b8 100644
--- a/ext/syck/emitter.c
+++ b/ext/syck/emitter.c
@@ -560,7 +560,8 @@ syck_scan_scalar( int req_width, char *cursor, long len )
}
if ( ( cursor[0] == '-' || cursor[0] == ':' ||
cursor[0] == '?' || cursor[0] == ',' ) &&
- cursor[1] == ' ' ) {
+ ( cursor[1] == ' ' || cursor[1] == '\n' || len == 1 ) )
+ {
flags |= SCAN_INDIC_S;
}
@@ -619,11 +620,13 @@ syck_scan_scalar( int req_width, char *cursor, long len )
}
/* remember, if plain collections get implemented, to add nb-plain-flow-char */
else if ( ( cursor[i] == ' ' && cursor[i+1] == '#' ) ||
- ( cursor[i] == ':' && cursor[i+1] == ' ' ) )
+ ( cursor[i] == ':' &&
+ ( cursor[i+1] == ' ' || cursor[i+1] == '\n' || i == len - 1 ) ) )
{
flags |= SCAN_INDIC_C;
}
- else if ( cursor[i] == ',' && cursor[i+1] == ' ' )
+ else if ( cursor[i] == ',' &&
+ ( cursor[i+1] == ' ' || cursor[i+1] == '\n' || i == len - 1 ) )
{
flags |= SCAN_FLOWMAP;
flags |= SCAN_FLOWSEQ;
@@ -643,7 +646,7 @@ void syck_emit_scalar( SyckEmitter *e, char *tag, enum scalar_style force_style,
enum scalar_style favor_style = scalar_literal;
SyckLevel *parent = syck_emitter_parent_level( e );
SyckLevel *lvl = syck_emitter_current_level( e );
- int scan;
+ int scan = 0;
char *implicit;
if ( str == NULL ) str = "";
@@ -664,6 +667,14 @@ void syck_emit_scalar( SyckEmitter *e, char *tag, enum scalar_style force_style,
if ( syck_tagcmp( tag, implicit ) != 0 && syck_tagcmp( tag, "tag:yaml.org,2002:str" ) == 0 ) {
force_style = scalar_2quote;
} else {
+ /* complex key */
+ if ( parent->status == syck_lvl_map && parent->ncount % 2 == 1 &&
+ ( !( tag == NULL ||
+ ( implicit != NULL && syck_tagcmp( tag, implicit ) == 0 && e->explicit_typing == 0 ) ) ) )
+ {
+ syck_emitter_write( e, "? ", 2 );
+ parent->status = syck_lvl_mapx;
+ }
syck_emit_tag( e, tag, implicit );
}
S_FREE( implicit );
@@ -711,7 +722,7 @@ void syck_emit_scalar( SyckEmitter *e, char *tag, enum scalar_style force_style,
}
/* For now, all ambiguous keys are going to be double-quoted */
- if ( parent->status == syck_lvl_map && parent->ncount % 2 == 1 ) {
+ if ( ( parent->status == syck_lvl_map || parent->status == syck_lvl_mapx ) && parent->ncount % 2 == 1 ) {
if ( force_style != scalar_plain ) {
force_style = scalar_2quote;
}
@@ -738,6 +749,7 @@ void syck_emit_scalar( SyckEmitter *e, char *tag, enum scalar_style force_style,
syck_emit_1quoted( e, force_width, str, len );
break;
+ case scalar_none:
case scalar_2quote:
syck_emit_2quoted( e, force_width, str, len );
break;
@@ -754,6 +766,11 @@ void syck_emit_scalar( SyckEmitter *e, char *tag, enum scalar_style force_style,
syck_emitter_write( e, str, len );
break;
}
+
+ if ( parent->status == syck_lvl_mapx )
+ {
+ syck_emitter_write( e, "\n", 1 );
+ }
}
void
@@ -1123,6 +1140,8 @@ void syck_emit_item( SyckEmitter *e, st_data_t n )
}
}
break;
+
+ default: break;
}
lvl->ncount++;
@@ -1163,6 +1182,8 @@ void syck_emit_end( SyckEmitter *e )
case syck_lvl_imap:
syck_emitter_write( e, "}\n", 1 );
break;
+
+ default: break;
}
}
diff --git a/ext/syck/handler.c b/ext/syck/handler.c
index d070efa..56fe838 100644
--- a/ext/syck/handler.c
+++ b/ext/syck/handler.c
@@ -31,7 +31,6 @@ syck_hdlr_add_node( SyckParser *p, SyckNode *n )
SyckNode *
syck_hdlr_add_anchor( SyckParser *p, char *a, SyckNode *n )
{
- char *atmp = NULL;
SyckNode *ntmp = NULL;
n->anchor = a;
diff --git a/ext/syck/implicit.c b/ext/syck/implicit.c
index cce7a9f..d801698 100644
--- a/ext/syck/implicit.c
+++ b/ext/syck/implicit.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.9.3 on Wed Mar 30 08:27:25 2005 */
+/* Generated by re2c 0.9.10 on Mon Sep 19 21:46:50 2005 */
#line 1 "implicit.re"
/*
* implicit.re
@@ -52,17 +52,17 @@ char *syck_match_implicit( char *str, size_t len )
limit = str + len;
-#line 6 "<stdout>"
+#line 55 "<stdout>"
{
YYCTYPE yych;
unsigned int yyaccept;
goto yy0;
-yy1: ++YYCURSOR;
+ ++YYCURSOR;
yy0:
if((YYLIMIT - YYCURSOR) < 26) YYFILL(26);
yych = *YYCURSOR;
switch(yych){
- case '\000': goto yy6;
+ case 0x00: goto yy6;
case '+': goto yy16;
case '-': goto yy17;
case '.': goto yy20;
@@ -92,12 +92,12 @@ yy0:
default: goto yy23;
}
yy2: ++YYCURSOR;
- if((yych = *YYCURSOR) <= '\000') goto yy6;
+ if((yych = *YYCURSOR) <= 0x00) goto yy6;
goto yy3;
yy3:
#line 123 "implicit.re"
{ return "str"; }
-#line 51 "<stdout>"
+#line 100 "<stdout>"
yy4: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
@@ -118,7 +118,7 @@ yy6: ++YYCURSOR;
yy7:
#line 85 "implicit.re"
{ return "null"; }
-#line 72 "<stdout>"
+#line 121 "<stdout>"
yy8: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
@@ -208,7 +208,7 @@ yy17: yyaccept = 0;
yy18: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
- case '\000': goto yy52;
+ case 0x00: goto yy52;
case ',': goto yy142;
case '.': goto yy50;
case '0':
@@ -228,7 +228,7 @@ yy18: yyaccept = 0;
yy19: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
- case '\000': goto yy52;
+ case 0x00: goto yy52;
case ',': goto yy47;
case '.': goto yy50;
case '0':
@@ -254,7 +254,7 @@ yy20: yyaccept = 0;
default: goto yy3;
}
yy21: yych = *++YYCURSOR;
- if(yych <= '\000') goto yy28;
+ if(yych <= 0x00) goto yy28;
goto yy3;
yy22: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
@@ -265,7 +265,7 @@ yy22: yyaccept = 0;
yy23: yych = *++YYCURSOR;
goto yy3;
yy24: yych = *++YYCURSOR;
- if(yych <= '\000') goto yy26;
+ if(yych <= 0x00) goto yy26;
goto yy25;
yy25: YYCURSOR = YYMARKER;
switch(yyaccept){
@@ -276,13 +276,13 @@ yy26: ++YYCURSOR;
yy27:
#line 121 "implicit.re"
{ return "merge"; }
-#line 230 "<stdout>"
+#line 279 "<stdout>"
yy28: ++YYCURSOR;
goto yy29;
yy29:
#line 119 "implicit.re"
{ return "default"; }
-#line 236 "<stdout>"
+#line 285 "<stdout>"
yy30: yych = *++YYCURSOR;
switch(yych){
case 'a': goto yy45;
@@ -316,14 +316,14 @@ yy35: yych = *++YYCURSOR;
default: goto yy25;
}
yy36: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy25;
+ if(yych >= 0x01) goto yy25;
goto yy37;
yy37: ++YYCURSOR;
goto yy38;
yy38:
#line 105 "implicit.re"
{ return "float#inf"; }
-#line 277 "<stdout>"
+#line 326 "<stdout>"
yy39: yych = *++YYCURSOR;
switch(yych){
case 'f': goto yy36;
@@ -340,14 +340,14 @@ yy41: yych = *++YYCURSOR;
default: goto yy25;
}
yy42: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy25;
+ if(yych >= 0x01) goto yy25;
goto yy43;
yy43: ++YYCURSOR;
goto yy44;
yy44:
#line 109 "implicit.re"
{ return "float#nan"; }
-#line 301 "<stdout>"
+#line 350 "<stdout>"
yy45: yych = *++YYCURSOR;
switch(yych){
case 'n': goto yy42;
@@ -372,7 +372,7 @@ yy47: ++YYCURSOR;
yych = *YYCURSOR;
goto yy48;
yy48: switch(yych){
- case '\000': goto yy52;
+ case 0x00: goto yy52;
case ',': case '0':
case '1':
case '2':
@@ -404,11 +404,11 @@ yy49: ++YYCURSOR;
default: goto yy25;
}
yy50: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
+ if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
yych = *YYCURSOR;
goto yy51;
yy51: switch(yych){
- case '\000': goto yy56;
+ case 0x00: goto yy56;
case ',': goto yy54;
case '.': goto yy58;
case '0':
@@ -429,13 +429,13 @@ yy52: ++YYCURSOR;
yy53:
#line 97 "implicit.re"
{ return "int"; }
-#line 386 "<stdout>"
+#line 432 "<stdout>"
yy54: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy55;
yy55: switch(yych){
- case '\000': goto yy56;
+ case 0x00: goto yy56;
case ',': case '0':
case '1':
case '2':
@@ -453,9 +453,9 @@ yy56: ++YYCURSOR;
yy57:
#line 99 "implicit.re"
{ return "float#fix"; }
-#line 411 "<stdout>"
+#line 456 "<stdout>"
yy58: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
+ if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
yych = *YYCURSOR;
goto yy59;
yy59: switch(yych){
@@ -478,14 +478,14 @@ yy60: yych = *++YYCURSOR;
default: goto yy25;
}
yy61: yych = *++YYCURSOR;
- if(yych <= '\000') goto yy25;
+ if(yych <= 0x00) goto yy25;
goto yy63;
yy62: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy63;
yy63: switch(yych){
- case '\000': goto yy64;
+ case 0x00: goto yy64;
case '0':
case '1':
case '2':
@@ -503,12 +503,12 @@ yy64: ++YYCURSOR;
yy65:
#line 101 "implicit.re"
{ return "float#exp"; }
-#line 463 "<stdout>"
+#line 506 "<stdout>"
yy66: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
switch(yych){
- case '\000': goto yy70;
+ case 0x00: goto yy70;
case '.': goto yy68;
case '0':
case '1':
@@ -527,7 +527,7 @@ yy67: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
switch(yych){
- case '\000': goto yy70;
+ case 0x00: goto yy70;
case '.': goto yy68;
case ':': goto yy49;
default: goto yy25;
@@ -537,7 +537,7 @@ yy68: ++YYCURSOR;
yych = *YYCURSOR;
goto yy69;
yy69: switch(yych){
- case '\000': goto yy72;
+ case 0x00: goto yy72;
case ',': case '0':
case '1':
case '2':
@@ -555,13 +555,13 @@ yy70: ++YYCURSOR;
yy71:
#line 95 "implicit.re"
{ return "int#base60"; }
-#line 518 "<stdout>"
+#line 558 "<stdout>"
yy72: ++YYCURSOR;
goto yy73;
yy73:
#line 103 "implicit.re"
{ return "float#base60"; }
-#line 524 "<stdout>"
+#line 564 "<stdout>"
yy74: yych = *++YYCURSOR;
switch(yych){
case '0':
@@ -644,7 +644,7 @@ yy80: yych = *++YYCURSOR;
}
yy81: yych = *++YYCURSOR;
switch(yych){
- case '\000': goto yy82;
+ case 0x00: goto yy82;
case '0':
case '1':
case '2':
@@ -664,7 +664,7 @@ yy82: ++YYCURSOR;
yy83:
#line 111 "implicit.re"
{ return "timestamp#ymd"; }
-#line 627 "<stdout>"
+#line 667 "<stdout>"
yy84: yych = *++YYCURSOR;
switch(yych){
case '0':
@@ -694,11 +694,11 @@ yy85: yych = *++YYCURSOR;
default: goto yy25;
}
yy86: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
+ if((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
yych = *YYCURSOR;
goto yy87;
yy87: switch(yych){
- case '\t': case ' ': goto yy86;
+ case 0x09: case ' ': goto yy86;
case '0':
case '1':
case '2':
@@ -793,7 +793,7 @@ yy94: yych = *++YYCURSOR;
}
yy95: yych = *++YYCURSOR;
switch(yych){
- case '\t': case ' ': goto yy98;
+ case 0x09: case ' ': goto yy98;
case '.': goto yy96;
default: goto yy25;
}
@@ -802,7 +802,7 @@ yy96: ++YYCURSOR;
yych = *YYCURSOR;
goto yy97;
yy97: switch(yych){
- case '\t': case ' ': goto yy98;
+ case 0x09: case ' ': goto yy98;
case '0':
case '1':
case '2':
@@ -816,17 +816,17 @@ yy97: switch(yych){
default: goto yy25;
}
yy98: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
+ if((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
yych = *YYCURSOR;
goto yy99;
yy99: switch(yych){
- case '\t': case ' ': goto yy98;
+ case 0x09: case ' ': goto yy98;
case '+': case '-': goto yy101;
case 'Z': goto yy100;
default: goto yy25;
}
yy100: yych = *++YYCURSOR;
- if(yych <= '\000') goto yy105;
+ if(yych <= 0x00) goto yy105;
goto yy25;
yy101: yych = *++YYCURSOR;
switch(yych){
@@ -858,7 +858,7 @@ yy102: yych = *++YYCURSOR;
}
yy103: yych = *++YYCURSOR;
switch(yych){
- case '\000': goto yy105;
+ case 0x00: goto yy105;
case ':': goto yy104;
default: goto yy25;
}
@@ -881,7 +881,7 @@ yy105: ++YYCURSOR;
yy106:
#line 115 "implicit.re"
{ return "timestamp#spaced"; }
-#line 847 "<stdout>"
+#line 884 "<stdout>"
yy107: yych = *++YYCURSOR;
switch(yych){
case '0':
@@ -992,7 +992,7 @@ yy115: yych = *++YYCURSOR;
default: goto yy117;
}
yy116: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
+ if((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
yych = *YYCURSOR;
goto yy117;
yy117: switch(yych){
@@ -1011,7 +1011,7 @@ yy117: switch(yych){
default: goto yy25;
}
yy118: yych = *++YYCURSOR;
- if(yych <= '\000') goto yy123;
+ if(yych <= 0x00) goto yy123;
goto yy25;
yy119: yych = *++YYCURSOR;
switch(yych){
@@ -1043,7 +1043,7 @@ yy120: yych = *++YYCURSOR;
}
yy121: yych = *++YYCURSOR;
switch(yych){
- case '\000': goto yy123;
+ case 0x00: goto yy123;
case ':': goto yy122;
default: goto yy25;
}
@@ -1066,7 +1066,7 @@ yy123: ++YYCURSOR;
yy124:
#line 113 "implicit.re"
{ return "timestamp#iso8601"; }
-#line 1033 "<stdout>"
+#line 1069 "<stdout>"
yy125: yych = *++YYCURSOR;
switch(yych){
case '0':
@@ -1197,7 +1197,7 @@ yy135: switch(yych){
default: goto yy25;
}
yy136: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy25;
+ if(yych >= 0x01) goto yy25;
goto yy137;
yy137: yych = *++YYCURSOR;
goto yy124;
@@ -1253,7 +1253,7 @@ yy142: ++YYCURSOR;
yych = *YYCURSOR;
goto yy143;
yy143: switch(yych){
- case '\000': goto yy149;
+ case 0x00: goto yy149;
case ',': case '0':
case '1':
case '2':
@@ -1269,14 +1269,14 @@ yy143: switch(yych){
default: goto yy25;
}
yy144: yych = *++YYCURSOR;
- if(yych <= '\000') goto yy25;
+ if(yych <= 0x00) goto yy25;
goto yy146;
yy145: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
goto yy146;
yy146: switch(yych){
- case '\000': goto yy147;
+ case 0x00: goto yy147;
case ',': case '0':
case '1':
case '2':
@@ -1304,13 +1304,13 @@ yy147: ++YYCURSOR;
yy148:
#line 91 "implicit.re"
{ return "int#hex"; }
-#line 1275 "<stdout>"
+#line 1307 "<stdout>"
yy149: ++YYCURSOR;
goto yy150;
yy150:
#line 93 "implicit.re"
{ return "int#oct"; }
-#line 1281 "<stdout>"
+#line 1313 "<stdout>"
yy151: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
@@ -1376,7 +1376,7 @@ yy157: yych = *++YYCURSOR;
}
yy158: yych = *++YYCURSOR;
switch(yych){
- case '\000': goto yy52;
+ case 0x00: goto yy52;
case 'x': goto yy144;
default: goto yy143;
}
@@ -1402,14 +1402,14 @@ yy162: yych = *++YYCURSOR;
default: goto yy25;
}
yy163: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy25;
+ if(yych >= 0x01) goto yy25;
goto yy164;
yy164: ++YYCURSOR;
goto yy165;
yy165:
#line 107 "implicit.re"
{ return "float#neginf"; }
-#line 1381 "<stdout>"
+#line 1412 "<stdout>"
yy166: yych = *++YYCURSOR;
switch(yych){
case 'f': goto yy163;
@@ -1442,14 +1442,14 @@ yy171: yych = *++YYCURSOR;
default: goto yy25;
}
yy172: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy25;
+ if(yych >= 0x01) goto yy25;
goto yy173;
yy173: ++YYCURSOR;
goto yy174;
yy174:
#line 89 "implicit.re"
{ return "bool#no"; }
-#line 1421 "<stdout>"
+#line 1452 "<stdout>"
yy175: yych = *++YYCURSOR;
switch(yych){
case 'S': goto yy176;
@@ -1486,14 +1486,14 @@ yy181: yych = *++YYCURSOR;
default: goto yy25;
}
yy182: yych = *++YYCURSOR;
- if(yych >= '\001') goto yy25;
+ if(yych >= 0x01) goto yy25;
goto yy183;
yy183: ++YYCURSOR;
goto yy184;
yy184:
#line 87 "implicit.re"
{ return "bool#yes"; }
-#line 1465 "<stdout>"
+#line 1496 "<stdout>"
yy185: yych = *++YYCURSOR;
switch(yych){
case 'f': goto yy172;
@@ -1560,7 +1560,7 @@ yy197: yych = *++YYCURSOR;
default: goto yy25;
}
yy198: yych = *++YYCURSOR;
- if(yych <= '\000') goto yy6;
+ if(yych <= 0x00) goto yy6;
goto yy25;
yy199: yych = *++YYCURSOR;
switch(yych){
@@ -1617,17 +1617,17 @@ syck_type_id_to_uri( char *type_id )
limit = type_id + strlen( type_id );
-#line 1552 "<stdout>"
+#line 1620 "<stdout>"
{
YYCTYPE yych;
unsigned int yyaccept;
goto yy202;
-yy203: ++YYCURSOR;
+ ++YYCURSOR;
yy202:
- if((YYLIMIT - YYCURSOR) < 21) YYFILL(21);
+ if((YYLIMIT - YYCURSOR) < 11) YYFILL(11);
yych = *YYCURSOR;
switch(yych){
- case '\000': goto yy204;
+ case 0x00: goto yy204;
case '!': goto yy208;
case '0':
case '1':
@@ -1765,7 +1765,7 @@ yy205: yyaccept = 0;
yy206:
#line 202 "implicit.re"
{ return syck_taguri( YAML_DOMAIN, type_id, strlen( type_id ) ); }
-#line 1700 "<stdout>"
+#line 1768 "<stdout>"
yy207: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
@@ -1839,7 +1839,7 @@ yy208: ++YYCURSOR;
yy209:
#line 176 "implicit.re"
{ return syck_xprivate( type_id + 1, strlen( type_id ) - 1 ); }
-#line 1774 "<stdout>"
+#line 1842 "<stdout>"
yy210: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
@@ -1980,7 +1980,7 @@ yy213: switch(yych){
default: goto yy204;
}
yy214: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
goto yy215;
yy215: switch(yych){
@@ -2146,9 +2146,9 @@ yy219:
S_FREE( domain );
return uri;
}
-#line 2084 "<stdout>"
+#line 2149 "<stdout>"
yy220: ++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ if((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
yych = *YYCURSOR;
goto yy221;
yy221: switch(yych){
@@ -2362,7 +2362,7 @@ yy230:
S_FREE( domain );
return uri;
}
-#line 2302 "<stdout>"
+#line 2365 "<stdout>"
yy231: yych = *++YYCURSOR;
switch(yych){
case '0':
@@ -2482,7 +2482,7 @@ yy244: ++YYCURSOR;
yy245:
#line 174 "implicit.re"
{ return type_id; }
-#line 2422 "<stdout>"
+#line 2485 "<stdout>"
yy246: yych = *++YYCURSOR;
switch(yych){
case ',': goto yy216;
@@ -2507,7 +2507,7 @@ yy248: yych = *++YYCURSOR;
default: goto yy250;
}
yy249: ++YYCURSOR;
- if(YYLIMIT == YYCURSOR) YYFILL(1);
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
goto yy250;
yy250: switch(yych){
@@ -2725,7 +2725,7 @@ yy254: ++YYCURSOR;
default: goto yy204;
}
yy255: ++YYCURSOR;
- if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ if((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
yych = *YYCURSOR;
goto yy256;
yy256: switch(yych){
@@ -2929,7 +2929,7 @@ yy264: ++YYCURSOR;
yy265:
#line 172 "implicit.re"
{ return type_id; }
-#line 2874 "<stdout>"
+#line 2932 "<stdout>"
yy266: yych = *++YYCURSOR;
switch(yych){
case '0':
diff --git a/ext/syck/syck.h b/ext/syck/syck.h
index 02ffe24..4d65095 100644
--- a/ext/syck/syck.h
+++ b/ext/syck/syck.h
@@ -13,7 +13,7 @@
#define SYCK_YAML_MAJOR 1
#define SYCK_YAML_MINOR 0
-#define SYCK_VERSION "0.55"
+#define SYCK_VERSION "0.60"
#define YAML_DOMAIN "yaml.org,2002"
#include <stdio.h>
diff --git a/ext/syck/token.c b/ext/syck/token.c
index 8644058..57a7910 100644
--- a/ext/syck/token.c
+++ b/ext/syck/token.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.9.10 on Sat Sep 17 00:51:29 2005 */
+/* Generated by re2c 0.9.10 on Mon Sep 19 23:23:24 2005 */
#line 1 "token.re"
/*
* token.re
@@ -268,6 +268,7 @@ sycklex( YYSTYPE *sycklval, SyckParser *parser )
case syck_bytecode_utf8:
return sycklex_bytecode_utf8( sycklval, parser );
}
+ return YAML_DOCSEP;
}
/*
@@ -290,7 +291,7 @@ sycklex_yaml_utf8( YYSTYPE *sycklval, SyckParser *parser )
return t;
}
-#line 314 "token.re"
+#line 315 "token.re"
if ( YYLINEPTR != YYCURSOR )
@@ -303,7 +304,7 @@ Header:
YYTOKEN = YYCURSOR;
-#line 306 "<stdout>"
+#line 307 "<stdout>"
{
YYCTYPE yych;
unsigned int yyaccept;
@@ -329,11 +330,11 @@ yy2: yyaccept = 0;
default: goto yy3;
}
yy3:
-#line 373 "token.re"
+#line 374 "token.re"
{ YYPOS(0);
goto Document;
}
-#line 336 "<stdout>"
+#line 337 "<stdout>"
yy4: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
@@ -343,30 +344,30 @@ yy4: yyaccept = 0;
yy5: ++YYCURSOR;
goto yy6;
yy6:
-#line 355 "token.re"
+#line 356 "token.re"
{ eat_comments( parser );
goto Header;
}
-#line 350 "<stdout>"
+#line 351 "<stdout>"
yy7: ++YYCURSOR;
goto yy8;
yy8:
-#line 359 "token.re"
+#line 360 "token.re"
{ SyckLevel *lvl = CURRENT_LEVEL();
ENSURE_YAML_IEND(lvl, -1);
YYPOS(0);
return 0;
}
-#line 360 "<stdout>"
+#line 361 "<stdout>"
yy9: yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
goto yy18;
yy10:
-#line 365 "token.re"
+#line 366 "token.re"
{ GOBBLE_UP_YAML_INDENT( doc_level, YYTOKEN );
goto Header;
}
-#line 369 "<stdout>"
+#line 370 "<stdout>"
yy11: yych = *++YYCURSOR;
switch(yych){
case 0x0A: goto yy17;
@@ -376,11 +377,11 @@ yy12: ++YYCURSOR;
yych = *YYCURSOR;
goto yy16;
yy13:
-#line 369 "token.re"
+#line 370 "token.re"
{ doc_level = YYCURSOR - YYLINEPTR;
goto Header;
}
-#line 383 "<stdout>"
+#line 384 "<stdout>"
yy14: yych = *++YYCURSOR;
goto yy3;
yy15: ++YYCURSOR;
@@ -428,7 +429,7 @@ yy22: yych = *++YYCURSOR;
yy23: ++YYCURSOR;
goto yy24;
yy24:
-#line 341 "token.re"
+#line 342 "token.re"
{ SyckLevel *lvl = CURRENT_LEVEL();
if ( lvl->status == syck_lvl_header )
{
@@ -442,7 +443,7 @@ yy24:
}
return 0;
}
-#line 445 "<stdout>"
+#line 446 "<stdout>"
yy25: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
@@ -471,7 +472,7 @@ yy29: yych = *++YYCURSOR;
yy30: ++YYCURSOR;
goto yy31;
yy31:
-#line 327 "token.re"
+#line 328 "token.re"
{ SyckLevel *lvl = CURRENT_LEVEL();
if ( lvl->status == syck_lvl_header )
{
@@ -485,7 +486,7 @@ yy31:
return 0;
}
}
-#line 488 "<stdout>"
+#line 489 "<stdout>"
yy32: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
@@ -500,7 +501,7 @@ yy34: ++YYCURSOR;
default: goto yy20;
}
}
-#line 377 "token.re"
+#line 378 "token.re"
Document:
@@ -514,7 +515,7 @@ Document:
YYTOKEN = YYCURSOR;
-#line 517 "<stdout>"
+#line 518 "<stdout>"
{
YYCTYPE yych;
unsigned int yyaccept;
@@ -546,7 +547,7 @@ yy37: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
goto yy92;
yy38:
-#line 391 "token.re"
+#line 392 "token.re"
{ /* Isolate spaces */
int indt_len;
GOBBLE_UP_YAML_INDENT( indt_len, YYTOKEN );
@@ -574,46 +575,46 @@ yy38:
}
return YAML_INDENT;
}
-#line 577 "<stdout>"
+#line 578 "<stdout>"
yy39: ++YYCURSOR;
switch((yych = *YYCURSOR)) {
case 0x0A: goto yy91;
default: goto yy40;
}
yy40:
-#line 495 "token.re"
+#line 496 "token.re"
{ ENSURE_YAML_IOPEN(lvl, doc_level, 1);
goto Plain;
}
-#line 588 "<stdout>"
+#line 589 "<stdout>"
yy41: ++YYCURSOR;
goto yy42;
yy42:
-#line 419 "token.re"
+#line 420 "token.re"
{ ENSURE_YAML_IOPEN(lvl, doc_level, 1);
lvl = CURRENT_LEVEL();
ADD_LEVEL(lvl->spaces + 1, syck_lvl_iseq);
return YYTOKEN[0];
}
-#line 598 "<stdout>"
+#line 599 "<stdout>"
yy43: ++YYCURSOR;
goto yy44;
yy44:
-#line 425 "token.re"
+#line 426 "token.re"
{ ENSURE_YAML_IOPEN(lvl, doc_level, 1);
lvl = CURRENT_LEVEL();
ADD_LEVEL(lvl->spaces + 1, syck_lvl_imap);
return YYTOKEN[0];
}
-#line 608 "<stdout>"
+#line 609 "<stdout>"
yy45: ++YYCURSOR;
goto yy46;
yy46:
-#line 431 "token.re"
+#line 432 "token.re"
{ POP_LEVEL();
return YYTOKEN[0];
}
-#line 616 "<stdout>"
+#line 617 "<stdout>"
yy47: yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
@@ -761,23 +762,23 @@ yy50: yych = *++YYCURSOR;
yy51: ++YYCURSOR;
goto yy52;
yy52:
-#line 469 "token.re"
+#line 470 "token.re"
{ goto TransferMethod; }
-#line 766 "<stdout>"
+#line 767 "<stdout>"
yy53: ++YYCURSOR;
goto yy54;
yy54:
-#line 471 "token.re"
+#line 472 "token.re"
{ ENSURE_YAML_IOPEN(lvl, doc_level, 1);
goto SingleQuote; }
-#line 773 "<stdout>"
+#line 774 "<stdout>"
yy55: ++YYCURSOR;
goto yy56;
yy56:
-#line 474 "token.re"
+#line 475 "token.re"
{ ENSURE_YAML_IOPEN(lvl, doc_level, 1);
goto DoubleQuote; }
-#line 780 "<stdout>"
+#line 781 "<stdout>"
yy57: yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
@@ -799,27 +800,27 @@ yy57: yyaccept = 1;
yy58: ++YYCURSOR;
goto yy59;
yy59:
-#line 484 "token.re"
+#line 485 "token.re"
{ eat_comments( parser );
goto Document;
}
-#line 806 "<stdout>"
+#line 807 "<stdout>"
yy60: ++YYCURSOR;
yych = *YYCURSOR;
goto yy66;
yy61:
-#line 488 "token.re"
+#line 489 "token.re"
{ goto Document; }
-#line 813 "<stdout>"
+#line 814 "<stdout>"
yy62: ++YYCURSOR;
goto yy63;
yy63:
-#line 490 "token.re"
+#line 491 "token.re"
{ ENSURE_YAML_IEND(lvl, -1);
YYPOS(0);
return 0;
}
-#line 822 "<stdout>"
+#line 823 "<stdout>"
yy64: yych = *++YYCURSOR;
goto yy40;
yy65: ++YYCURSOR;
@@ -858,14 +859,14 @@ yy69: YYCURSOR = YYMARKER;
yy70: ++YYCURSOR;
goto yy71;
yy71:
-#line 477 "token.re"
+#line 478 "token.re"
{ if ( is_newline( YYCURSOR - 1 ) )
{
YYCURSOR--;
}
goto ScalarBlock;
}
-#line 868 "<stdout>"
+#line 869 "<stdout>"
yy72: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
@@ -947,12 +948,12 @@ yy76: switch(yych){
default: goto yy77;
}
yy77:
-#line 464 "token.re"
+#line 465 "token.re"
{ ENSURE_YAML_IOPEN(lvl, doc_level, 1);
sycklval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 );
return YAML_ALIAS;
}
-#line 955 "<stdout>"
+#line 956 "<stdout>"
yy78: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
@@ -1021,7 +1022,7 @@ yy79: switch(yych){
default: goto yy80;
}
yy80:
-#line 453 "token.re"
+#line 454 "token.re"
{ sycklval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 );
/*
@@ -1032,11 +1033,11 @@ yy80:
syck_hdlr_remove_anchor(parser, sycklval->name);
return YAML_ANCHOR;
}
-#line 1035 "<stdout>"
+#line 1036 "<stdout>"
yy81: ++YYCURSOR;
goto yy82;
yy82:
-#line 439 "token.re"
+#line 440 "token.re"
{ ENSURE_YAML_IOPEN(lvl, YYTOKEN - YYLINEPTR, 1);
FORCE_NEXT_TOKEN(YAML_IOPEN);
if ( *YYCURSOR == '#' || is_newline( YYCURSOR ) || is_newline( YYCURSOR - 1 ) )
@@ -1050,7 +1051,7 @@ yy82:
}
return YYTOKEN[0];
}
-#line 1053 "<stdout>"
+#line 1054 "<stdout>"
yy83: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
@@ -1067,11 +1068,11 @@ yy85: yych = *++YYCURSOR;
yy86: ++YYCURSOR;
goto yy87;
yy87:
-#line 435 "token.re"
+#line 436 "token.re"
{ YYPOS(1);
return YYTOKEN[0];
}
-#line 1074 "<stdout>"
+#line 1075 "<stdout>"
yy88: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
@@ -1103,7 +1104,7 @@ yy93: ++YYCURSOR;
default: goto yy69;
}
}
-#line 499 "token.re"
+#line 500 "token.re"
}
@@ -1112,7 +1113,7 @@ Directive:
YYTOKTMP = YYCURSOR;
-#line 1115 "<stdout>"
+#line 1116 "<stdout>"
{
YYCTYPE yych;
unsigned int yyaccept;
@@ -1212,18 +1213,18 @@ yy97: yyaccept = 0;
default: goto yy98;
}
yy98:
-#line 512 "token.re"
+#line 513 "token.re"
{ YYCURSOR = YYTOKTMP;
return YAML_DOCSEP;
}
-#line 1219 "<stdout>"
+#line 1220 "<stdout>"
yy99: ++YYCURSOR;
yych = *YYCURSOR;
goto yy103;
yy100:
-#line 510 "token.re"
+#line 511 "token.re"
{ goto Directive; }
-#line 1226 "<stdout>"
+#line 1227 "<stdout>"
yy101: yych = *++YYCURSOR;
goto yy98;
yy102: ++YYCURSOR;
@@ -1477,11 +1478,11 @@ yy108: switch(yych){
default: goto yy109;
}
yy109:
-#line 508 "token.re"
+#line 509 "token.re"
{ goto Directive; }
-#line 1482 "<stdout>"
+#line 1483 "<stdout>"
}
-#line 515 "token.re"
+#line 516 "token.re"
}
@@ -1504,7 +1505,7 @@ Plain2:
Plain3:
-#line 1507 "<stdout>"
+#line 1508 "<stdout>"
{
YYCTYPE yych;
unsigned int yyaccept;
@@ -1529,7 +1530,7 @@ yy112: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
goto yy142;
yy113:
-#line 538 "token.re"
+#line 539 "token.re"
{ int indt_len, nl_count = 0;
SyckLevel *lvl;
char *tok = YYTOKEN;
@@ -1543,8 +1544,8 @@ yy113:
while ( YYTOKEN < YYCURSOR )
{
- int nl_len = 0;
- if ( nl_len = newline_len( YYTOKEN++ ) )
+ int nl_len = newline_len( YYTOKEN++ );
+ if ( nl_len )
{
nl_count++;
YYTOKEN += nl_len - 1;
@@ -1565,18 +1566,18 @@ yy113:
goto Plain2;
}
-#line 1568 "<stdout>"
+#line 1569 "<stdout>"
yy114: ++YYCURSOR;
switch((yych = *YYCURSOR)) {
case 0x0A: goto yy141;
default: goto yy115;
}
yy115:
-#line 625 "token.re"
+#line 626 "token.re"
{ QUOTECATS(qstr, qcapa, qidx, YYTOKEN, YYCURSOR - YYTOKEN);
goto Plain2;
}
-#line 1579 "<stdout>"
+#line 1580 "<stdout>"
yy116: yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
@@ -1596,7 +1597,7 @@ yy117: yyaccept = 1;
yy118: ++YYCURSOR;
goto yy119;
yy119:
-#line 587 "token.re"
+#line 588 "token.re"
{ if ( plvl->status != syck_lvl_imap )
{
PLAIN_NOT_INL();
@@ -1607,11 +1608,11 @@ yy119:
}
RETURN_IMPLICIT();
}
-#line 1610 "<stdout>"
+#line 1611 "<stdout>"
yy120: ++YYCURSOR;
goto yy121;
yy121:
-#line 598 "token.re"
+#line 599 "token.re"
{ if ( plvl->status != syck_lvl_iseq )
{
PLAIN_NOT_INL();
@@ -1622,14 +1623,14 @@ yy121:
}
RETURN_IMPLICIT();
}
-#line 1625 "<stdout>"
+#line 1626 "<stdout>"
yy122: ++YYCURSOR;
switch((yych = *YYCURSOR)) {
case '#': goto yy128;
default: goto yy123;
}
yy123:
-#line 615 "token.re"
+#line 616 "token.re"
{ if ( qidx == 0 )
{
goto Plain2;
@@ -1639,13 +1640,13 @@ yy123:
goto Plain3;
}
}
-#line 1642 "<stdout>"
+#line 1643 "<stdout>"
yy124: ++YYCURSOR;
goto yy125;
yy125:
-#line 613 "token.re"
+#line 614 "token.re"
{ RETURN_IMPLICIT(); }
-#line 1648 "<stdout>"
+#line 1649 "<stdout>"
yy126: yych = *++YYCURSOR;
goto yy123;
yy127: yych = *++YYCURSOR;
@@ -1653,15 +1654,15 @@ yy127: yych = *++YYCURSOR;
yy128: ++YYCURSOR;
goto yy129;
yy129:
-#line 609 "token.re"
+#line 610 "token.re"
{ eat_comments( parser );
RETURN_IMPLICIT();
}
-#line 1660 "<stdout>"
+#line 1661 "<stdout>"
yy130: ++YYCURSOR;
goto yy131;
yy131:
-#line 576 "token.re"
+#line 577 "token.re"
{ if ( plvl->status != syck_lvl_iseq && plvl->status != syck_lvl_imap )
{
PLAIN_NOT_INL();
@@ -1672,7 +1673,7 @@ yy131:
}
RETURN_IMPLICIT();
}
-#line 1675 "<stdout>"
+#line 1676 "<stdout>"
yy132: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
@@ -1694,9 +1695,9 @@ yy135: YYCURSOR = YYMARKER;
yy136: ++YYCURSOR;
goto yy137;
yy137:
-#line 574 "token.re"
+#line 575 "token.re"
{ RETURN_IMPLICIT(); }
-#line 1699 "<stdout>"
+#line 1700 "<stdout>"
yy138: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
@@ -1728,7 +1729,7 @@ yy143: ++YYCURSOR;
default: goto yy135;
}
}
-#line 629 "token.re"
+#line 630 "token.re"
}
@@ -1742,7 +1743,7 @@ SingleQuote2:
YYTOKEN = YYCURSOR;
-#line 1745 "<stdout>"
+#line 1746 "<stdout>"
{
YYCTYPE yych;
unsigned int yyaccept;
@@ -1762,7 +1763,7 @@ yy146: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
goto yy157;
yy147:
-#line 643 "token.re"
+#line 644 "token.re"
{ int indt_len;
int nl_count = 0;
SyckLevel *lvl;
@@ -1780,8 +1781,8 @@ yy147:
while ( YYTOKEN < YYCURSOR )
{
- int nl_len = 0;
- if ( nl_len = newline_len( YYTOKEN++ ) )
+ int nl_len = newline_len( YYTOKEN++ );
+ if ( nl_len )
{
nl_count++;
YYTOKEN += nl_len - 1;
@@ -1802,25 +1803,25 @@ yy147:
goto SingleQuote2;
}
-#line 1805 "<stdout>"
+#line 1806 "<stdout>"
yy148: ++YYCURSOR;
switch((yych = *YYCURSOR)) {
case 0x0A: goto yy156;
default: goto yy149;
}
yy149:
-#line 710 "token.re"
+#line 711 "token.re"
{ QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1));
goto SingleQuote2;
}
-#line 1816 "<stdout>"
+#line 1817 "<stdout>"
yy150: ++YYCURSOR;
switch((yych = *YYCURSOR)) {
case '\'': goto yy154;
default: goto yy151;
}
yy151:
-#line 687 "token.re"
+#line 688 "token.re"
{ SyckLevel *lvl;
SyckNode *n = syck_alloc_str();
lvl = CURRENT_LEVEL();
@@ -1843,7 +1844,7 @@ yy151:
sycklval->nodeData = n;
return YAML_PLAIN;
}
-#line 1846 "<stdout>"
+#line 1847 "<stdout>"
yy152: yych = *++YYCURSOR;
goto yy151;
yy153: yych = *++YYCURSOR;
@@ -1851,11 +1852,11 @@ yy153: yych = *++YYCURSOR;
yy154: ++YYCURSOR;
goto yy155;
yy155:
-#line 683 "token.re"
+#line 684 "token.re"
{ QUOTECAT(qstr, qcapa, qidx, '\'');
goto SingleQuote2;
}
-#line 1858 "<stdout>"
+#line 1859 "<stdout>"
yy156: yyaccept = 0;
YYMARKER = ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
@@ -1878,7 +1879,7 @@ yy159: YYCURSOR = YYMARKER;
case 0: goto yy147;
}
}
-#line 714 "token.re"
+#line 715 "token.re"
}
@@ -1896,7 +1897,7 @@ DoubleQuote2:
-#line 1899 "<stdout>"
+#line 1900 "<stdout>"
{
YYCTYPE yych;
unsigned int yyaccept;
@@ -1917,7 +1918,7 @@ yy162: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
goto yy184;
yy163:
-#line 732 "token.re"
+#line 733 "token.re"
{ int indt_len;
int nl_count = 0;
SyckLevel *lvl;
@@ -1937,8 +1938,8 @@ yy163:
{
while ( YYTOKEN < YYCURSOR )
{
- int nl_len = 0;
- if ( nl_len = newline_len( YYTOKEN++ ) )
+ int nl_len = newline_len( YYTOKEN++ );
+ if ( nl_len )
{
nl_count++;
YYTOKEN += nl_len - 1;
@@ -1961,18 +1962,18 @@ yy163:
keep_nl = 1;
goto DoubleQuote2;
}
-#line 1964 "<stdout>"
+#line 1965 "<stdout>"
yy164: ++YYCURSOR;
switch((yych = *YYCURSOR)) {
case 0x0A: goto yy183;
default: goto yy165;
}
yy165:
-#line 818 "token.re"
+#line 819 "token.re"
{ QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1));
goto DoubleQuote2;
}
-#line 1975 "<stdout>"
+#line 1976 "<stdout>"
yy166: yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
@@ -1988,7 +1989,7 @@ yy166: yyaccept = 1;
yy167: ++YYCURSOR;
goto yy168;
yy168:
-#line 795 "token.re"
+#line 796 "token.re"
{ SyckLevel *lvl;
SyckNode *n = syck_alloc_str();
lvl = CURRENT_LEVEL();
@@ -2011,7 +2012,7 @@ yy168:
sycklval->nodeData = n;
return YAML_PLAIN;
}
-#line 2014 "<stdout>"
+#line 2015 "<stdout>"
yy169: yych = *++YYCURSOR;
goto yy168;
yy170: yych = *++YYCURSOR;
@@ -2034,12 +2035,12 @@ yy173: YYCURSOR = YYMARKER;
yy174: ++YYCURSOR;
goto yy175;
yy175:
-#line 790 "token.re"
+#line 791 "token.re"
{ keep_nl = 0;
YYCURSOR--;
goto DoubleQuote2;
}
-#line 2042 "<stdout>"
+#line 2043 "<stdout>"
yy176: yych = *++YYCURSOR;
switch(yych){
case 0x0A: goto yy174;
@@ -2072,12 +2073,12 @@ yy177: yych = *++YYCURSOR;
yy178: ++YYCURSOR;
goto yy179;
yy179:
-#line 776 "token.re"
+#line 777 "token.re"
{ char ch = *( YYCURSOR - 1 );
QUOTECAT(qstr, qcapa, qidx, escape_seq( ch ));
goto DoubleQuote2;
}
-#line 2080 "<stdout>"
+#line 2081 "<stdout>"
yy180: yych = *++YYCURSOR;
switch(yych){
case '0':
@@ -2105,7 +2106,7 @@ yy180: yych = *++YYCURSOR;
yy181: ++YYCURSOR;
goto yy182;
yy182:
-#line 781 "token.re"
+#line 782 "token.re"
{ long ch;
char *chr_text = syck_strndup( YYTOKEN, 4 );
chr_text[0] = '0';
@@ -2114,7 +2115,7 @@ yy182:
QUOTECAT(qstr, qcapa, qidx, ch);
goto DoubleQuote2;
}
-#line 2117 "<stdout>"
+#line 2118 "<stdout>"
yy183: yyaccept = 0;
YYMARKER = ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
@@ -2133,7 +2134,7 @@ yy185: ++YYCURSOR;
default: goto yy173;
}
}
-#line 822 "token.re"
+#line 823 "token.re"
}
@@ -2147,7 +2148,7 @@ TransferMethod2:
YYTOKTMP = YYCURSOR;
-#line 2150 "<stdout>"
+#line 2151 "<stdout>"
{
YYCTYPE yych;
unsigned int yyaccept;
@@ -2167,7 +2168,7 @@ yy186:
yy188: ++YYCURSOR;
goto yy189;
yy189:
-#line 836 "token.re"
+#line 837 "token.re"
{ SyckLevel *lvl;
YYCURSOR = YYTOKTMP;
if ( YYCURSOR == YYTOKEN + 1 )
@@ -2217,7 +2218,7 @@ yy189:
return YAML_TRANSFER;
}
-#line 2220 "<stdout>"
+#line 2221 "<stdout>"
yy190: yych = *++YYCURSOR;
goto yy189;
yy191: yych = *++YYCURSOR;
@@ -2228,11 +2229,11 @@ yy192: ++YYCURSOR;
default: goto yy193;
}
yy193:
-#line 903 "token.re"
+#line 904 "token.re"
{ QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1));
goto TransferMethod2;
}
-#line 2235 "<stdout>"
+#line 2236 "<stdout>"
yy194: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
@@ -2275,12 +2276,12 @@ yy197: YYCURSOR = YYMARKER;
yy198: ++YYCURSOR;
goto yy199;
yy199:
-#line 889 "token.re"
+#line 890 "token.re"
{ char ch = *( YYCURSOR - 1 );
QUOTECAT(qstr, qcapa, qidx, escape_seq( ch ));
goto TransferMethod2;
}
-#line 2283 "<stdout>"
+#line 2284 "<stdout>"
yy200: yych = *++YYCURSOR;
switch(yych){
case '0':
@@ -2308,7 +2309,7 @@ yy200: yych = *++YYCURSOR;
yy201: ++YYCURSOR;
goto yy202;
yy202:
-#line 894 "token.re"
+#line 895 "token.re"
{ long ch;
char *chr_text = syck_strndup( YYTOKTMP, 4 );
chr_text[0] = '0';
@@ -2317,7 +2318,7 @@ yy202:
QUOTECAT(qstr, qcapa, qidx, ch);
goto TransferMethod2;
}
-#line 2320 "<stdout>"
+#line 2321 "<stdout>"
yy203: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
@@ -2327,7 +2328,7 @@ yy204: switch(yych){
default: goto yy189;
}
}
-#line 908 "token.re"
+#line 909 "token.re"
}
@@ -2374,7 +2375,7 @@ ScalarBlock2:
YYTOKEN = YYCURSOR;
-#line 2377 "<stdout>"
+#line 2378 "<stdout>"
{
YYCTYPE yych;
unsigned int yyaccept;
@@ -2395,7 +2396,7 @@ yy207: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
goto yy226;
yy208:
-#line 955 "token.re"
+#line 956 "token.re"
{ char *pacer;
char *tok = YYTOKEN;
int indt_len = 0, nl_count = 0, fold_nl = 0, nl_begin = 0;
@@ -2428,8 +2429,8 @@ yy208:
pacer = YYTOKEN;
while ( pacer < YYCURSOR )
{
- int nl_len = 0;
- if ( nl_len = newline_len( pacer++ ) )
+ int nl_len = newline_len( pacer++ );
+ if ( nl_len )
{
nl_count++;
pacer += nl_len - 1;
@@ -2465,22 +2466,22 @@ yy208:
}
goto ScalarBlock2;
}
-#line 2468 "<stdout>"
+#line 2469 "<stdout>"
yy209: ++YYCURSOR;
switch((yych = *YYCURSOR)) {
case 0x0A: goto yy225;
default: goto yy210;
}
yy210:
-#line 1064 "token.re"
+#line 1065 "token.re"
{ QUOTECAT(qstr, qcapa, qidx, *YYTOKEN);
goto ScalarBlock2;
}
-#line 2479 "<stdout>"
+#line 2480 "<stdout>"
yy211: ++YYCURSOR;
goto yy212;
yy212:
-#line 1026 "token.re"
+#line 1027 "token.re"
{ lvl = CURRENT_LEVEL();
if ( lvl->status != syck_lvl_block )
{
@@ -2493,16 +2494,16 @@ yy212:
}
goto ScalarBlock2;
}
-#line 2496 "<stdout>"
+#line 2497 "<stdout>"
yy213: ++YYCURSOR;
goto yy214;
yy214:
-#line 1040 "token.re"
+#line 1041 "token.re"
{ YYCURSOR--;
POP_LEVEL();
RETURN_YAML_BLOCK();
}
-#line 2505 "<stdout>"
+#line 2506 "<stdout>"
yy215: yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
switch(yych){
@@ -2531,7 +2532,7 @@ yy219: yych = *++YYCURSOR;
yy220: ++YYCURSOR;
goto yy221;
yy221:
-#line 1045 "token.re"
+#line 1046 "token.re"
{ if ( YYTOKEN == YYLINEPTR )
{
if ( blockType == BLOCK_FOLD && qidx > 0 )
@@ -2550,7 +2551,7 @@ yy221:
goto ScalarBlock2;
}
}
-#line 2553 "<stdout>"
+#line 2554 "<stdout>"
yy222: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
@@ -2582,7 +2583,7 @@ yy227: ++YYCURSOR;
default: goto yy218;
}
}
-#line 1069 "token.re"
+#line 1070 "token.re"
}
@@ -2598,7 +2599,7 @@ Comment:
YYTOKEN = YYCURSOR;
-#line 2601 "<stdout>"
+#line 2602 "<stdout>"
{
YYCTYPE yych;
unsigned int yyaccept;
@@ -2616,11 +2617,11 @@ yy228:
yy230: ++YYCURSOR;
goto yy231;
yy231:
-#line 1085 "token.re"
+#line 1086 "token.re"
{ YYCURSOR = YYTOKEN;
return;
}
-#line 2623 "<stdout>"
+#line 2624 "<stdout>"
yy232: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
goto yy237;
@@ -2630,10 +2631,10 @@ yy233: ++YYCURSOR;
default: goto yy234;
}
yy234:
-#line 1089 "token.re"
+#line 1090 "token.re"
{ goto Comment;
}
-#line 2636 "<stdout>"
+#line 2637 "<stdout>"
yy235: yych = *++YYCURSOR;
goto yy234;
yy236: yyaccept = 0;
@@ -2658,7 +2659,7 @@ yy239: YYCURSOR = YYMARKER;
case 0: goto yy231;
}
}
-#line 1092 "token.re"
+#line 1093 "token.re"
}
diff --git a/ext/syck/yaml2byte.c b/ext/syck/yaml2byte.c
index 46173e8..61cd8c8 100644
--- a/ext/syck/yaml2byte.c
+++ b/ext/syck/yaml2byte.c
@@ -226,12 +226,17 @@ syck_yaml2byte(char *yamlstr)
syck_parser_implicit_typing( parser, 1 );
syck_parser_taguri_expansion( parser, 1 );
oid = syck_parse( parser );
- syck_lookup_sym( parser, oid, (char **)&sav );
- ret = S_ALLOC_N( char, strlen( sav->buffer ) + 3 );
- ret[0] = '\0';
- strcat( ret, "D\n" );
- strcat( ret, sav->buffer );
+ if ( syck_lookup_sym( parser, oid, (char **)&sav ) == 1 ) {
+ ret = S_ALLOC_N( char, strlen( sav->buffer ) + 3 );
+ ret[0] = '\0';
+ strcat( ret, "D\n" );
+ strcat( ret, sav->buffer );
+ }
+ else
+ {
+ ret = NULL;
+ }
syck_free_parser( parser );
return ret;
diff --git a/lib/yaml/basenode.rb b/lib/yaml/basenode.rb
index a98f6d8..7072b1d 100644
--- a/lib/yaml/basenode.rb
+++ b/lib/yaml/basenode.rb
@@ -67,8 +67,8 @@ module YAML
end
def at( seg )
- if Hash === @value and @value.has_key?( seg )
- @value[seg][1]
+ if Hash === @value
+ self[seg]
elsif Array === @value and seg =~ /\A\d+\Z/ and @value[seg.to_i]
@value[seg.to_i]
end
@@ -99,8 +99,8 @@ module YAML
@value.collect { |v|
idx += 1
if Hash === @value
- match_init = [v[0], v[1][1]]
- match_deep = v[1][1].match_segment( ypath, depth )
+ match_init = [v[0].transform, v[1]]
+ match_deep = v[1].match_segment( ypath, depth )
else
match_init = [idx, v]
match_deep = v.match_segment( ypath, depth )
@@ -127,7 +127,7 @@ module YAML
@value.collect { |h|
idx += 1
if Hash === @value
- [h[0], h[1][1]]
+ [h[0].transform, h[1]]
else
[idx, h]
end
@@ -182,9 +182,9 @@ module YAML
# We want the node to act like as Hash
# if it is.
#
- def []( *k )
+ def []( *key )
if Hash === @value
- v = @value.[]( *k )
+ v = @value.detect { |k,v| k.transform == key.first }
v[1] if v
elsif Array === @value
@value.[]( *k )
diff --git a/lib/yaml/rubytypes.rb b/lib/yaml/rubytypes.rb
index 29be1b9..10516d7 100644
--- a/lib/yaml/rubytypes.rb
+++ b/lib/yaml/rubytypes.rb
@@ -137,6 +137,7 @@ end
class String
yaml_as "tag:ruby.yaml.org,2002:string"
+ yaml_as "tag:yaml.org,2002:binary"
yaml_as "tag:yaml.org,2002:str"
def is_complex_yaml?
to_yaml_style or not to_yaml_properties.empty? or self =~ /\n.+/
@@ -145,6 +146,7 @@ class String
( self.count( "^ -~", "^\r\n" ) / self.size > 0.3 || self.count( "\x00" ) > 0 ) unless empty?
end
def String.yaml_new( klass, tag, val )
+ val = val.unpack("m")[0] if tag == "tag:yaml.org,2002:binary"
val = { 'str' => val } if String === val
if Hash === val
s = klass.allocate
@@ -163,7 +165,7 @@ class String
if is_binary_data?
out.scalar( "tag:yaml.org,2002:binary", [self].pack("m"), :literal )
elsif to_yaml_properties.empty?
- out.scalar( taguri, self, to_yaml_style )
+ out.scalar( taguri, self, self =~ /^:/ ? :quote2 : to_yaml_style )
else
out.map( taguri, to_yaml_style ) do |map|
map.add( 'str', "#{self}" )
@@ -179,7 +181,6 @@ end
class Symbol
yaml_as "tag:ruby.yaml.org,2002:symbol"
yaml_as "tag:ruby.yaml.org,2002:sym"
- # yaml_implicit /^:/, :yaml_new
def Symbol.yaml_new( klass, tag, val )
if String === val
val.intern