diff options
Diffstat (limited to 'Plugins/Monitors/Common.hs')
-rw-r--r-- | Plugins/Monitors/Common.hs | 54 |
1 files changed, 25 insertions, 29 deletions
diff --git a/Plugins/Monitors/Common.hs b/Plugins/Monitors/Common.hs index 6a59722..78f6b0e 100644 --- a/Plugins/Monitors/Common.hs +++ b/Plugins/Monitors/Common.hs @@ -185,42 +185,38 @@ doConfigOptions (o:oo) = do let next = doConfigOptions oo nz s = let x = read s in max 0 x bool = (`elem` ["True", "true", "Yes", "yes", "On", "on"]) - case o of - High h -> setConfigValue (read h) high >> next - Low l -> setConfigValue (read l) low >> next - HighColor hc -> setConfigValue (Just hc) highColor >> next - NormalColor nc -> setConfigValue (Just nc) normalColor >> next - LowColor lc -> setConfigValue (Just lc) lowColor >> next - Template t -> setConfigValue t template >> next - PercentPad p -> setConfigValue (nz p) ppad >> next - MinWidth mn -> setConfigValue (nz mn) minWidth >> next - MaxWidth mx -> setConfigValue (nz mx) maxWidth >> next - Width w -> setConfigValue (nz w) minWidth >> - setConfigValue (nz w) maxWidth >> next - PadChars pc -> setConfigValue pc padChars >> next - PadAlign a -> setConfigValue ("r" `isPrefixOf` a) padRight >> next - BarBack bb -> setConfigValue bb barBack >> next - BarFore bf -> setConfigValue bf barFore >> next - BarWidth bw -> setConfigValue (nz bw) barWidth >> next - UseSuffix up -> setConfigValue (bool up) useSuffix >> next + (case o of + High h -> setConfigValue (read h) high + Low l -> setConfigValue (read l) low + HighColor c -> setConfigValue (Just c) highColor + NormalColor c -> setConfigValue (Just c) normalColor + LowColor c -> setConfigValue (Just c) lowColor + Template t -> setConfigValue t template + PercentPad p -> setConfigValue (nz p) ppad + MinWidth w -> setConfigValue (nz w) minWidth + MaxWidth w -> setConfigValue (nz w) maxWidth + Width w -> setConfigValue (nz w) minWidth >> + setConfigValue (nz w) maxWidth + PadChars s -> setConfigValue s padChars + PadAlign a -> setConfigValue ("r" `isPrefixOf` a) padRight + BarBack s -> setConfigValue s barBack + BarFore s -> setConfigValue s barFore + BarWidth w -> setConfigValue (nz w) barWidth + UseSuffix u -> setConfigValue (bool u) useSuffix) >> next runM :: [String] -> IO MConfig -> ([String] -> Monitor String) -> Int -> (String -> IO ()) -> IO () -runM args conf action r cb = go - where go = do - c <- conf - let ac = doArgs args action - he = return . (++) "error: " . show . flip asTypeOf (undefined::SomeException) - s <- handle he $ runReaderT ac c - cb s - tenthSeconds r - go +runM args conf action r cb = loop + where ac = doArgs args action + runAc c = handle (return . showException) (runReaderT ac c) + loop = conf >>= runAc >>= cb >> tenthSeconds r >> loop + +showException :: SomeException -> String +showException = ("error: "++) . show . flip asTypeOf undefined io :: IO a -> Monitor a io = liftIO - - -- $parsers runP :: Parser [a] -> String -> IO [a] |