Use string builder for repl results
This commit is contained in:
parent
9d5c9200e8
commit
d9398f1eff
17
src/kuroko.c
17
src/kuroko.c
@ -129,20 +129,13 @@ KRK_Function(input) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void printResult(FILE * file, KrkValue result) {
|
static void printResult(FILE * file, KrkValue result) {
|
||||||
KrkClass * type = krk_getType(result);
|
struct StringBuilder sb = {0};
|
||||||
const char * formatStr = " \033[1;90m=> %s\033[0m\n";
|
if (!krk_pushStringBuilderFormat(&sb, " \033[1;90m=> %R\033[0m\n", result)) {
|
||||||
if (type->_reprer) {
|
krk_dumpTraceback();
|
||||||
krk_push(result);
|
|
||||||
result = krk_callDirect(type->_reprer, 1);
|
|
||||||
} else if (type->_tostr) {
|
|
||||||
krk_push(result);
|
|
||||||
result = krk_callDirect(type->_tostr, 1);
|
|
||||||
}
|
|
||||||
if (!IS_STRING(result)) {
|
|
||||||
fprintf(file, " \033[1;91m=> Unable to produce representation for value.\033[0m\n");
|
|
||||||
} else {
|
} else {
|
||||||
fprintf(file, formatStr, AS_CSTRING(result));
|
fwrite(sb.bytes,1,sb.length,file);
|
||||||
}
|
}
|
||||||
|
krk_discardStringBuilder(&sb);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef NO_RLINE
|
#ifndef NO_RLINE
|
||||||
|
Loading…
Reference in New Issue
Block a user