-
Notifications
You must be signed in to change notification settings - Fork 0
/
errors.gleam
54 lines (48 loc) · 1004 Bytes
/
errors.gleam
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import gleam/result
import gleam/string
import gleam/io
pub fn map_messages(
result: Result(a, b),
success_message: String,
error_message: String,
) -> Result(String, String) {
result
|> result.map_error(fn(error) {
"Error - " <> error_message <> ": " <> string.inspect(error)
})
|> result.replace(success_message)
}
pub fn map_error(
result: Result(a, b),
error_message: String,
) -> Result(a, String) {
result
|> result.map_error(fn(error) {
error_message <> ": " <> string.inspect(error)
})
}
pub fn print_result(result: Result(String, String)) {
result
|> result.unwrap_both
|> io.println
result
}
pub fn print_error(result: Result(a, String)) {
result
|> result.map_error(fn(err) {
io.println(err)
err
})
}
pub fn assert_ok(result: Result(a, String)) {
let assert Ok(value) =
result
|> result.map_error(fn(err) {
halt(1)
err
})
value
}
@target(erlang)
@external(erlang, "erlang", "halt")
fn halt(a: Int) -> Nil