diff options
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) |