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

import Prelude ()
import Darcs.Prelude

import Darcs.Patch.Show ( ShowPatchBasic(..), ShowPatchFor(..) )
import Darcs.Patch.V1.Core ( RepoPatchV1(..) )

import Darcs.Util.Printer ( Doc, text, blueText, ($$), (<+>) )


showPatch_ :: ShowPatchBasic prim => prim wX wY -> Doc
showPatch_ :: prim wX wY -> Doc
showPatch_ = ShowPatchFor -> prim wX wY -> Doc
forall (p :: * -> * -> *) wX wY.
ShowPatchBasic p =>
ShowPatchFor -> p wX wY -> Doc
showPatch ShowPatchFor
ForDisplay

showMerger :: ShowPatchBasic prim
           => ShowPatchFor
           -> String
           -> RepoPatchV1 prim wA wB
           -> RepoPatchV1 prim wD wE
           -> Doc
showMerger :: ShowPatchFor
-> String
-> RepoPatchV1 prim wA wB
-> RepoPatchV1 prim wD wE
-> Doc
showMerger f :: ShowPatchFor
f merger_name :: String
merger_name p1 :: RepoPatchV1 prim wA wB
p1 p2 :: RepoPatchV1 prim wD wE
p2 =
    String -> Doc
blueText String
merger_name Doc -> Doc -> Doc
<+> String -> Doc
text "0.0" Doc -> Doc -> Doc
<+> String -> Doc
blueText "("
                           Doc -> Doc -> Doc
$$ ShowPatchFor -> RepoPatchV1 prim wA wB -> Doc
forall (p :: * -> * -> *) wX wY.
ShowPatchBasic p =>
ShowPatchFor -> p wX wY -> Doc
showPatch ShowPatchFor
f RepoPatchV1 prim wA wB
p1
                           Doc -> Doc -> Doc
$$ ShowPatchFor -> RepoPatchV1 prim wD wE -> Doc
forall (p :: * -> * -> *) wX wY.
ShowPatchBasic p =>
ShowPatchFor -> p wX wY -> Doc
showPatch ShowPatchFor
f RepoPatchV1 prim wD wE
p2
                           Doc -> Doc -> Doc
$$ String -> Doc
blueText ")"

instance ShowPatchBasic prim => ShowPatchBasic (RepoPatchV1 prim) where
    showPatch :: ShowPatchFor -> RepoPatchV1 prim wX wY -> Doc
showPatch f :: ShowPatchFor
f (PP p :: prim wX wY
p) = ShowPatchFor -> prim wX wY -> Doc
forall (p :: * -> * -> *) wX wY.
ShowPatchBasic p =>
ShowPatchFor -> p wX wY -> Doc
showPatch ShowPatchFor
f prim wX wY
p
    showPatch f :: ShowPatchFor
f (Merger _ _ p1 :: RepoPatchV1 prim wC wB
p1 p2 :: RepoPatchV1 prim wC wD
p2) = ShowPatchFor
-> String
-> RepoPatchV1 prim wC wB
-> RepoPatchV1 prim wC wD
-> Doc
forall (prim :: * -> * -> *) wA wB wD wE.
ShowPatchBasic prim =>
ShowPatchFor
-> String
-> RepoPatchV1 prim wA wB
-> RepoPatchV1 prim wD wE
-> Doc
showMerger ShowPatchFor
f "merger" RepoPatchV1 prim wC wB
p1 RepoPatchV1 prim wC wD
p2
    showPatch f :: ShowPatchFor
f (Regrem _ _ p1 :: RepoPatchV1 prim wC wB
p1 p2 :: RepoPatchV1 prim wC wA
p2) = ShowPatchFor
-> String
-> RepoPatchV1 prim wC wB
-> RepoPatchV1 prim wC wA
-> Doc
forall (prim :: * -> * -> *) wA wB wD wE.
ShowPatchBasic prim =>
ShowPatchFor
-> String
-> RepoPatchV1 prim wA wB
-> RepoPatchV1 prim wD wE
-> Doc
showMerger ShowPatchFor
f "regrem" RepoPatchV1 prim wC wB
p1 RepoPatchV1 prim wC wA
p2