106 lines
3.8 KiB
Plaintext
106 lines
3.8 KiB
Plaintext
(module json (export quote_string null_value bool_value i32_value u32_value i64_value u64_value f64_value parse_bool_value_result parse_i32_value_result parse_u32_value_result parse_i64_value_result parse_u64_value_result parse_f64_value_result parse_null_value_result field_string field_bool field_i32 field_u32 field_i64 field_u64 field_f64 field_null array0 array1 array2 array3 object0 object1 object2 object3))
|
|
|
|
(type JsonText string)
|
|
|
|
(type JsonField string)
|
|
|
|
(fn quote_string ((value string)) -> JsonText
|
|
(std.json.quote_string value))
|
|
|
|
(fn null_value () -> JsonText
|
|
"null")
|
|
|
|
(fn bool_value ((value bool)) -> JsonText
|
|
(if value
|
|
"true"
|
|
"false"))
|
|
|
|
(fn i32_value ((value i32)) -> JsonText
|
|
(std.num.i32_to_string value))
|
|
|
|
(fn u32_value ((value u32)) -> JsonText
|
|
(std.num.u32_to_string value))
|
|
|
|
(fn i64_value ((value i64)) -> JsonText
|
|
(std.num.i64_to_string value))
|
|
|
|
(fn u64_value ((value u64)) -> JsonText
|
|
(std.num.u64_to_string value))
|
|
|
|
(fn f64_value ((value f64)) -> JsonText
|
|
(std.num.f64_to_string value))
|
|
|
|
(fn parse_bool_value_result ((token string)) -> (result bool i32)
|
|
(std.json.parse_bool_value_result token))
|
|
|
|
(fn parse_i32_value_result ((token string)) -> (result i32 i32)
|
|
(std.json.parse_i32_value_result token))
|
|
|
|
(fn parse_u32_value_result ((token string)) -> (result u32 i32)
|
|
(std.json.parse_u32_value_result token))
|
|
|
|
(fn parse_i64_value_result ((token string)) -> (result i64 i32)
|
|
(std.json.parse_i64_value_result token))
|
|
|
|
(fn parse_u64_value_result ((token string)) -> (result u64 i32)
|
|
(std.json.parse_u64_value_result token))
|
|
|
|
(fn parse_f64_value_result ((token string)) -> (result f64 i32)
|
|
(std.json.parse_f64_value_result token))
|
|
|
|
(fn parse_null_value_result ((token string)) -> (result bool i32)
|
|
(if (= token "null")
|
|
(ok bool i32 true)
|
|
(err bool i32 1)))
|
|
|
|
(fn field_fragment ((name string) (encoded_value JsonText)) -> JsonField
|
|
(std.string.concat (std.string.concat (quote_string name) ":") encoded_value))
|
|
|
|
(fn field_string ((name string) (value string)) -> JsonField
|
|
(field_fragment name (quote_string value)))
|
|
|
|
(fn field_bool ((name string) (value bool)) -> JsonField
|
|
(field_fragment name (bool_value value)))
|
|
|
|
(fn field_i32 ((name string) (value i32)) -> JsonField
|
|
(field_fragment name (i32_value value)))
|
|
|
|
(fn field_u32 ((name string) (value u32)) -> JsonField
|
|
(field_fragment name (u32_value value)))
|
|
|
|
(fn field_i64 ((name string) (value i64)) -> JsonField
|
|
(field_fragment name (i64_value value)))
|
|
|
|
(fn field_u64 ((name string) (value u64)) -> JsonField
|
|
(field_fragment name (u64_value value)))
|
|
|
|
(fn field_f64 ((name string) (value f64)) -> JsonField
|
|
(field_fragment name (f64_value value)))
|
|
|
|
(fn field_null ((name string)) -> JsonField
|
|
(field_fragment name (null_value)))
|
|
|
|
(fn array0 () -> JsonText
|
|
"[]")
|
|
|
|
(fn array1 ((first JsonText)) -> JsonText
|
|
(std.string.concat (std.string.concat "[" first) "]"))
|
|
|
|
(fn array2 ((first JsonText) (second JsonText)) -> JsonText
|
|
(std.string.concat (std.string.concat (std.string.concat (std.string.concat "[" first) ",") second) "]"))
|
|
|
|
(fn array3 ((first JsonText) (second JsonText) (third JsonText)) -> JsonText
|
|
(std.string.concat (std.string.concat (std.string.concat (std.string.concat (std.string.concat (std.string.concat "[" first) ",") second) ",") third) "]"))
|
|
|
|
(fn object0 () -> JsonText
|
|
"{}")
|
|
|
|
(fn object1 ((first JsonField)) -> JsonText
|
|
(std.string.concat (std.string.concat "{" first) "}"))
|
|
|
|
(fn object2 ((first JsonField) (second JsonField)) -> JsonText
|
|
(std.string.concat (std.string.concat (std.string.concat (std.string.concat "{" first) ",") second) "}"))
|
|
|
|
(fn object3 ((first JsonField) (second JsonField) (third JsonField)) -> JsonText
|
|
(std.string.concat (std.string.concat (std.string.concat (std.string.concat (std.string.concat (std.string.concat "{" first) ",") second) ",") third) "}"))
|