* lib/token.c: single- and double-quoted root-level fix.
* lib/yaml.rb (YAML::object_maker): can create object attributes (such as found in Exception class) * lib/yaml/rubytypes.rb: roundtripping of Exception and subclasses. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3856 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
3458bf4328
commit
9bb4160189
@ -1,3 +1,12 @@
|
|||||||
|
Thu May 22 18:07:46 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
|
||||||
|
|
||||||
|
* lib/token.c: single- and double-quoted root-level fix.
|
||||||
|
|
||||||
|
* lib/yaml.rb (YAML::object_maker): can create object attributes (such as
|
||||||
|
found in Exception class)
|
||||||
|
|
||||||
|
* lib/yaml/rubytypes.rb: roundtripping of Exception and subclasses.
|
||||||
|
|
||||||
Fri May 23 01:26:26 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
|
Fri May 23 01:26:26 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
* object.c (rb_obj_clone): defer copying freezing state after
|
* object.c (rb_obj_clone): defer copying freezing state after
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Generated by re2c 0.5 on Wed May 21 13:04:00 2003 */
|
/* Generated by re2c 0.5 on Thu May 22 07:19:06 2003 */
|
||||||
#line 1 "token.re"
|
#line 1 "token.re"
|
||||||
/*
|
/*
|
||||||
* token.re
|
* token.re
|
||||||
@ -388,7 +388,7 @@ yy31: yych = *++YYCURSOR;
|
|||||||
default: goto yy32;
|
default: goto yy32;
|
||||||
}
|
}
|
||||||
yy32:
|
yy32:
|
||||||
#line 336
|
#line 338
|
||||||
{ ENSURE_IOPEN(lvl, 0, 1);
|
{ ENSURE_IOPEN(lvl, 0, 1);
|
||||||
goto Plain;
|
goto Plain;
|
||||||
}
|
}
|
||||||
@ -564,11 +564,13 @@ yy37:
|
|||||||
yy38: yych = *++YYCURSOR;
|
yy38: yych = *++YYCURSOR;
|
||||||
yy39:
|
yy39:
|
||||||
#line 315
|
#line 315
|
||||||
{ goto SingleQuote; }
|
{ ENSURE_IOPEN(lvl, 0, 1);
|
||||||
|
goto SingleQuote; }
|
||||||
yy40: yych = *++YYCURSOR;
|
yy40: yych = *++YYCURSOR;
|
||||||
yy41:
|
yy41:
|
||||||
#line 317
|
#line 318
|
||||||
{ goto DoubleQuote; }
|
{ ENSURE_IOPEN(lvl, 0, 1);
|
||||||
|
goto DoubleQuote; }
|
||||||
yy42: yyaccept = 0;
|
yy42: yyaccept = 0;
|
||||||
yych = *(YYMARKER = ++YYCURSOR);
|
yych = *(YYMARKER = ++YYCURSOR);
|
||||||
switch(yych){
|
switch(yych){
|
||||||
@ -588,18 +590,18 @@ yy42: yyaccept = 0;
|
|||||||
}
|
}
|
||||||
yy43: yych = *++YYCURSOR;
|
yy43: yych = *++YYCURSOR;
|
||||||
yy44:
|
yy44:
|
||||||
#line 326
|
#line 328
|
||||||
{ eat_comments( parser );
|
{ eat_comments( parser );
|
||||||
goto Document;
|
goto Document;
|
||||||
}
|
}
|
||||||
yy45: yych = *++YYCURSOR;
|
yy45: yych = *++YYCURSOR;
|
||||||
goto yy51;
|
goto yy51;
|
||||||
yy46:
|
yy46:
|
||||||
#line 330
|
#line 332
|
||||||
{ goto Document; }
|
{ goto Document; }
|
||||||
yy47: yych = *++YYCURSOR;
|
yy47: yych = *++YYCURSOR;
|
||||||
yy48:
|
yy48:
|
||||||
#line 332
|
#line 334
|
||||||
{ ENSURE_IEND(lvl, -1);
|
{ ENSURE_IEND(lvl, -1);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -642,7 +644,7 @@ yy56: switch(yych){
|
|||||||
default: goto yy57;
|
default: goto yy57;
|
||||||
}
|
}
|
||||||
yy57:
|
yy57:
|
||||||
#line 319
|
#line 321
|
||||||
{ if ( *( YYCURSOR - 1 ) == '\n' )
|
{ if ( *( YYCURSOR - 1 ) == '\n' )
|
||||||
{
|
{
|
||||||
YYCURSOR--;
|
YYCURSOR--;
|
||||||
@ -888,7 +890,7 @@ yy79: switch(yych){
|
|||||||
default: goto yy26;
|
default: goto yy26;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#line 340
|
#line 342
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -995,14 +997,14 @@ yy83: yyaccept = 0;
|
|||||||
default: goto yy84;
|
default: goto yy84;
|
||||||
}
|
}
|
||||||
yy84:
|
yy84:
|
||||||
#line 353
|
#line 355
|
||||||
{ YYCURSOR = YYTOKTMP;
|
{ YYCURSOR = YYTOKTMP;
|
||||||
return DOCSEP;
|
return DOCSEP;
|
||||||
}
|
}
|
||||||
yy85: yych = *++YYCURSOR;
|
yy85: yych = *++YYCURSOR;
|
||||||
goto yy89;
|
goto yy89;
|
||||||
yy86:
|
yy86:
|
||||||
#line 351
|
#line 353
|
||||||
{ goto Directive; }
|
{ goto Directive; }
|
||||||
yy87: yych = *++YYCURSOR;
|
yy87: yych = *++YYCURSOR;
|
||||||
goto yy84;
|
goto yy84;
|
||||||
@ -1254,10 +1256,10 @@ yy94: switch(yych){
|
|||||||
default: goto yy95;
|
default: goto yy95;
|
||||||
}
|
}
|
||||||
yy95:
|
yy95:
|
||||||
#line 349
|
#line 351
|
||||||
{ goto Directive; }
|
{ goto Directive; }
|
||||||
}
|
}
|
||||||
#line 356
|
#line 358
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1296,7 +1298,7 @@ yy96:
|
|||||||
yy98: yych = *++YYCURSOR;
|
yy98: yych = *++YYCURSOR;
|
||||||
goto yy122;
|
goto yy122;
|
||||||
yy99:
|
yy99:
|
||||||
#line 376
|
#line 378
|
||||||
{ int indt_len;
|
{ int indt_len;
|
||||||
SyckLevel *lvl;
|
SyckLevel *lvl;
|
||||||
char *tok = YYTOKTMP;
|
char *tok = YYTOKTMP;
|
||||||
@ -1318,11 +1320,11 @@ yy100: yych = *++YYCURSOR;
|
|||||||
default: goto yy101;
|
default: goto yy101;
|
||||||
}
|
}
|
||||||
yy101:
|
yy101:
|
||||||
#line 405
|
#line 407
|
||||||
{ goto Plain2; }
|
{ goto Plain2; }
|
||||||
yy102: yych = *++YYCURSOR;
|
yy102: yych = *++YYCURSOR;
|
||||||
yy103:
|
yy103:
|
||||||
#line 393
|
#line 395
|
||||||
{ if ( plvl->status != syck_lvl_inline ) goto Plain2;
|
{ if ( plvl->status != syck_lvl_inline ) goto Plain2;
|
||||||
RETURN_IMPLICIT(multiLine);
|
RETURN_IMPLICIT(multiLine);
|
||||||
}
|
}
|
||||||
@ -1334,7 +1336,7 @@ yy104: yych = *++YYCURSOR;
|
|||||||
}
|
}
|
||||||
yy105: yych = *++YYCURSOR;
|
yy105: yych = *++YYCURSOR;
|
||||||
yy106:
|
yy106:
|
||||||
#line 397
|
#line 399
|
||||||
{ RETURN_IMPLICIT(multiLine); }
|
{ RETURN_IMPLICIT(multiLine); }
|
||||||
yy107: yych = *++YYCURSOR;
|
yy107: yych = *++YYCURSOR;
|
||||||
switch(yych){
|
switch(yych){
|
||||||
@ -1342,13 +1344,13 @@ yy107: yych = *++YYCURSOR;
|
|||||||
default: goto yy108;
|
default: goto yy108;
|
||||||
}
|
}
|
||||||
yy108:
|
yy108:
|
||||||
#line 403
|
#line 405
|
||||||
{ goto Plain3; }
|
{ goto Plain3; }
|
||||||
yy109: yych = *++YYCURSOR;
|
yy109: yych = *++YYCURSOR;
|
||||||
goto yy101;
|
goto yy101;
|
||||||
yy110: yych = *++YYCURSOR;
|
yy110: yych = *++YYCURSOR;
|
||||||
yy111:
|
yy111:
|
||||||
#line 399
|
#line 401
|
||||||
{ eat_comments( parser );
|
{ eat_comments( parser );
|
||||||
RETURN_IMPLICIT(multiLine);
|
RETURN_IMPLICIT(multiLine);
|
||||||
}
|
}
|
||||||
@ -1374,7 +1376,7 @@ yy117: switch(yych){
|
|||||||
default: goto yy118;
|
default: goto yy118;
|
||||||
}
|
}
|
||||||
yy118:
|
yy118:
|
||||||
#line 391
|
#line 393
|
||||||
{ RETURN_IMPLICIT(multiLine); }
|
{ RETURN_IMPLICIT(multiLine); }
|
||||||
yy119: ++YYCURSOR;
|
yy119: ++YYCURSOR;
|
||||||
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
||||||
@ -1399,7 +1401,7 @@ yy124: switch(yych){
|
|||||||
default: goto yy99;
|
default: goto yy99;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#line 407
|
#line 409
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1429,7 +1431,7 @@ yy125:
|
|||||||
yy127: yych = *++YYCURSOR;
|
yy127: yych = *++YYCURSOR;
|
||||||
goto yy137;
|
goto yy137;
|
||||||
yy128:
|
yy128:
|
||||||
#line 421
|
#line 423
|
||||||
{ int indt_len;
|
{ int indt_len;
|
||||||
int nl_count = 0;
|
int nl_count = 0;
|
||||||
SyckLevel *lvl;
|
SyckLevel *lvl;
|
||||||
@ -1471,7 +1473,7 @@ yy129: yych = *++YYCURSOR;
|
|||||||
default: goto yy130;
|
default: goto yy130;
|
||||||
}
|
}
|
||||||
yy130:
|
yy130:
|
||||||
#line 461
|
#line 463
|
||||||
{ SyckLevel *lvl;
|
{ SyckLevel *lvl;
|
||||||
SyckNode *n = syck_alloc_str();
|
SyckNode *n = syck_alloc_str();
|
||||||
lvl = CURRENT_LEVEL();
|
lvl = CURRENT_LEVEL();
|
||||||
@ -1489,13 +1491,13 @@ yy131: yych = *++YYCURSOR;
|
|||||||
goto yy130;
|
goto yy130;
|
||||||
yy132: yych = *++YYCURSOR;
|
yy132: yych = *++YYCURSOR;
|
||||||
yy133:
|
yy133:
|
||||||
#line 475
|
#line 477
|
||||||
{ 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 457
|
#line 459
|
||||||
{ QUOTECAT(qstr, qcapa, qidx, '\'');
|
{ QUOTECAT(qstr, qcapa, qidx, '\'');
|
||||||
goto SingleQuote2;
|
goto SingleQuote2;
|
||||||
}
|
}
|
||||||
@ -1515,7 +1517,7 @@ yy139: switch(yych){
|
|||||||
default: goto yy128;
|
default: goto yy128;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#line 479
|
#line 481
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1550,7 +1552,7 @@ yy140:
|
|||||||
yy142: yych = *++YYCURSOR;
|
yy142: yych = *++YYCURSOR;
|
||||||
goto yy158;
|
goto yy158;
|
||||||
yy143:
|
yy143:
|
||||||
#line 497
|
#line 499
|
||||||
{ int indt_len;
|
{ int indt_len;
|
||||||
int nl_count = 0;
|
int nl_count = 0;
|
||||||
SyckLevel *lvl;
|
SyckLevel *lvl;
|
||||||
@ -1601,13 +1603,13 @@ yy144: yyaccept = 0;
|
|||||||
default: goto yy145;
|
default: goto yy145;
|
||||||
}
|
}
|
||||||
yy145:
|
yy145:
|
||||||
#line 572
|
#line 574
|
||||||
{ 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 558
|
#line 560
|
||||||
{ SyckLevel *lvl;
|
{ SyckLevel *lvl;
|
||||||
SyckNode *n = syck_alloc_str();
|
SyckNode *n = syck_alloc_str();
|
||||||
lvl = CURRENT_LEVEL();
|
lvl = CURRENT_LEVEL();
|
||||||
@ -1639,14 +1641,14 @@ yy152: YYCURSOR = YYMARKER;
|
|||||||
}
|
}
|
||||||
yy153: yych = *++YYCURSOR;
|
yy153: yych = *++YYCURSOR;
|
||||||
yy154:
|
yy154:
|
||||||
#line 553
|
#line 555
|
||||||
{ keep_nl = 0;
|
{ keep_nl = 0;
|
||||||
YYCURSOR--;
|
YYCURSOR--;
|
||||||
goto DoubleQuote2;
|
goto DoubleQuote2;
|
||||||
}
|
}
|
||||||
yy155: yych = *++YYCURSOR;
|
yy155: yych = *++YYCURSOR;
|
||||||
yy156:
|
yy156:
|
||||||
#line 537
|
#line 539
|
||||||
{ char ch = *( YYCURSOR - 1 );
|
{ char ch = *( YYCURSOR - 1 );
|
||||||
switch ( ch )
|
switch ( ch )
|
||||||
{
|
{
|
||||||
@ -1678,7 +1680,7 @@ yy160: switch(yych){
|
|||||||
default: goto yy143;
|
default: goto yy143;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#line 576
|
#line 578
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1703,7 +1705,7 @@ yy161:
|
|||||||
yy163:yy164: yych = *++YYCURSOR;
|
yy163:yy164: yych = *++YYCURSOR;
|
||||||
goto yy172;
|
goto yy172;
|
||||||
yy165:
|
yy165:
|
||||||
#line 585
|
#line 587
|
||||||
{ SyckLevel *lvl;
|
{ SyckLevel *lvl;
|
||||||
YYCURSOR = YYTOKTMP;
|
YYCURSOR = YYTOKTMP;
|
||||||
if ( YYCURSOR == YYTOKEN + 1 )
|
if ( YYCURSOR == YYTOKEN + 1 )
|
||||||
@ -1753,7 +1755,7 @@ yy166: yych = *++YYCURSOR;
|
|||||||
goto yy170;
|
goto yy170;
|
||||||
yy167: yych = *++YYCURSOR;
|
yy167: yych = *++YYCURSOR;
|
||||||
yy168:
|
yy168:
|
||||||
#line 631
|
#line 633
|
||||||
{ goto TransferMethod; }
|
{ goto TransferMethod; }
|
||||||
yy169: ++YYCURSOR;
|
yy169: ++YYCURSOR;
|
||||||
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
||||||
@ -1770,7 +1772,7 @@ yy172: switch(yych){
|
|||||||
default: goto yy165;
|
default: goto yy165;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#line 633
|
#line 635
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1828,7 +1830,7 @@ yy173:
|
|||||||
yy175: yych = *++YYCURSOR;
|
yy175: yych = *++YYCURSOR;
|
||||||
goto yy184;
|
goto yy184;
|
||||||
yy176:
|
yy176:
|
||||||
#line 675
|
#line 677
|
||||||
{ int indt_len;
|
{ int indt_len;
|
||||||
GOBBLE_UP_INDENT( indt_len, YYTOKTMP );
|
GOBBLE_UP_INDENT( indt_len, YYTOKTMP );
|
||||||
lvl = CURRENT_LEVEL();
|
lvl = CURRENT_LEVEL();
|
||||||
@ -1861,7 +1863,7 @@ yy176:
|
|||||||
}
|
}
|
||||||
yy177: yych = *++YYCURSOR;
|
yy177: yych = *++YYCURSOR;
|
||||||
yy178:
|
yy178:
|
||||||
#line 707
|
#line 709
|
||||||
{ lvl = CURRENT_LEVEL();
|
{ lvl = CURRENT_LEVEL();
|
||||||
YYCURSOR--;
|
YYCURSOR--;
|
||||||
yylval->nodeData = syck_new_str2( YYTOKEN, YYCURSOR - YYTOKEN );
|
yylval->nodeData = syck_new_str2( YYTOKEN, YYCURSOR - YYTOKEN );
|
||||||
@ -1871,7 +1873,7 @@ yy178:
|
|||||||
}
|
}
|
||||||
yy179: yych = *++YYCURSOR;
|
yy179: yych = *++YYCURSOR;
|
||||||
yy180:
|
yy180:
|
||||||
#line 715
|
#line 717
|
||||||
{ lvl = CURRENT_LEVEL();
|
{ lvl = CURRENT_LEVEL();
|
||||||
if ( lvl->status != syck_lvl_block )
|
if ( lvl->status != syck_lvl_block )
|
||||||
{
|
{
|
||||||
@ -1882,7 +1884,7 @@ yy180:
|
|||||||
}
|
}
|
||||||
yy181: yych = *++YYCURSOR;
|
yy181: yych = *++YYCURSOR;
|
||||||
yy182:
|
yy182:
|
||||||
#line 724
|
#line 726
|
||||||
{ goto ScalarBlock2; }
|
{ goto ScalarBlock2; }
|
||||||
yy183: ++YYCURSOR;
|
yy183: ++YYCURSOR;
|
||||||
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
||||||
@ -1900,7 +1902,7 @@ yy186: switch(yych){
|
|||||||
default: goto yy176;
|
default: goto yy176;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#line 726
|
#line 728
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1930,7 +1932,7 @@ yy187:
|
|||||||
}
|
}
|
||||||
yy189: yych = *++YYCURSOR;
|
yy189: yych = *++YYCURSOR;
|
||||||
yy190:
|
yy190:
|
||||||
#line 742
|
#line 744
|
||||||
{ SyckLevel *lvl = CURRENT_LEVEL();
|
{ SyckLevel *lvl = CURRENT_LEVEL();
|
||||||
YYCURSOR = tok;
|
YYCURSOR = tok;
|
||||||
return;
|
return;
|
||||||
@ -1939,7 +1941,7 @@ yy191: yych = *++YYCURSOR;
|
|||||||
goto yy195;
|
goto yy195;
|
||||||
yy192: yych = *++YYCURSOR;
|
yy192: yych = *++YYCURSOR;
|
||||||
yy193:
|
yy193:
|
||||||
#line 747
|
#line 749
|
||||||
{ goto Comment;
|
{ goto Comment;
|
||||||
}
|
}
|
||||||
yy194: ++YYCURSOR;
|
yy194: ++YYCURSOR;
|
||||||
@ -1950,7 +1952,7 @@ yy195: switch(yych){
|
|||||||
default: goto yy190;
|
default: goto yy190;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#line 750
|
#line 752
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
17
lib/yaml.rb
17
lib/yaml.rb
@ -124,13 +124,20 @@ module YAML
|
|||||||
#
|
#
|
||||||
# Allocate blank object
|
# Allocate blank object
|
||||||
#
|
#
|
||||||
def YAML.object_maker( obj_class, val )
|
def YAML.object_maker( obj_class, val, is_attr = false )
|
||||||
if Hash === val
|
if Hash === val
|
||||||
name = obj_class.name
|
name = obj_class.name
|
||||||
o = ::Marshal.load( sprintf( "\004\006o:%c%s\000", name.length + 5, name ))
|
ostr = sprintf( "\004\006o:%c%s\000", name.length + 5, name )
|
||||||
val.each_pair { |k,v|
|
if is_attr
|
||||||
o.instance_eval "@#{k} = v"
|
ostr[ -1, 1 ] = Marshal.dump( val ).sub( /^[^{]+\{/, '' )
|
||||||
}
|
p ostr
|
||||||
|
end
|
||||||
|
o = ::Marshal.load( ostr )
|
||||||
|
unless is_attr
|
||||||
|
val.each_pair { |k,v|
|
||||||
|
o.instance_eval "@#{k} = v"
|
||||||
|
}
|
||||||
|
end
|
||||||
o
|
o
|
||||||
else
|
else
|
||||||
raise YAML::Error, "Invalid object explicitly tagged !ruby/Object: " + val.inspect
|
raise YAML::Error, "Invalid object explicitly tagged !ruby/Object: " + val.inspect
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
require 'date'
|
require 'date'
|
||||||
require 'yaml/constants'
|
|
||||||
#
|
#
|
||||||
# Type conversions
|
# Type conversions
|
||||||
#
|
#
|
||||||
@ -241,6 +240,38 @@ array_proc = Proc.new { |type, val|
|
|||||||
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 )
|
||||||
|
|
||||||
|
#
|
||||||
|
# Exception#to_yaml
|
||||||
|
#
|
||||||
|
class Exception
|
||||||
|
def is_complex_yaml?
|
||||||
|
true
|
||||||
|
end
|
||||||
|
def to_yaml_type
|
||||||
|
"!ruby/exception:#{self.class}"
|
||||||
|
end
|
||||||
|
def to_yaml( opts = {} )
|
||||||
|
YAML::quick_emit( self.object_id, opts ) { |out|
|
||||||
|
out.map( self.to_yaml_type ) { |map|
|
||||||
|
map.add( 'message', self.message )
|
||||||
|
to_yaml_properties.each { |m|
|
||||||
|
map.add( m[1..-1], instance_eval( m ) )
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
YAML.add_ruby_type( 'exception' ) { |type, val|
|
||||||
|
type, obj_class = YAML.read_type_class( type, Exception )
|
||||||
|
o = YAML.object_maker( obj_class, { 'mesg' => val.delete( 'message' ) }, true )
|
||||||
|
val.each_pair { |k,v|
|
||||||
|
o.instance_eval "@#{k} = v"
|
||||||
|
}
|
||||||
|
o
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# String#to_yaml
|
# String#to_yaml
|
||||||
#
|
#
|
||||||
@ -274,7 +305,7 @@ class String
|
|||||||
"''"
|
"''"
|
||||||
elsif YAML.detect_implicit( self ) != 'str'
|
elsif YAML.detect_implicit( self ) != 'str'
|
||||||
"\"#{YAML.escape( self )}\""
|
"\"#{YAML.escape( self )}\""
|
||||||
elsif self =~ /#{YAML::ESCAPE_CHAR}|[#{YAML::SPACE_INDICATORS}]( |\n|$)|\'/
|
elsif self =~ /#{YAML::ESCAPE_CHAR}|[#{YAML::SPACE_INDICATORS}] |\n|\'/
|
||||||
"\"#{YAML.escape( self )}\""
|
"\"#{YAML.escape( self )}\""
|
||||||
elsif self =~ /^[^#{YAML::WORD_CHAR}]/
|
elsif self =~ /^[^#{YAML::WORD_CHAR}]/
|
||||||
"\"#{YAML.escape( self )}\""
|
"\"#{YAML.escape( self )}\""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user