aboutsummaryrefslogtreecommitdiff
path: root/src/json_parser.zig
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-04-27 12:00:10 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-04-27 12:00:10 -0700
commit02fbb8e82a7f41c466b5156821c68af029ce4448 (patch)
treec3b07a06aff4fbe7e1c9db94194d3a3685b2f6ca /src/json_parser.zig
parent90a76bda39e16c9641579e88995139ec81aa75d0 (diff)
downloadbun-02fbb8e82a7f41c466b5156821c68af029ce4448.tar.gz
bun-02fbb8e82a7f41c466b5156821c68af029ce4448.tar.zst
bun-02fbb8e82a7f41c466b5156821c68af029ce4448.zip
json works in CLI sort of
Diffstat (limited to 'src/json_parser.zig')
-rw-r--r--src/json_parser.zig15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/json_parser.zig b/src/json_parser.zig
index a46375929..8b371d4e2 100644
--- a/src/json_parser.zig
+++ b/src/json_parser.zig
@@ -138,11 +138,15 @@ fn JSONLikeParser(opts: js_lexer.JSONOptions) type {
while (p.lexer.token != .t_close_brace) {
if (properties.items.len > 0) {
- is_single_line = if (p.lexer.has_newline_before) false else is_single_line;
+ if (p.lexer.has_newline_before) {
+ is_single_line = false;
+ }
if (!p.parseMaybeTrailingComma(.t_close_brace)) {
break;
}
- is_single_line = if (p.lexer.has_newline_before) false else is_single_line;
+ if (p.lexer.has_newline_before) {
+ is_single_line = false;
+ }
}
var key_string = p.lexer.string_literal;
@@ -162,7 +166,9 @@ fn JSONLikeParser(opts: js_lexer.JSONOptions) type {
properties.append(G.Property{ .key = key, .value = value }) catch unreachable;
}
- is_single_line = if (p.lexer.has_newline_before) false else is_single_line;
+ if (p.lexer.has_newline_before) {
+ is_single_line = false;
+ }
p.lexer.expect(.t_close_brace);
return p.e(E.Object{
.properties = properties.toOwnedSlice(),
@@ -269,6 +275,9 @@ test "ParseJSON" {
expectPrintedJSON("3.4159820837456", "3.4159820837456");
expectPrintedJSON("-10000.25", "-10000.25");
expectPrintedJSON("\"hi\"", "\"hi\"");
+ expectPrintedJSON("{\"hi\": 1, \"hey\": \"200\", \"boom\": {\"yo\": true}}", "({\"hi\": 1, \"hey\": \"200\", \"boom\": {\"yo\": true}})");
+ expectPrintedJSON("{\"hi\": \"hey\"}", "({hi: \"hey\"})");
+ expectPrintedJSON("{\"hi\": [\"hey\", \"yo\"]}", "({hi:[\"hey\",\"yo\"]})");
// TODO: emoji?
}