diff options
Diffstat (limited to 'src/server/Validation.hs')
-rw-r--r-- | src/server/Validation.hs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/server/Validation.hs b/src/server/Validation.hs new file mode 100644 index 0000000..9035be7 --- /dev/null +++ b/src/server/Validation.hs @@ -0,0 +1,23 @@ +module Validation + ( nonEmpty + , number + ) where + +import Data.Text (Text) +import qualified Data.Text as T + +nonEmpty :: a -> Text -> Either a Text +nonEmpty x str = + if T.null str + then Left x + else Right str + +number :: x -> (Int -> Bool) -> Text -> Either x Int +number x numberForm str = + case reads (T.unpack str) :: [(Int, String)] of + (number, _) : _ -> + if numberForm number + then Right number + else Left x + _ -> + Left x |