#include "gadts.h"
module Darcs.PrintPatch ( printPatch, contextualPrintPatch,
printPatchPager, printFriendly ) where
import Darcs.Patch ( Patchy, showContextPatch, showPatch )
import Darcs.Patch.Apply ( ApplyState )
import Storage.Hashed.Tree( Tree )
import Storage.Hashed.Monad( virtualTreeIO )
import Darcs.Arguments ( DarcsFlag, showFriendly )
import Darcs.Flags ( isUnified )
import Printer ( putDocLnWith )
import Darcs.ColorPrinter ( fancyPrinters )
import Darcs.External ( viewDocWith )
printFriendly :: (Patchy p, ApplyState p ~ Tree) => (Maybe (Tree IO)) -> [DarcsFlag] -> p C(x y) -> IO ()
printFriendly (Just pristine) opts p
| isUnified opts = virtualTreeIO (showContextPatch p) pristine >>= putDocLnWith fancyPrinters . fst
printFriendly _ opts p = putDocLnWith fancyPrinters $ showFriendly opts p
printPatch :: Patchy p => p C(x y) -> IO ()
printPatch p = putDocLnWith fancyPrinters $ showPatch p
printPatchPager :: Patchy p => p C(x y) -> IO ()
printPatchPager p = viewDocWith fancyPrinters $ showPatch p
contextualPrintPatch :: (Patchy p, ApplyState p ~ Tree) => Tree IO -> p C(x y) -> IO ()
contextualPrintPatch s p = virtualTreeIO (showContextPatch p) s >>= putDocLnWith fancyPrinters . fst