Commit a0aa753a authored by Yukihiro "Matz" Matsumoto's avatar Yukihiro "Matz" Matsumoto

Merge pull request #1167 from h2so5/refactor-mrb-strdump

Refactor mrb_str_dump
parents 887339dc a4d59b4c
......@@ -2293,47 +2293,60 @@ mrb_str_dump(mrb_state *mrb, mrb_value str)
while (p < pend) {
unsigned char c = *p++;
if (c == '"' || c == '\\') {
switch (c) {
case '"':
case '\\':
*q++ = '\\';
*q++ = c;
}
else if (c == '#') {
if (IS_EVSTR(p, pend)) *q++ = '\\';
*q++ = '#';
}
else if (c == '\n') {
break;
case '\n':
*q++ = '\\';
*q++ = 'n';
}
else if (c == '\r') {
break;
case '\r':
*q++ = '\\';
*q++ = 'r';
}
else if (c == '\t') {
break;
case '\t':
*q++ = '\\';
*q++ = 't';
}
else if (c == '\f') {
break;
case '\f':
*q++ = '\\';
*q++ = 'f';
}
else if (c == '\013') {
break;
case '\013':
*q++ = '\\';
*q++ = 'v';
}
else if (c == '\010') {
break;
case '\010':
*q++ = '\\';
*q++ = 'b';
}
else if (c == '\007') {
break;
case '\007':
*q++ = '\\';
*q++ = 'a';
}
else if (c == '\033') {
break;
case '\033':
*q++ = '\\';
*q++ = 'e';
}
else if (ISPRINT(c)) {
break;
case '#':
if (IS_EVSTR(p, pend)) *q++ = '\\';
*q++ = '#';
break;
default:
if (ISPRINT(c)) {
*q++ = c;
}
else {
......@@ -2349,6 +2362,7 @@ mrb_str_dump(mrb_state *mrb, mrb_value str)
q += 4;
}
}
}
*q++ = '"';
return mrb_obj_value(result);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment