summaryrefslogtreecommitdiff
path: root/Logs/Difference
diff options
context:
space:
mode:
Diffstat (limited to 'Logs/Difference')
-rw-r--r--Logs/Difference/Pure.hs26
1 files changed, 26 insertions, 0 deletions
diff --git a/Logs/Difference/Pure.hs b/Logs/Difference/Pure.hs
new file mode 100644
index 000000000..76d995a01
--- /dev/null
+++ b/Logs/Difference/Pure.hs
@@ -0,0 +1,26 @@
+{- git-annex difference log, pure functions
+ -
+ - Copyright 2015 Joey Hess <id@joeyh.name>
+ -
+ - Licensed under the GNU GPL version 3 or higher.
+ -}
+
+module Logs.Difference.Pure (
+ allDifferences,
+ parseDifferencesLog,
+) where
+
+import Data.Monoid
+import qualified Data.Map as M
+
+import Common.Annex
+import Types.Difference
+import Logs.UUIDBased
+
+parseDifferencesLog :: String -> (M.Map UUID Differences)
+parseDifferencesLog = simpleMap
+ . parseLog (Just . fromMaybe UnknownDifferences . readish)
+
+-- The sum of all recorded differences, across all UUIDs.
+allDifferences :: M.Map UUID Differences -> Differences
+allDifferences = mconcat . M.elems