This commit is contained in:
Joey Hess 2015-01-28 13:55:46 -04:00
parent ba3825441c
commit 037d86e046
2 changed files with 7 additions and 2 deletions

View file

@ -18,8 +18,7 @@ import Types.Difference
import Logs.UUIDBased import Logs.UUIDBased
parseDifferencesLog :: String -> (M.Map UUID Differences) parseDifferencesLog :: String -> (M.Map UUID Differences)
parseDifferencesLog = simpleMap parseDifferencesLog = simpleMap . parseLog (Just . readDifferences)
. parseLog (Just . maybe UnknownDifferences Differences . readish)
-- The sum of all recorded differences, across all UUIDs. -- The sum of all recorded differences, across all UUIDs.
allDifferences :: M.Map UUID Differences -> Differences allDifferences :: M.Map UUID Differences -> Differences

View file

@ -8,12 +8,14 @@
module Types.Difference ( module Types.Difference (
Difference(..), Difference(..),
Differences(..), Differences(..),
readDifferences,
getDifferences, getDifferences,
differenceConfigKey, differenceConfigKey,
differenceConfigVal, differenceConfigVal,
hasDifference, hasDifference,
) where ) where
import Utility.PartialPrelude
import qualified Git import qualified Git
import qualified Git.Config import qualified Git.Config
@ -55,9 +57,13 @@ instance Monoid Differences where
mappend (Differences l1) (Differences l2) = Differences (canon (l1 ++ l2)) mappend (Differences l1) (Differences l2) = Differences (canon (l1 ++ l2))
mappend _ _ = UnknownDifferences mappend _ _ = UnknownDifferences
-- Canonical form, allowing comparison.
canon :: [Difference] -> [Difference] canon :: [Difference] -> [Difference]
canon = nub . sort canon = nub . sort
readDifferences :: String -> Differences
readDifferences = maybe UnknownDifferences Differences . readish
getDifferences :: Git.Repo -> Differences getDifferences :: Git.Repo -> Differences
getDifferences r = Differences $ catMaybes $ getDifferences r = Differences $ catMaybes $
map getmaybe [minBound .. maxBound] map getmaybe [minBound .. maxBound]