diff options
-rw-r--r-- | CHANGELOG.md | 3 | ||||
-rw-r--r-- | src/gleam/dynamic.gleam | 22 |
2 files changed, 13 insertions, 12 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index a70bc4e..1f4cd37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,8 @@ ## v0.19.1 - 2022-01-09 - The `dynamic.dynamic` function now returns a result. -- The `dynamic.result` and `dynamic.list` functions are now partially applied. +- The `dynamic.result`, `dynamic.optional`, `dynamic.field`, and `dynamic.list` + functions are now partially applied. ## v0.19.0 - 2022-01-09 diff --git a/src/gleam/dynamic.gleam b/src/gleam/dynamic.gleam index 50437e1..1157014 100644 --- a/src/gleam/dynamic.gleam +++ b/src/gleam/dynamic.gleam @@ -426,21 +426,21 @@ if javascript { /// /// ```gleam /// > import gleam/map -/// > field(from(map.new("Hello", "World")), "Hello") -/// Ok(Dynamic) +/// > from(map.new("Hello", "World")) +/// > |> field(named: "Hello", of: string) +/// Ok("World") /// -/// > field(from(123), "Hello") +/// > from(123) +/// > |> field("Hello", string) /// Error([DecodeError(expected: "Map", found: "Int", path: [])]) /// ``` /// -pub fn field( - from value: Dynamic, - named name: a, - of inner_type: Decoder(t), -) -> Result(t, DecodeErrors) { - try value = decode_field(value, name) - inner_type(value) - |> map_errors(push_path(_, name)) +pub fn field(named name: a, of inner_type: Decoder(t)) -> Decoder(t) { + fn(value) { + try value = decode_field(value, name) + inner_type(value) + |> map_errors(push_path(_, name)) + } } if erlang { |