aboutsummaryrefslogtreecommitdiff
path: root/src/client/elm/Utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/elm/Utils')
-rw-r--r--src/client/elm/Utils/Dict.elm11
-rw-r--r--src/client/elm/Utils/Either.elm9
-rw-r--r--src/client/elm/Utils/Maybe.elm27
-rw-r--r--src/client/elm/Utils/Validation.elm23
4 files changed, 70 insertions, 0 deletions
diff --git a/src/client/elm/Utils/Dict.elm b/src/client/elm/Utils/Dict.elm
new file mode 100644
index 0000000..dc01b17
--- /dev/null
+++ b/src/client/elm/Utils/Dict.elm
@@ -0,0 +1,11 @@
+module Utils.Dict
+ ( mapValues
+ ) where
+
+import Dict as Dict exposing (..)
+
+mapValues : (a -> b) -> Dict comparable a -> Dict comparable b
+mapValues f = Dict.fromList << List.map (onSecond f) << Dict.toList
+
+onSecond : (a -> b) -> (comparable, a) -> (comparable, b)
+onSecond f tuple = case tuple of (x, y) -> (x, f y)
diff --git a/src/client/elm/Utils/Either.elm b/src/client/elm/Utils/Either.elm
new file mode 100644
index 0000000..10c40e3
--- /dev/null
+++ b/src/client/elm/Utils/Either.elm
@@ -0,0 +1,9 @@
+module Utils.Either
+ ( toMaybeError
+ ) where
+
+toMaybeError : Result a b -> Maybe a
+toMaybeError result =
+ case result of
+ Ok _ -> Nothing
+ Err x -> Just x
diff --git a/src/client/elm/Utils/Maybe.elm b/src/client/elm/Utils/Maybe.elm
new file mode 100644
index 0000000..d954ae0
--- /dev/null
+++ b/src/client/elm/Utils/Maybe.elm
@@ -0,0 +1,27 @@
+module Utils.Maybe
+ ( isJust
+ , catMaybes
+ , maybeToList
+ ) where
+
+isJust : Maybe a -> Bool
+isJust maybe =
+ case maybe of
+ Just _ -> True
+ Nothing -> False
+
+catMaybes : List (Maybe a) -> List a
+catMaybes =
+ List.foldr
+ (\mb xs ->
+ case mb of
+ Just x -> x :: xs
+ Nothing -> xs
+ )
+ []
+
+maybeToList : Maybe a -> List a
+maybeToList mb =
+ case mb of
+ Just a -> [a]
+ Nothing -> []
diff --git a/src/client/elm/Utils/Validation.elm b/src/client/elm/Utils/Validation.elm
new file mode 100644
index 0000000..b9bccb3
--- /dev/null
+++ b/src/client/elm/Utils/Validation.elm
@@ -0,0 +1,23 @@
+module Utils.Validation
+ ( validateNonEmpty
+ , validateNumber
+ ) where
+
+import String
+import Reads exposing (readInt)
+
+validateNonEmpty : String -> String -> Result String String
+validateNonEmpty message str =
+ if String.isEmpty str
+ then Err message
+ else Ok str
+
+validateNumber : String -> (Int -> Bool) -> String -> Result String Int
+validateNumber message numberForm str =
+ case readInt str of
+ Just number ->
+ if numberForm number
+ then Ok number
+ else Err message
+ Nothing ->
+ Err message