aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2020-12-14 21:58:38 -0800
committerBruce Hill <bruce@bruce-hill.com>2020-12-14 21:58:38 -0800
commite638a517bfe60af1975d793bfbfda4d64428d15f (patch)
tree00a3db3a77dde3ce88e3cf88d3cefce7bcae03ce
parent1ff4a9eb0548b94839cc936f932f75af38a00f51 (diff)
Re-hooked up JSON output
-rw-r--r--bpeg.c13
1 files changed, 2 insertions, 11 deletions
diff --git a/bpeg.c b/bpeg.c
index ac6adb0..bdb0099 100644
--- a/bpeg.c
+++ b/bpeg.c
@@ -86,17 +86,8 @@ static int run_match(grammar_t *g, const char *filename, vm_op_t *pattern, unsig
} else if (flags & BPEG_JSON) {
if (printed_matches > 1)
fprintf(stdout, ",\n");
- printf("{\"filename\":\"%s\",\"text\":\"", filename ? filename : "-");
- for (char *c = f->contents; c < f->end; c++) {
- switch (*c) {
- case '"': printf("\\\""); break;
- case '\n': printf("\\n"); break;
- case '\t': printf("\\t"); break;
- case '\\': printf("\\\\"); break;
- default: printf("%c", *c); break;
- }
- }
- printf("\",\n\"tree\":{\"rule\":\"text\",\"start\":%d,\"end\":%ld,\"children\":[",
+ printf("{\"filename\":\"%s\",", filename ? filename : "-");
+ printf("\"tree\":{\"rule\":\"text\",\"start\":%d,\"end\":%ld,\"children\":[",
0, f->end - f->contents);
json_match(stdout, f->contents, m, (flags & BPEG_VERBOSE) ? 1 : 0);
printf("]}}\n");