{-# OPTIONS_GHC -fno-warn-orphans #-}
module Darcs.Patch.Prim.V1.Details
    ()
    where

import Prelude ()
import Darcs.Prelude

import Darcs.Patch.Prim.Class ( PrimDetails(..) )
import Darcs.Patch.Prim.V1.Core
    ( Prim(..), FilePatchType(..), DirPatchType(..) )
import Darcs.Patch.SummaryData ( SummDetail(..), SummOp(..) )


instance PrimDetails Prim where
  summarizePrim :: Prim wX wY -> [SummDetail]
summarizePrim (FP f :: FileName
f (Hunk _ o :: [ByteString]
o n :: [ByteString]
n)) = [SummOp -> FileName -> Int -> Int -> Int -> SummDetail
SummFile SummOp
SummMod FileName
f ([ByteString] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [ByteString]
o) ([ByteString] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [ByteString]
n) 0]
  summarizePrim (FP f :: FileName
f (Binary _ _)) = [SummOp -> FileName -> Int -> Int -> Int -> SummDetail
SummFile SummOp
SummMod FileName
f 0 0 0]
  summarizePrim (FP f :: FileName
f AddFile) = [SummOp -> FileName -> Int -> Int -> Int -> SummDetail
SummFile SummOp
SummAdd FileName
f 0 0 0]
  summarizePrim (FP f :: FileName
f RmFile) = [SummOp -> FileName -> Int -> Int -> Int -> SummDetail
SummFile SummOp
SummRm FileName
f 0 0 0]
  summarizePrim (FP f :: FileName
f (TokReplace{})) = [SummOp -> FileName -> Int -> Int -> Int -> SummDetail
SummFile SummOp
SummMod FileName
f 0 0 1]
  summarizePrim (DP d :: FileName
d AddDir) = [FileName -> SummDetail
SummAddDir FileName
d]
  summarizePrim (DP d :: FileName
d RmDir) = [FileName -> SummDetail
SummRmDir FileName
d]
  summarizePrim (Move f1 :: FileName
f1 f2 :: FileName
f2) = [FileName -> FileName -> SummDetail
SummMv FileName
f1 FileName
f2]
  summarizePrim (ChangePref{}) = [SummDetail
SummNone]