aboutsummaryrefslogtreecommitdiff
path: root/Logs/Chunk/Pure.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Logs/Chunk/Pure.hs')
-rw-r--r--Logs/Chunk/Pure.hs32
1 files changed, 32 insertions, 0 deletions
diff --git a/Logs/Chunk/Pure.hs b/Logs/Chunk/Pure.hs
new file mode 100644
index 000000000..09e871c38
--- /dev/null
+++ b/Logs/Chunk/Pure.hs
@@ -0,0 +1,32 @@
+{- Chunk logs, pure operations.
+ -
+ - Copyright 2014 Joey Hess <joey@kitenet.net>
+ -
+ - Licensed under the GNU GPL version 3 or higher.
+ -}
+
+module Logs.Chunk.Pure where
+
+import Common.Annex
+import Logs.MapLog
+import Data.Int
+
+type ChunkSize = Int64
+
+type ChunkCount = Integer
+
+type ChunkLog = MapLog (UUID, ChunkSize) ChunkCount
+
+parseLog :: String -> ChunkLog
+parseLog = parseMapLog fieldparser valueparser
+ where
+ fieldparser s =
+ let (u,sz) = separate (== ':') s
+ in (,) <$> pure (toUUID u) <*> readish sz
+ valueparser = readish
+
+showLog :: ChunkLog -> String
+showLog = showMapLog fieldshower valueshower
+ where
+ fieldshower (u, sz) = fromUUID u ++ ':' : show sz
+ valueshower = show