diff options
author | Ahmad Sattar <thehabbos007@gmail.com> | 2020-06-18 18:59:58 +0200 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2020-06-18 21:55:49 +0100 |
commit | 7198eab42221bd99a0aa82795688aecc27533bc1 (patch) | |
tree | 3d68ee963f8fce5c5f0bd69090bd80e6872f9d1e /src | |
parent | 4847d930304dc6873d01da3fc290650b21c9a9bc (diff) | |
download | gleam_stdlib-7198eab42221bd99a0aa82795688aecc27533bc1.tar.gz gleam_stdlib-7198eab42221bd99a0aa82795688aecc27533bc1.zip |
Option or function
Diffstat (limited to 'src')
-rw-r--r-- | src/gleam/option.gleam | 23 | ||||
-rw-r--r-- | src/gleam/uri.gleam | 9 |
2 files changed, 24 insertions, 8 deletions
diff --git a/src/gleam/option.gleam b/src/gleam/option.gleam index 2c01b4a..c1a456e 100644 --- a/src/gleam/option.gleam +++ b/src/gleam/option.gleam @@ -157,3 +157,26 @@ pub fn then(option: Option(a), apply fun: fn(a) -> Option(b)) -> Option(b) { None -> None } } + +/// Return the first value if it is Some, otherwise return the second value. +/// +/// ## Examples +/// +/// > or(Some(1), Some(2)) +/// Some(1) +/// +/// > or(Some(1), None) +/// Some(1) +/// +/// > or(None, Some(2)) +/// Some(2) +/// +/// > or(None, None) +/// None +/// +pub fn or(first: Option(a), second: Option(a)) -> Option(a) { + case first { + Some(_) -> first + None -> second + } +} diff --git a/src/gleam/uri.gleam b/src/gleam/uri.gleam index fbd95ec..d3cf2e6 100644 --- a/src/gleam/uri.gleam +++ b/src/gleam/uri.gleam @@ -187,13 +187,6 @@ pub fn origin(uri: Uri) -> Result(String, Nil) { } } -fn option_or(first: Option(a), second: Option(a)) -> Option(a) { - case first { - Some(_) -> first - None -> second - } -} - fn drop_last(elements) { let tuple(keep, _last) = list.split(elements, list.length(elements) - 1) keep @@ -250,7 +243,7 @@ pub fn merge(base: Uri, relative: Uri) -> Result(Uri, Nil) { base.host, base.port, base.path, - option_or(relative.query, base.query), + option.or(relative.query, base.query), relative.fragment, ) Ok(resolved) |