air-extra 2012.12.18 → 2013.6.13
raw patch · 2 files changed
+50/−2 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Air.Extra: halt :: IO ()
+ Air.Extra: line_buffer :: IO ()
+ Air.Extra: now_in_zoned_time :: IO String
+ Air.Extra: safe_spec :: IO () -> IO ExitCode
+ Air.Extra: with_spec :: IO () -> IO b -> IO ()
Files
- air-extra.cabal +1/−1
- src/Air/Extra.hs +49/−1
air-extra.cabal view
@@ -1,5 +1,5 @@ Name: air-extra-Version: 2012.12.18+Version: 2013.6.13 Build-type: Simple Synopsis: air-extra Description: An alternative Haskell Prelude library, extra helpers
src/Air/Extra.hs view
@@ -8,8 +8,10 @@ import Data.Time.Clock.POSIX import Air.Light import Numeric-import Prelude hiding ((.), (^), (>), (<), (/), elem, foldl)+import Prelude hiding ((.), (^), (>), (<), (/), elem, foldl, (-)) import System.Directory+import System.Exit (ExitCode(..))+import qualified Control.Exception as E import System.IO import System.Locale (defaultTimeLocale) import System.Time@@ -19,6 +21,7 @@ import qualified Data.List as L import qualified Prelude as Prelude import qualified System.IO.Unsafe as Unsafe+import Control.Monad (forever) -- Parallel@@ -128,6 +131,19 @@ simple_time_format :: String simple_time_format = "%Y-%m-%d %H:%M:%S %Z" +now_in_zoned_time :: IO String+now_in_zoned_time = do+ timestamp <- now++ tz <- getCurrentTimeZone++ let zoned_time = utcToZonedTime tz timestamp++ let time_str = formatTime defaultTimeLocale simple_time_format zoned_time+ + return time_str++ parse_time :: String -> String -> UTCTime parse_time = readTime defaultTimeLocale @@ -152,3 +168,35 @@ b2u, u2b :: String -> String b2u = Codec.decodeString u2b = Codec.encodeString+++-- IO+line_buffer :: IO ()+line_buffer = do+ hSetBuffering stdout LineBuffering+ hSetBuffering stderr LineBuffering+++-- Continuse Integration++safe_spec :: IO () -> IO ExitCode+safe_spec spec = E.handle (\e -> return (e :: ExitCode)) - do+ spec+ return ExitSuccess++halt :: IO ()+halt = forever - sleep 1+ +with_spec :: IO () -> IO b -> IO ()+with_spec spec io = do+ exit_code <- safe_spec spec+ + case exit_code of+ ExitSuccess -> do+ fork - io+ _ ->+ return ()+ + halt+ +