mirror of
https://github.com/TheAnachronism/docspell.git
synced 2024-11-13 02:31:10 +00:00
76 lines
1.1 KiB
Elm
76 lines
1.1 KiB
Elm
{-
|
|
Copyright 2020 Eike K. & Contributors
|
|
|
|
SPDX-License-Identifier: AGPL-3.0-or-later
|
|
-}
|
|
|
|
|
|
module Util.Maybe exposing
|
|
( filter
|
|
, fromString
|
|
, isEmpty
|
|
, nonEmpty
|
|
, or
|
|
, withDefault
|
|
)
|
|
|
|
|
|
nonEmpty : Maybe a -> Bool
|
|
nonEmpty ma =
|
|
not (isEmpty ma)
|
|
|
|
|
|
isEmpty : Maybe a -> Bool
|
|
isEmpty ma =
|
|
ma == Nothing
|
|
|
|
|
|
withDefault : Maybe a -> Maybe a -> Maybe a
|
|
withDefault ma1 ma2 =
|
|
if isEmpty ma2 then
|
|
ma1
|
|
|
|
else
|
|
ma2
|
|
|
|
|
|
or : List (Maybe a) -> Maybe a
|
|
or listma =
|
|
case listma of
|
|
[] ->
|
|
Nothing
|
|
|
|
el :: els ->
|
|
case el of
|
|
Just _ ->
|
|
el
|
|
|
|
Nothing ->
|
|
or els
|
|
|
|
|
|
fromString : String -> Maybe String
|
|
fromString str =
|
|
let
|
|
s =
|
|
String.trim str
|
|
in
|
|
if s == "" then
|
|
Nothing
|
|
|
|
else
|
|
Just str
|
|
|
|
|
|
filter : (a -> Bool) -> Maybe a -> Maybe a
|
|
filter predicate ma =
|
|
let
|
|
check v =
|
|
if predicate v then
|
|
Just v
|
|
|
|
else
|
|
Nothing
|
|
in
|
|
Maybe.andThen check ma
|