module Darcs.Patch.Show
( ShowPatchBasic(..)
, displayPatch
, ShowPatchFor(..)
, ShowPatch(..)
, ShowContextPatch(..)
, formatFileName
) where
import Prelude ()
import Darcs.Prelude
import qualified Data.ByteString.Char8 as BC ( unpack )
import Darcs.Patch.Apply ( ApplyState )
import Darcs.Patch.ApplyMonad ( ApplyMonad )
import Darcs.Patch.Format ( FileNameFormat(..) )
import Darcs.Patch.Witnesses.Ordered ( FL, mapFL )
import Darcs.Util.ByteString ( packStringToUTF8, encodeLocale )
import Darcs.Util.English ( plural, Noun(Noun) )
import Darcs.Util.Path ( FileName, encodeWhite, fn2fp )
import Darcs.Util.Printer ( Doc, vcat, text, packedString )
data ShowPatchFor = ForDisplay | ForStorage
displayPatch :: ShowPatchBasic p => p wX wY -> Doc
displayPatch :: p wX wY -> Doc
displayPatch p :: p wX wY
p = ShowPatchFor -> p wX wY -> Doc
forall (p :: * -> * -> *) wX wY.
ShowPatchBasic p =>
ShowPatchFor -> p wX wY -> Doc
showPatch ShowPatchFor
ForDisplay p wX wY
p
class ShowPatchBasic p where
showPatch :: ShowPatchFor -> p wX wY -> Doc
class ShowPatchBasic p => ShowContextPatch p where
showContextPatch :: (ApplyMonad (ApplyState p) m)
=> ShowPatchFor -> p wX wY -> m Doc
class ShowPatchBasic p => ShowPatch p where
showNicely :: p wX wY -> Doc
showNicely = ShowPatchFor -> p wX wY -> Doc
forall (p :: * -> * -> *) wX wY.
ShowPatchBasic p =>
ShowPatchFor -> p wX wY -> Doc
showPatch ShowPatchFor
ForDisplay
description :: p wX wY -> Doc
description = ShowPatchFor -> p wX wY -> Doc
forall (p :: * -> * -> *) wX wY.
ShowPatchBasic p =>
ShowPatchFor -> p wX wY -> Doc
showPatch ShowPatchFor
ForDisplay
summary :: p wX wY -> Doc
summaryFL :: FL p wX wY -> Doc
summaryFL = [Doc] -> Doc
vcat ([Doc] -> Doc) -> (FL p wX wY -> [Doc]) -> FL p wX wY -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall wW wZ. p wW wZ -> Doc) -> FL p wX wY -> [Doc]
forall (a :: * -> * -> *) b wX wY.
(forall wW wZ. a wW wZ -> b) -> FL a wX wY -> [b]
mapFL forall wW wZ. p wW wZ -> Doc
forall (p :: * -> * -> *) wW wZ. ShowPatch p => p wW wZ -> Doc
summary
thing :: p wX wY -> String
thing _ = "patch"
things :: p wX wY -> String
things x :: p wX wY
x = Noun -> ShowS
forall a. Countable a => a -> ShowS
plural (String -> Noun
Noun (String -> Noun) -> String -> Noun
forall a b. (a -> b) -> a -> b
$ p wX wY -> String
forall (p :: * -> * -> *) wX wY. ShowPatch p => p wX wY -> String
thing p wX wY
x) ""
formatFileName :: FileNameFormat -> FileName -> Doc
formatFileName :: FileNameFormat -> FileName -> Doc
formatFileName OldFormat = ByteString -> Doc
packedString (ByteString -> Doc) -> (FileName -> ByteString) -> FileName -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> ByteString
packStringToUTF8 (String -> ByteString)
-> (FileName -> String) -> FileName -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> String
BC.unpack (ByteString -> String)
-> (FileName -> ByteString) -> FileName -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
String -> ByteString
encodeLocale (String -> ByteString)
-> (FileName -> String) -> FileName -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
encodeWhite ShowS -> (FileName -> String) -> FileName -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FileName -> String
fn2fp
formatFileName NewFormat = String -> Doc
text (String -> Doc) -> (FileName -> String) -> FileName -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShowS
encodeWhite ShowS -> (FileName -> String) -> FileName -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FileName -> String
fn2fp
formatFileName UserFormat = String -> Doc
text (String -> Doc) -> (FileName -> String) -> FileName -> Doc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FileName -> String
fn2fp