From 16f199b381d9be2996318a8dd1c474006a008957 Mon Sep 17 00:00:00 2001 From: Krzysztof Kosciuszkiewicz Date: Thu, 19 Jul 2007 12:15:05 +0200 Subject: Moved battery line parsing into the Maybe monad. darcs-hash:20070719101505-ba08c-99b2005230d97d19f73c7dfdb7ba328bc4046063.gz --- Plugins/Monitors/Batt.hs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'Plugins') diff --git a/Plugins/Monitors/Batt.hs b/Plugins/Monitors/Batt.hs index 4341452..44ee378 100644 --- a/Plugins/Monitors/Batt.hs +++ b/Plugins/Monitors/Batt.hs @@ -51,14 +51,13 @@ mkMap :: B.ByteString -> B.ByteString -> BattMap mkMap a b = M.fromList . mapMaybe parseLine $ concatMap B.lines [a, b] parseLine :: B.ByteString -> Maybe (String, Integer) -parseLine s = +parseLine s = do let (k, r) = B.break (==':') s - (v, _) = B.span (isDigit) (B.tail r) + (_, r') = B.span (isSpace) (B.tail r) + (v, _) = B.span (isDigit) r' (ks, vs) = (B.unpack k, B.unpack v) - in case (ks, vs) of - ([], _) -> Nothing - (_, []) -> Nothing - _ -> Just (ks, read vs) + guard $ all (> 0) (map B.length [r, k, v]) + return (ks, read vs) parseBATT :: IO Float parseBATT = -- cgit v1.2.3