Skip to content

Commit b16674e

Browse files
committed
docs: demo
1 parent 0b44696 commit b16674e

File tree

2 files changed

+44
-3
lines changed

2 files changed

+44
-3
lines changed

README.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,48 @@ pub type FooJson {
3131
)
3232
}
3333
34+
// src/foo_json.gleam
35+
// generated!
36+
import gleam/json
37+
import gleam/dynamic
38+
import internal/foo
39+
40+
pub fn to_json(t: foo.FooJson) {
41+
json.object([
42+
#("a_bool", json.bool(t.a_bool)),
43+
#("b_int", json.int(t.b_int)),
44+
#("c_float", json.float(t.c_float)),
45+
#(
46+
"d_two_tuple",
47+
json.preprocessed_array([
48+
json.int(t.d_two_tuple.0),
49+
json.string(t.d_two_tuple.1),
50+
]),
51+
),
52+
#("e_option_int", json.nullable(t.e_option_int, json.int)),
53+
#("f_string_list", json.array(t.f_string_list, json.string)),
54+
])
55+
}
56+
57+
pub fn to_string(t: foo.FooJson) {
58+
json.to_string(to_json(t))
59+
}
60+
61+
pub fn from_json(json_str: String) {
62+
json.decode(
63+
json_str,
64+
dynamic.decode6(
65+
foo.Foo,
66+
dynamic.field("a_bool", dynamic.bool),
67+
dynamic.field("b_int", dynamic.int),
68+
dynamic.field("c_float", dynamic.float),
69+
dynamic.field("d_two_tuple", dynamic.tuple2(dynamic.int, dynamic.string)),
70+
dynamic.field("e_option_int", dynamic.optional(dynamic.int)),
71+
dynamic.field("f_string_list", dynamic.list(dynamic.string)),
72+
),
73+
)
74+
}
75+
3476
// src/my_module.gleam
3577
import foo
3678
import foo_json

test/gserde_test.gleam

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@ pub fn end_to_end_test() {
9494
|> should.equal(
9595
"{\"a_bool\":true,\"b_int\":1,\"c_float\":1.0,\"d_two_tuple\":[2,\"3\"],\"e_option_int\":4,\"f_string_list\":[\"a\",\"b\"]}",
9696
)
97-
98-
["foo.gleam", "foo_json.gleam", "foo_json_test.gleam"]
99-
|> list.each(fn(basename) { exec("rm", ["-f", "src/internal/" <> basename]) })
97+
// ["foo.gleam", "foo_json.gleam", "foo_json_test.gleam"]
98+
// |> list.each(fn(basename) { exec("rm", ["-f", "src/internal/" <> basename]) })
10099
}

0 commit comments

Comments
 (0)