From fcc87ddce83ce7a78494457f0128b07812fe0ca2 Mon Sep 17 00:00:00 2001 From: Jeff Kent Date: Mon, 28 Dec 2015 09:45:09 -0600 Subject: [PATCH] jsontree: add JSONTREE_CONF_PRETTY option --- apps/json/jsontree.c | 26 ++++++++++++++++++++++++++ apps/json/jsontree.h | 6 ++++++ 2 files changed, 32 insertions(+) diff --git a/apps/json/jsontree.c b/apps/json/jsontree.c index 45f305869..e397ae47b 100644 --- a/apps/json/jsontree.c +++ b/apps/json/jsontree.c @@ -132,6 +132,9 @@ jsontree_print_next(struct jsontree_context *js_ctx) { struct jsontree_value *v; int index; +#if JSONTREE_PRETTY + int indent; +#endif v = js_ctx->values[js_ctx->depth]; @@ -145,10 +148,19 @@ jsontree_print_next(struct jsontree_context *js_ctx) index = js_ctx->index[js_ctx->depth]; if(index == 0) { js_ctx->putchar(v->type); +#if JSONTREE_PRETTY js_ctx->putchar('\n'); +#endif } if(index >= o->count) { +#if JSONTREE_PRETTY js_ctx->putchar('\n'); + indent = js_ctx->depth; + while (indent--) { + js_ctx->putchar(' '); + js_ctx->putchar(' '); + } +#endif js_ctx->putchar(v->type + 2); /* Default operation: back up one level! */ break; @@ -156,12 +168,26 @@ jsontree_print_next(struct jsontree_context *js_ctx) if(index > 0) { js_ctx->putchar(','); +#if JSONTREE_PRETTY js_ctx->putchar('\n'); +#endif } + +#if JSONTREE_PRETTY + indent = js_ctx->depth + 1; + while (indent--) { + js_ctx->putchar(' '); + js_ctx->putchar(' '); + } +#endif + if(v->type == JSON_TYPE_OBJECT) { jsontree_write_string(js_ctx, ((struct jsontree_object *)o)->pairs[index].name); js_ctx->putchar(':'); +#if JSONTREE_PRETTY + js_ctx->putchar(' '); +#endif ov = ((struct jsontree_object *)o)->pairs[index].value; } else { ov = o->values[index]; diff --git a/apps/json/jsontree.h b/apps/json/jsontree.h index 491e29ac9..b378d36b5 100644 --- a/apps/json/jsontree.h +++ b/apps/json/jsontree.h @@ -49,6 +49,12 @@ #define JSONTREE_MAX_DEPTH 10 #endif /* JSONTREE_CONF_MAX_DEPTH */ +#ifdef JSONTREE_CONF_PRETTY +#define JSONTREE_PRETTY JSONTREE_CONF_PRETTY +#else +#define JSONTREE_PRETTY 0 +#endif /* JSONTREE_CONF_PRETTY */ + struct jsontree_context { struct jsontree_value *values[JSONTREE_MAX_DEPTH]; uint16_t index[JSONTREE_MAX_DEPTH];