summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJo-Philipp Wich <jo@mein.io>2024-12-06 10:07:46 +0100
committerJo-Philipp Wich <jo@mein.io>2024-12-06 10:07:46 +0100
commit0a7ff4715cb8ec863ed061443aa77f986c840507 (patch)
tree01787fa9a33d75533d797841c1c444f169a9f84e
parentc71444ea301f0968476ea5bf1b8912b0b65308d7 (diff)
main: pretty-print `-p` output by default
When outputting non-string expression results while running the cli interpreter using the `-p` flag, pretty-print the resulting JSON data for better readability. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
-rw-r--r--main.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/main.c b/main.c
index 96f4adb..e7771b7 100644
--- a/main.c
+++ b/main.c
@@ -145,11 +145,18 @@ compile(uc_vm_t *vm, uc_source_t *src, FILE *precompile, bool strip, char *inter
switch (rc) {
case STATUS_OK:
if (print_result) {
- uc_vm_stack_push(vm, res);
- uc_vm_stack_push(vm, ucv_string_new("\n"));
- uc_stdlib_function("print")(vm, 2);
- uc_vm_stack_pop(vm);
- uc_vm_stack_pop(vm);
+ if (ucv_type(res) == UC_STRING) {
+ fwrite(ucv_string_get(res), ucv_string_length(res), 1, stdout);
+ }
+ else {
+ uc_stringbuf_t *pb = xprintbuf_new();
+
+ ucv_to_stringbuf_formatted(vm, pb, res, 0, '\t', 1);
+ fwrite(pb->buf, pb->bpos, 1, stdout);
+ printbuf_free(pb);
+ }
+
+ ucv_put(res);
}
rc = 0;