aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorinoas <mail@inoas.com>2023-02-26 09:54:38 +0100
committerLouis Pilfold <louis@lpil.uk>2023-02-26 18:44:41 +0000
commit6ae05469d118687679cf9b5408630f55e2bf4d59 (patch)
tree61e9d57027eea4430cf089a9c5a48b322bfd0f85 /src
parent1f596cc4863bf5f680371dcfa2782818cbd9a5ee (diff)
downloadgleam_stdlib-6ae05469d118687679cf9b5408630f55e2bf4d59.tar.gz
gleam_stdlib-6ae05469d118687679cf9b5408630f55e2bf4d59.zip
0.27 gleam fix && gleam format, replace some asserts with panics in tests
Diffstat (limited to 'src')
-rw-r--r--src/gleam/dynamic.gleam52
-rw-r--r--src/gleam/iterator.gleam3
-rw-r--r--src/gleam/list.gleam13
-rw-r--r--src/gleam/string.gleam2
4 files changed, 40 insertions, 30 deletions
diff --git a/src/gleam/dynamic.gleam b/src/gleam/dynamic.gleam
index 8cdebcd..8d772e9 100644
--- a/src/gleam/dynamic.gleam
+++ b/src/gleam/dynamic.gleam
@@ -329,19 +329,21 @@ pub fn result(
error decode_error: Decoder(e),
) -> Decoder(Result(a, e)) {
fn(value) {
- try inner_result = decode_result(value)
+ use inner_result <- result.then(decode_result(value))
case inner_result {
Ok(raw) -> {
- try value =
+ use value <- result.then(
decode_ok(raw)
- |> map_errors(push_path(_, "ok"))
+ |> map_errors(push_path(_, "ok")),
+ )
Ok(Ok(value))
}
Error(raw) -> {
- try value =
+ use value <- result.then(
decode_error(raw)
- |> map_errors(push_path(_, "error"))
+ |> map_errors(push_path(_, "error")),
+ )
Ok(Error(value))
}
}
@@ -382,7 +384,7 @@ pub fn list(
of decoder_type: fn(Dynamic) -> Result(inner, DecodeErrors),
) -> Decoder(List(inner)) {
fn(dynamic) {
- try list = shallow_list(dynamic)
+ use list <- result.then(shallow_list(dynamic))
list
|> list.try_map(decoder_type)
|> map_errors(push_path(_, "*"))
@@ -514,9 +516,9 @@ if javascript {
///
pub fn element(at index: Int, of inner_type: Decoder(t)) -> Decoder(t) {
fn(data: Dynamic) {
- try tuple = decode_tuple(data)
+ use tuple <- result.then(decode_tuple(data))
let size = tuple_size(tuple)
- try data = case index >= 0 {
+ use data <- result.then(case index >= 0 {
True ->
case index < size {
True -> tuple_get(tuple, index)
@@ -527,7 +529,7 @@ pub fn element(at index: Int, of inner_type: Decoder(t)) -> Decoder(t) {
True -> tuple_get(tuple, size + index)
False -> at_least_decode_tuple_error(int.absolute_value(index), data)
}
- }
+ })
inner_type(data)
|> map_errors(push_path(_, index))
}
@@ -607,7 +609,10 @@ fn assert_is_tuple(
int.to_string(desired_size),
" elements",
]))
- try tuple = map_errors(decode_tuple(value), put_expected(_, expected))
+ use tuple <- result.then(map_errors(
+ decode_tuple(value),
+ put_expected(_, expected),
+ ))
case tuple_size(tuple) {
size if size == desired_size -> Ok(Nil)
_ -> exact_decode_tuple_error(desired_size, value)
@@ -667,7 +672,7 @@ pub fn tuple2(
second decode2: Decoder(b),
) -> Decoder(#(a, b)) {
fn(value) {
- try _ = assert_is_tuple(value, 2)
+ use _ <- result.then(assert_is_tuple(value, 2))
let #(a, b) = unsafe_coerce(value)
case decode1(a), decode2(b) {
Ok(a), Ok(b) -> Ok(#(a, b))
@@ -718,7 +723,7 @@ pub fn tuple3(
third decode3: Decoder(c),
) -> Decoder(#(a, b, c)) {
fn(value) {
- try _ = assert_is_tuple(value, 3)
+ use _ <- result.then(assert_is_tuple(value, 3))
let #(a, b, c) = unsafe_coerce(value)
case decode1(a), decode2(b), decode3(c) {
Ok(a), Ok(b), Ok(c) -> Ok(#(a, b, c))
@@ -769,7 +774,7 @@ pub fn tuple4(
fourth decode4: Decoder(d),
) -> Decoder(#(a, b, c, d)) {
fn(value) {
- try _ = assert_is_tuple(value, 4)
+ use _ <- result.then(assert_is_tuple(value, 4))
let #(a, b, c, d) = unsafe_coerce(value)
case decode1(a), decode2(b), decode3(c), decode4(d) {
Ok(a), Ok(b), Ok(c), Ok(d) -> Ok(#(a, b, c, d))
@@ -820,7 +825,7 @@ pub fn tuple5(
fifth decode5: Decoder(e),
) -> Decoder(#(a, b, c, d, e)) {
fn(value) {
- try _ = assert_is_tuple(value, 5)
+ use _ <- result.then(assert_is_tuple(value, 5))
let #(a, b, c, d, e) = unsafe_coerce(value)
case decode1(a), decode2(b), decode3(c), decode4(d), decode5(e) {
Ok(a), Ok(b), Ok(c), Ok(d), Ok(e) -> Ok(#(a, b, c, d, e))
@@ -869,7 +874,7 @@ pub fn tuple6(
sixth decode6: Decoder(f),
) -> Decoder(#(a, b, c, d, e, f)) {
fn(value) {
- try _ = assert_is_tuple(value, 6)
+ use _ <- result.then(assert_is_tuple(value, 6))
let #(a, b, c, d, e, f) = unsafe_coerce(value)
case
decode1(a),
@@ -917,20 +922,23 @@ pub fn map(
to value_type: Decoder(v),
) -> Decoder(Map(k, v)) {
fn(value) {
- try map = decode_map(value)
- try pairs =
+ use map <- result.then(decode_map(value))
+ use pairs <- result.then(
map
|> map.to_list
|> list.try_map(fn(pair) {
let #(k, v) = pair
- try k =
+ use k <- result.then(
key_type(k)
- |> map_errors(push_path(_, "keys"))
- try v =
+ |> map_errors(push_path(_, "keys")),
+ )
+ use v <- result.then(
value_type(v)
- |> map_errors(push_path(_, "values"))
+ |> map_errors(push_path(_, "values")),
+ )
Ok(#(k, v))
- })
+ }),
+ )
Ok(map.from_list(pairs))
}
}
diff --git a/src/gleam/iterator.gleam b/src/gleam/iterator.gleam
index 7a69a5b..f445eb2 100644
--- a/src/gleam/iterator.gleam
+++ b/src/gleam/iterator.gleam
@@ -1,3 +1,4 @@
+import gleam/result
import gleam/int
import gleam/list
import gleam/map.{Map}
@@ -1295,7 +1296,7 @@ fn do_try_fold(
case continuation() {
Stop -> Ok(accumulator)
Continue(elem, next) -> {
- try accumulator = f(accumulator, elem)
+ use accumulator <- result.then(f(accumulator, elem))
do_try_fold(next, f, accumulator)
}
}
diff --git a/src/gleam/list.gleam b/src/gleam/list.gleam
index 7338f6b..5f116c3 100644
--- a/src/gleam/list.gleam
+++ b/src/gleam/list.gleam
@@ -651,7 +651,7 @@ pub fn flatten(lists: List(List(a))) -> List(a) {
do_flatten(lists, [])
}
-/// Maps the list with the given function and then flattens the result.
+/// Maps the list with the given function and then flattens it.
///
/// ## Examples
///
@@ -761,10 +761,11 @@ pub fn try_fold(
) -> Result(acc, e) {
case collection {
[] -> Ok(accumulator)
- [first, ..rest] -> {
- try accumulator = fun(accumulator, first)
- try_fold(rest, accumulator, fun)
- }
+ [first, ..rest] ->
+ case fun(accumulator, first) {
+ Ok(result) -> try_fold(rest, result, fun)
+ Error(_) as error -> error
+ }
}
}
@@ -1748,7 +1749,7 @@ fn do_chunk(
}
/// Returns a list of chunks in which
-/// the result of calling `f` on each element is the same.
+/// the return value of calling `f` on each element is the same.
///
/// ## Examples
///
diff --git a/src/gleam/string.gleam b/src/gleam/string.gleam
index d196661..e12983d 100644
--- a/src/gleam/string.gleam
+++ b/src/gleam/string.gleam
@@ -857,7 +857,7 @@ pub fn from_utf_codepoints(utf_codepoints: List(UtfCodepoint)) -> String {
if erlang {
fn do_from_utf_codepoints(utf_codepoints: List(UtfCodepoint)) -> String {
- assert Ok(string) =
+ let assert Ok(string) =
do_from_utf_codepoints_impl(utf_codepoints, bit_string.from_string(""))
|> bit_string.to_string
string