mirror of
https://github.com/roc-lang/roc.git
synced 2025-08-01 10:52:18 +00:00
JSON doesn't allow trailing commas
This commit is contained in:
parent
31f7d72ce0
commit
4af506c530
2 changed files with 18 additions and 18 deletions
|
@ -80,18 +80,18 @@ string = \s -> custom \bytes, @Json {} ->
|
||||||
|
|
||||||
list = \lst, encodeElem ->
|
list = \lst, encodeElem ->
|
||||||
custom \bytes, @Json {} ->
|
custom \bytes, @Json {} ->
|
||||||
writeList = \{ buffer, elemIndex }, elem ->
|
writeList = \{ buffer, elemsLeft }, elem ->
|
||||||
bufferWithPrefix =
|
bufferWithElem = appendWith buffer (encodeElem elem) (@Json {})
|
||||||
if elemIndex > 0 then
|
bufferWithSuffix =
|
||||||
List.append buffer (Num.toU8 ',')
|
if elemsLeft > 1 then
|
||||||
|
List.append bufferWithElem (Num.toU8 ',')
|
||||||
else
|
else
|
||||||
buffer
|
bufferWithElem
|
||||||
bufferWithElem = appendWith bufferWithPrefix (encodeElem elem) (@Json {})
|
|
||||||
|
|
||||||
{ buffer: bufferWithElem, elemIndex: elemIndex + 1 }
|
{ buffer: bufferWithSuffix, elemsLeft: elemsLeft - 1 }
|
||||||
|
|
||||||
head = List.append bytes (Num.toU8 '[')
|
head = List.append bytes (Num.toU8 '[')
|
||||||
{ buffer: withList } = List.walk lst { buffer: head, elemIndex: 0 } writeList
|
{ buffer: withList } = List.walk lst { buffer: head, elemsLeft: List.len lst } writeList
|
||||||
|
|
||||||
List.append withList (Num.toU8 ']')
|
List.append withList (Num.toU8 ']')
|
||||||
|
|
||||||
|
@ -106,7 +106,7 @@ record = \fields ->
|
||||||
|> appendWith value (@Json {})
|
|> appendWith value (@Json {})
|
||||||
|
|
||||||
bufferWithSuffix =
|
bufferWithSuffix =
|
||||||
if fieldsLeft > 0 then
|
if fieldsLeft > 1 then
|
||||||
List.append bufferWithKeyValue (Num.toU8 ',')
|
List.append bufferWithKeyValue (Num.toU8 ',')
|
||||||
else
|
else
|
||||||
bufferWithKeyValue
|
bufferWithKeyValue
|
||||||
|
@ -124,7 +124,7 @@ tag = \name, payload ->
|
||||||
writePayload = \{ buffer, itemsLeft }, encoder ->
|
writePayload = \{ buffer, itemsLeft }, encoder ->
|
||||||
bufferWithValue = appendWith buffer encoder (@Json {})
|
bufferWithValue = appendWith buffer encoder (@Json {})
|
||||||
bufferWithSuffix =
|
bufferWithSuffix =
|
||||||
if itemsLeft > 0 then
|
if itemsLeft > 1 then
|
||||||
List.append bufferWithValue (Num.toU8 ',')
|
List.append bufferWithValue (Num.toU8 ',')
|
||||||
else
|
else
|
||||||
bufferWithValue
|
bufferWithValue
|
||||||
|
|
|
@ -490,7 +490,7 @@ fn encode_derived_record_one_field_string() {
|
||||||
_ -> "<bad>"
|
_ -> "<bad>"
|
||||||
"#
|
"#
|
||||||
),
|
),
|
||||||
RocStr::from(r#"{"a":"foo",}"#),
|
RocStr::from(r#"{"a":"foo"}"#),
|
||||||
RocStr
|
RocStr
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -513,7 +513,7 @@ fn encode_derived_record_two_fields_strings() {
|
||||||
_ -> "<bad>"
|
_ -> "<bad>"
|
||||||
"#
|
"#
|
||||||
),
|
),
|
||||||
RocStr::from(r#"{"a":"foo","b":"bar",}"#),
|
RocStr::from(r#"{"a":"foo","b":"bar"}"#),
|
||||||
RocStr
|
RocStr
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -537,7 +537,7 @@ fn encode_derived_nested_record_string() {
|
||||||
_ -> "<bad>"
|
_ -> "<bad>"
|
||||||
"#
|
"#
|
||||||
),
|
),
|
||||||
RocStr::from(r#"{"a":{"b":"bar",},}"#),
|
RocStr::from(r#"{"a":{"b":"bar"}}"#),
|
||||||
RocStr
|
RocStr
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -561,7 +561,7 @@ fn encode_derived_tag_one_payload_string() {
|
||||||
_ -> "<bad>"
|
_ -> "<bad>"
|
||||||
"#
|
"#
|
||||||
),
|
),
|
||||||
RocStr::from(r#"{"A":["foo",]}"#),
|
RocStr::from(r#"{"A":["foo"]}"#),
|
||||||
RocStr
|
RocStr
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -585,7 +585,7 @@ fn encode_derived_tag_two_payloads_string() {
|
||||||
_ -> "<bad>"
|
_ -> "<bad>"
|
||||||
"#
|
"#
|
||||||
),
|
),
|
||||||
RocStr::from(r#"{"A":["foo","bar",]}"#),
|
RocStr::from(r#"{"A":["foo","bar"]}"#),
|
||||||
RocStr
|
RocStr
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -610,7 +610,7 @@ fn encode_derived_nested_tag_string() {
|
||||||
_ -> "<bad>"
|
_ -> "<bad>"
|
||||||
"#
|
"#
|
||||||
),
|
),
|
||||||
RocStr::from(r#"{"A":[{"B":["foo","bar",]},]}"#),
|
RocStr::from(r#"{"A":[{"B":["foo","bar"]}]}"#),
|
||||||
RocStr
|
RocStr
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -635,7 +635,7 @@ fn encode_derived_nested_record_tag_record() {
|
||||||
_ -> "<bad>"
|
_ -> "<bad>"
|
||||||
"#
|
"#
|
||||||
),
|
),
|
||||||
RocStr::from(r#"{"a":{"B":[{"c":"foo",},]},}"#),
|
RocStr::from(r#"{"a":{"B":[{"c":"foo"}]}}"#),
|
||||||
RocStr
|
RocStr
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -683,7 +683,7 @@ fn encode_derived_list_of_records() {
|
||||||
_ -> "<bad>"
|
_ -> "<bad>"
|
||||||
"#
|
"#
|
||||||
),
|
),
|
||||||
RocStr::from(r#"[{"a":"foo",},{"a":"bar",},{"a":"baz",}]"#),
|
RocStr::from(r#"[{"a":"foo"},{"a":"bar"},{"a":"baz"}]"#),
|
||||||
RocStr
|
RocStr
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue