]> gitweb @ CieloNegro.org - blackboard-dns.git/blob - DDNS/Utils.hs
b1b5687b674dece01e91071cbbfecf9c19e2481b
[blackboard-dns.git] / DDNS / Utils.hs
1 module DDNS.Utils
2     ( trim
3     , getInputLine'
4     , getInputLineWithDefault
5     )
6     where
7
8 import           System.Console.Haskeline
9
10
11 trim :: Maybe String -> Maybe String
12 trim Nothing   = Nothing
13 trim (Just xs) = case trimTail $ trimHead xs of
14                    "" -> Nothing
15                    ys -> Just ys
16     where
17       trimHead []       = []
18       trimHead (' ':ys) = trimHead ys
19       trimHead ys       = ys
20
21       trimTail = reverse . trimHead . reverse
22
23 getInputLine' :: MonadException m => String -> InputT m String
24 getInputLine' prompt
25     = do ret <- getInputLine prompt
26          case trim ret of
27            Just ret' -> return ret'
28            Nothing   -> fail "No input"
29
30 getInputLineWithDefault :: MonadException m => String -> String -> InputT m String
31 getInputLineWithDefault prompt defaultStr
32     = do ret <- getInputLine prompt
33          case trim ret of
34            Just ret' -> return ret'
35            Nothing   -> return defaultStr