Skip to content

Commit ecee1af

Browse files
committed
FEAT: adding different output for form/mold functions used on word types (as it was in Rebol2)
So it is again: >> mold #foo == "#foo" >> form #foo == "foo" NOTE: it also affects conversion using TO string! (and string variants like file!) Related ancient blog article: http://www.rebol.net/cgi-bin/r3blog.r?view=0304 Fixes: metaeducation/rebol-issues#1404
1 parent d604669 commit ecee1af

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

src/core/s-mold.c

+20-5
Original file line numberDiff line numberDiff line change
@@ -1197,23 +1197,38 @@ STOID Mold_Error(REBVAL *value, REB_MOLD *mold, REBFLG molded)
11971197
break;
11981198

11991199
case REB_SET_WORD:
1200-
Emit(mold, "W:", value);
1200+
if(molded)
1201+
Emit(mold, "W:", value);
1202+
else
1203+
Append_UTF8(ser, Get_Sym_Name(VAL_WORD_SYM(value)), -1);
12011204
break;
12021205

12031206
case REB_GET_WORD:
1204-
Emit(mold, ":W", value);
1207+
if(molded)
1208+
Emit(mold, ":W", value);
1209+
else
1210+
Append_UTF8(ser, Get_Sym_Name(VAL_WORD_SYM(value)), -1);
12051211
break;
12061212

12071213
case REB_LIT_WORD:
1208-
Emit(mold, "\'W", value);
1214+
if(molded)
1215+
Emit(mold, "\'W", value);
1216+
else
1217+
Append_UTF8(ser, Get_Sym_Name(VAL_WORD_SYM(value)), -1);
12091218
break;
12101219

12111220
case REB_REFINEMENT:
1212-
Emit(mold, "/W", value);
1221+
if(molded)
1222+
Emit(mold, "/W", value);
1223+
else
1224+
Append_UTF8(ser, Get_Sym_Name(VAL_WORD_SYM(value)), -1);
12131225
break;
12141226

12151227
case REB_ISSUE:
1216-
Emit(mold, "#W", value);
1228+
if(molded)
1229+
Emit(mold, "#W", value);
1230+
else
1231+
Append_UTF8(ser, Get_Sym_Name(VAL_WORD_SYM(value)), -1);
12171232
break;
12181233

12191234
case REB_CLOSURE:

0 commit comments

Comments
 (0)