{-# OPTIONS_GHC -fno-warn-orphans -fno-warn-unused-imports #-}
module Darcs.Patch.Viewing
( showContextHunk
) where
import Darcs.Prelude hiding ( readFile )
import Control.Applicative( (<$>) )
import qualified Data.ByteString as B ( null )
import Darcs.Util.Tree ( Tree )
import Darcs.Util.Tree.Monad ( virtualTreeMonad )
import Darcs.Patch.Apply ( Apply(..) )
import Darcs.Patch.ApplyMonad ( getApplyState,
ApplyMonad(..), ApplyMonadTree(..), toTree )
import Darcs.Patch.FileHunk ( IsHunk(..), FileHunk(..), showFileHunk )
import Darcs.Patch.Format ( PatchListFormat(..), ListFormat(..),
FileNameFormat(..) )
import Darcs.Patch.Show
( ShowPatchBasic(..), ShowPatch(..)
, formatFileName, ShowPatchFor(..), ShowContextPatch(..) )
import Darcs.Patch.Witnesses.Ordered ( RL(..), FL(..), mapFL, mapFL_FL,
reverseRL, concatFL )
import Darcs.Util.ByteString ( linesPS )
import Darcs.Util.Printer ( Doc, empty, vcat, text, blueText, Color(Cyan, Magenta),
lineColor, ($$), (<+>), prefix, userchunkPS )
showContextSeries :: forall p m wX wY . (Apply p, ShowContextPatch p, IsHunk p,
ApplyMonad (ApplyState p) m)
=> ShowPatchFor -> FileNameFormat -> FL p wX wY -> m Doc
showContextSeries :: forall (p :: * -> * -> *) (m :: * -> *) wX wY.
(Apply p, ShowContextPatch p, IsHunk p,
ApplyMonad (ApplyState p) m) =>
ShowPatchFor -> FileNameFormat -> FL p wX wY -> m Doc
showContextSeries ShowPatchFor
use FileNameFormat
fmt = forall wWw wXx wYy.
Maybe (FileHunk wWw wXx) -> FL p wXx wYy -> m Doc
scs forall a. Maybe a
Nothing
where
scs :: forall wWw wXx wYy . Maybe (FileHunk wWw wXx) -> FL p wXx wYy -> m Doc
scs :: forall wWw wXx wYy.
Maybe (FileHunk wWw wXx) -> FL p wXx wYy -> m Doc
scs Maybe (FileHunk wWw wXx)
pold (p wXx wY
p :>: FL p wY wYy
ps) = do
(()
_, ApplyState p (ApplyMonadBase m)
s') <- forall (state :: (* -> *) -> *) (m :: * -> *) x.
ApplyMonad state m =>
m x -> state (ApplyMonadBase m) -> m (x, state (ApplyMonadBase m))
nestedApply (forall (p :: * -> * -> *) (m :: * -> *) wX wY.
(Apply p, ApplyMonad (ApplyState p) m) =>
p wX wY -> m ()
apply p wXx wY
p) forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< forall (state :: (* -> *) -> *) (m :: * -> *).
ApplyMonad state m =>
m (state (ApplyMonadBase m))
getApplyState
case forall (p :: * -> * -> *) wX wY.
IsHunk p =>
p wX wY -> Maybe (FileHunk wX wY)
isHunk p wXx wY
p of
Maybe (FileHunk wXx wY)
Nothing -> do
Doc
a <- forall (p :: * -> * -> *) (m :: * -> *) wX wY.
(ShowContextPatch p, ApplyMonad (ApplyState p) m) =>
ShowPatchFor -> p wX wY -> m Doc
showContextPatch ShowPatchFor
use p wXx wY
p
(Doc, ApplyState p (ApplyMonadBase m))
b <- forall (state :: (* -> *) -> *) (m :: * -> *) x.
ApplyMonad state m =>
m x -> state (ApplyMonadBase m) -> m (x, state (ApplyMonadBase m))
nestedApply (forall wWw wXx wYy.
Maybe (FileHunk wWw wXx) -> FL p wXx wYy -> m Doc
scs forall a. Maybe a
Nothing FL p wY wYy
ps) ApplyState p (ApplyMonadBase m)
s'
forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ Doc
a Doc -> Doc -> Doc
$$ forall a b. (a, b) -> a
fst (Doc, ApplyState p (ApplyMonadBase m))
b
Just FileHunk wXx wY
fh -> case FL p wY wYy
ps of
FL p wY wYy
NilFL -> forall a b. (a, b) -> a
fst forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (state :: (* -> *) -> *) (m :: * -> *) x.
ApplyMonad state m =>
(state (ApplyMonadBase m) -> ApplyMonadBase m x)
-> state (ApplyMonadBase m) -> m (x, state (ApplyMonadBase m))
liftApply (forall wA wB wC wD.
Maybe (FileHunk wA wB)
-> FileHunk wB wC
-> Maybe (FileHunk wC wD)
-> ApplyState p (ApplyMonadBase m)
-> ApplyMonadBase m Doc
cool Maybe (FileHunk wWw wXx)
pold FileHunk wXx wY
fh forall a. Maybe a
Nothing) ApplyState p (ApplyMonadBase m)
s'
(p wY wY
p2 :>: FL p wY wYy
_) -> do
Doc
a <- forall a b. (a, b) -> a
fst forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (state :: (* -> *) -> *) (m :: * -> *) x.
ApplyMonad state m =>
(state (ApplyMonadBase m) -> ApplyMonadBase m x)
-> state (ApplyMonadBase m) -> m (x, state (ApplyMonadBase m))
liftApply (forall wA wB wC wD.
Maybe (FileHunk wA wB)
-> FileHunk wB wC
-> Maybe (FileHunk wC wD)
-> ApplyState p (ApplyMonadBase m)
-> ApplyMonadBase m Doc
cool Maybe (FileHunk wWw wXx)
pold FileHunk wXx wY
fh (forall (p :: * -> * -> *) wX wY.
IsHunk p =>
p wX wY -> Maybe (FileHunk wX wY)
isHunk p wY wY
p2)) ApplyState p (ApplyMonadBase m)
s'
(Doc, ApplyState p (ApplyMonadBase m))
b <- forall (state :: (* -> *) -> *) (m :: * -> *) x.
ApplyMonad state m =>
m x -> state (ApplyMonadBase m) -> m (x, state (ApplyMonadBase m))
nestedApply (forall wWw wXx wYy.
Maybe (FileHunk wWw wXx) -> FL p wXx wYy -> m Doc
scs (forall a. a -> Maybe a
Just FileHunk wXx wY
fh) FL p wY wYy
ps) ApplyState p (ApplyMonadBase m)
s'
forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ Doc
a Doc -> Doc -> Doc
$$ forall a b. (a, b) -> a
fst (Doc, ApplyState p (ApplyMonadBase m))
b
scs Maybe (FileHunk wWw wXx)
_ FL p wXx wYy
NilFL = forall (m :: * -> *) a. Monad m => a -> m a
return Doc
empty
cool :: Maybe (FileHunk wA wB) -> FileHunk wB wC -> Maybe (FileHunk wC wD)
-> (ApplyState p) (ApplyMonadBase m) -> (ApplyMonadBase m) Doc
cool :: forall wA wB wC wD.
Maybe (FileHunk wA wB)
-> FileHunk wB wC
-> Maybe (FileHunk wC wD)
-> ApplyState p (ApplyMonadBase m)
-> ApplyMonadBase m Doc
cool Maybe (FileHunk wA wB)
pold FileHunk wB wC
fh Maybe (FileHunk wC wD)
ps ApplyState p (ApplyMonadBase m)
s =
forall a b. (a, b) -> a
fst forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (m :: * -> *) a.
Monad m =>
TreeMonad m a -> Tree m -> m (a, Tree m)
virtualTreeMonad (forall (m :: * -> *) wA wB wC wD.
ApplyMonad Tree m =>
FileNameFormat
-> Maybe (FileHunk wA wB)
-> FileHunk wB wC
-> Maybe (FileHunk wC wD)
-> m Doc
coolContextHunk FileNameFormat
fmt Maybe (FileHunk wA wB)
pold FileHunk wB wC
fh Maybe (FileHunk wC wD)
ps) (forall (s :: (* -> *) -> *) (m :: * -> *).
ToTree s =>
s m -> Tree m
toTree ApplyState p (ApplyMonadBase m)
s)
showContextHunk :: (ApplyMonad Tree m) => FileNameFormat -> FileHunk wX wY -> m Doc
showContextHunk :: forall (m :: * -> *) wX wY.
ApplyMonad Tree m =>
FileNameFormat -> FileHunk wX wY -> m Doc
showContextHunk FileNameFormat
fmt FileHunk wX wY
h = forall (m :: * -> *) wA wB wC wD.
ApplyMonad Tree m =>
FileNameFormat
-> Maybe (FileHunk wA wB)
-> FileHunk wB wC
-> Maybe (FileHunk wC wD)
-> m Doc
coolContextHunk FileNameFormat
fmt forall a. Maybe a
Nothing FileHunk wX wY
h forall a. Maybe a
Nothing
coolContextHunk :: (ApplyMonad Tree m)
=> FileNameFormat
-> Maybe (FileHunk wA wB) -> FileHunk wB wC
-> Maybe (FileHunk wC wD) -> m Doc
coolContextHunk :: forall (m :: * -> *) wA wB wC wD.
ApplyMonad Tree m =>
FileNameFormat
-> Maybe (FileHunk wA wB)
-> FileHunk wB wC
-> Maybe (FileHunk wC wD)
-> m Doc
coolContextHunk FileNameFormat
fmt Maybe (FileHunk wA wB)
prev fh :: FileHunk wB wC
fh@(FileHunk AnchoredPath
f Int
l [ByteString]
o [ByteString]
n) Maybe (FileHunk wC wD)
next = do
Bool
have <- forall (m :: * -> *). ApplyMonadTree m => AnchoredPath -> m Bool
mDoesFileExist AnchoredPath
f
Maybe ByteString
f_content <- if Bool
have then forall a. a -> Maybe a
Just forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
`fmap` forall (m :: * -> *).
ApplyMonadTree m =>
AnchoredPath -> m ByteString
mReadFilePS AnchoredPath
f else forall (m :: * -> *) a. Monad m => a -> m a
return forall a. Maybe a
Nothing
case ByteString -> [ByteString]
linesPS forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
`fmap` Maybe ByteString
f_content of
Maybe [ByteString]
Nothing -> forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ forall wX wY. FileNameFormat -> FileHunk wX wY -> Doc
showFileHunk FileNameFormat
fmt FileHunk wB wC
fh
Just [ByteString]
ls ->
let pre :: [ByteString]
pre = forall a. Int -> [a] -> [a]
take Int
numpre forall a b. (a -> b) -> a -> b
$ forall a. Int -> [a] -> [a]
drop (Int
l forall a. Num a => a -> a -> a
- Int
numpre forall a. Num a => a -> a -> a
- Int
1) [ByteString]
ls
cleanedls :: [ByteString]
cleanedls = case forall a. [a] -> [a]
reverse [ByteString]
ls of
(ByteString
x : [ByteString]
xs)
| ByteString -> Bool
B.null ByteString
x -> forall a. [a] -> [a]
reverse [ByteString]
xs
[ByteString]
_ -> [ByteString]
ls
post :: [ByteString]
post = forall a. Int -> [a] -> [a]
take Int
numpost forall a b. (a -> b) -> a -> b
$ forall a. Int -> [a] -> [a]
drop (forall a. Ord a => a -> a -> a
max Int
0 forall a b. (a -> b) -> a -> b
$ Int
lforall a. Num a => a -> a -> a
+forall (t :: * -> *) a. Foldable t => t a -> Int
length [ByteString]
oforall a. Num a => a -> a -> a
-Int
1) [ByteString]
cleanedls in
forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$
String -> Doc
blueText String
"hunk" Doc -> Doc -> Doc
<+> FileNameFormat -> AnchoredPath -> Doc
formatFileName FileNameFormat
fmt AnchoredPath
f
Doc -> Doc -> Doc
<+> String -> Doc
text (forall a. Show a => a -> String
show Int
l)
Doc -> Doc -> Doc
$$ String -> Doc -> Doc
prefix String
" " ([Doc] -> Doc
vcat forall a b. (a -> b) -> a -> b
$ forall a b. (a -> b) -> [a] -> [b]
map ByteString -> Doc
userchunkPS [ByteString]
pre)
Doc -> Doc -> Doc
$$ Color -> Doc -> Doc
lineColor Color
Magenta (String -> Doc -> Doc
prefix String
"-" ([Doc] -> Doc
vcat forall a b. (a -> b) -> a -> b
$ forall a b. (a -> b) -> [a] -> [b]
map ByteString -> Doc
userchunkPS [ByteString]
o))
Doc -> Doc -> Doc
$$ Color -> Doc -> Doc
lineColor Color
Cyan (String -> Doc -> Doc
prefix String
"+" ([Doc] -> Doc
vcat forall a b. (a -> b) -> a -> b
$ forall a b. (a -> b) -> [a] -> [b]
map ByteString -> Doc
userchunkPS [ByteString]
n))
Doc -> Doc -> Doc
$$ String -> Doc -> Doc
prefix String
" " ([Doc] -> Doc
vcat forall a b. (a -> b) -> a -> b
$ forall a b. (a -> b) -> [a] -> [b]
map ByteString -> Doc
userchunkPS [ByteString]
post)
where
numpre :: Int
numpre = case Maybe (FileHunk wA wB)
prev of
Just (FileHunk AnchoredPath
f' Int
lprev [ByteString]
_ [ByteString]
nprev)
| AnchoredPath
f' forall a. Eq a => a -> a -> Bool
== AnchoredPath
f Bool -> Bool -> Bool
&& Int
l forall a. Num a => a -> a -> a
- (Int
lprev forall a. Num a => a -> a -> a
+ forall (t :: * -> *) a. Foldable t => t a -> Int
length [ByteString]
nprev forall a. Num a => a -> a -> a
+ Int
3) forall a. Ord a => a -> a -> Bool
< Int
3 Bool -> Bool -> Bool
&& Int
lprev forall a. Ord a => a -> a -> Bool
< Int
l
-> forall a. Ord a => a -> a -> a
max Int
0 forall a b. (a -> b) -> a -> b
$ Int
l forall a. Num a => a -> a -> a
- (Int
lprev forall a. Num a => a -> a -> a
+ forall (t :: * -> *) a. Foldable t => t a -> Int
length [ByteString]
nprev forall a. Num a => a -> a -> a
+ Int
3)
Maybe (FileHunk wA wB)
_ -> if Int
l forall a. Ord a => a -> a -> Bool
>= Int
4 then Int
3 else Int
l forall a. Num a => a -> a -> a
- Int
1
numpost :: Int
numpost = case Maybe (FileHunk wC wD)
next of
Just (FileHunk AnchoredPath
f' Int
lnext [ByteString]
_ [ByteString]
_)
| AnchoredPath
f' forall a. Eq a => a -> a -> Bool
== AnchoredPath
f Bool -> Bool -> Bool
&& Int
lnext forall a. Ord a => a -> a -> Bool
< Int
l forall a. Num a => a -> a -> a
+ forall (t :: * -> *) a. Foldable t => t a -> Int
length [ByteString]
n forall a. Num a => a -> a -> a
+ Int
4 Bool -> Bool -> Bool
&& Int
lnext forall a. Ord a => a -> a -> Bool
> Int
l
-> Int
lnext forall a. Num a => a -> a -> a
- (Int
l forall a. Num a => a -> a -> a
+ forall (t :: * -> *) a. Foldable t => t a -> Int
length [ByteString]
n)
Maybe (FileHunk wC wD)
_ -> Int
3
instance (PatchListFormat p, ShowPatchBasic p) => ShowPatchBasic (FL p) where
showPatch :: forall wX wY. ShowPatchFor -> FL p wX wY -> Doc
showPatch ShowPatchFor
ForDisplay = [Doc] -> Doc
vcat forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (a :: * -> * -> *) b wX wY.
(forall wW wZ. a wW wZ -> b) -> FL a wX wY -> [b]
mapFL (forall (p :: * -> * -> *) wX wY.
ShowPatchBasic p =>
ShowPatchFor -> p wX wY -> Doc
showPatch ShowPatchFor
ForDisplay)
showPatch ShowPatchFor
ForStorage = forall wX wY. ListFormat p -> FL p wX wY -> Doc
showPatchInternal forall (p :: * -> * -> *). PatchListFormat p => ListFormat p
patchListFormat
where
showPatchInternal :: ListFormat p -> FL p wX wY -> Doc
showPatchInternal :: forall wX wY. ListFormat p -> FL p wX wY -> Doc
showPatchInternal ListFormat p
ListFormatV1 (p wX wY
p :>: FL p wY wY
NilFL) = (forall (p :: * -> * -> *) wX wY.
ShowPatchBasic p =>
ShowPatchFor -> p wX wY -> Doc
showPatch ShowPatchFor
ForStorage) p wX wY
p
showPatchInternal ListFormat p
ListFormatV1 FL p wX wY
NilFL = String -> Doc
blueText String
"{" Doc -> Doc -> Doc
$$ String -> Doc
blueText String
"}"
showPatchInternal ListFormat p
ListFormatV1 FL p wX wY
ps = String -> Doc
blueText String
"{"
Doc -> Doc -> Doc
$$ [Doc] -> Doc
vcat (forall (a :: * -> * -> *) b wX wY.
(forall wW wZ. a wW wZ -> b) -> FL a wX wY -> [b]
mapFL (forall (p :: * -> * -> *) wX wY.
ShowPatchBasic p =>
ShowPatchFor -> p wX wY -> Doc
showPatch ShowPatchFor
ForStorage) FL p wX wY
ps)
Doc -> Doc -> Doc
$$ String -> Doc
blueText String
"}"
showPatchInternal ListFormat p
ListFormatV2 FL p wX wY
ps = [Doc] -> Doc
vcat (forall (a :: * -> * -> *) b wX wY.
(forall wW wZ. a wW wZ -> b) -> FL a wX wY -> [b]
mapFL (forall (p :: * -> * -> *) wX wY.
ShowPatchBasic p =>
ShowPatchFor -> p wX wY -> Doc
showPatch ShowPatchFor
ForStorage) FL p wX wY
ps)
showPatchInternal ListFormat p
ListFormatDefault FL p wX wY
ps = [Doc] -> Doc
vcat (forall (a :: * -> * -> *) b wX wY.
(forall wW wZ. a wW wZ -> b) -> FL a wX wY -> [b]
mapFL (forall (p :: * -> * -> *) wX wY.
ShowPatchBasic p =>
ShowPatchFor -> p wX wY -> Doc
showPatch ShowPatchFor
ForStorage) FL p wX wY
ps)
showPatchInternal ListFormat p
ListFormatV3 FL p wX wY
ps = [Doc] -> Doc
vcat (forall (a :: * -> * -> *) b wX wY.
(forall wW wZ. a wW wZ -> b) -> FL a wX wY -> [b]
mapFL (forall (p :: * -> * -> *) wX wY.
ShowPatchBasic p =>
ShowPatchFor -> p wX wY -> Doc
showPatch ShowPatchFor
ForStorage) FL p wX wY
ps)
instance (Apply p, IsHunk p, PatchListFormat p, ShowContextPatch p)
=> ShowContextPatch (FL p) where
showContextPatch :: forall (m :: * -> *) wX wY.
ApplyMonad (ApplyState (FL p)) m =>
ShowPatchFor -> FL p wX wY -> m Doc
showContextPatch ShowPatchFor
ForDisplay = forall (p :: * -> * -> *) (m :: * -> *) wX wY.
(Apply p, ShowContextPatch p, IsHunk p,
ApplyMonad (ApplyState p) m) =>
ShowPatchFor -> FileNameFormat -> FL p wX wY -> m Doc
showContextSeries ShowPatchFor
ForDisplay FileNameFormat
FileNameFormatDisplay
showContextPatch ShowPatchFor
ForStorage = forall (m :: * -> *) wX wY.
ApplyMonad (ApplyState (FL p)) m =>
ListFormat p -> FL p wX wY -> m Doc
showContextPatchInternal forall (p :: * -> * -> *). PatchListFormat p => ListFormat p
patchListFormat
where
showContextPatchInternal :: (ApplyMonad (ApplyState (FL p)) m)
=> ListFormat p -> FL p wX wY -> m Doc
showContextPatchInternal :: forall (m :: * -> *) wX wY.
ApplyMonad (ApplyState (FL p)) m =>
ListFormat p -> FL p wX wY -> m Doc
showContextPatchInternal ListFormat p
ListFormatV1 (p wX wY
p :>: FL p wY wY
NilFL) =
forall (p :: * -> * -> *) (m :: * -> *) wX wY.
(ShowContextPatch p, ApplyMonad (ApplyState p) m) =>
ShowPatchFor -> p wX wY -> m Doc
showContextPatch ShowPatchFor
ForStorage p wX wY
p
showContextPatchInternal ListFormat p
ListFormatV1 FL p wX wY
NilFL =
forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ String -> Doc
blueText String
"{" Doc -> Doc -> Doc
$$ String -> Doc
blueText String
"}"
showContextPatchInternal ListFormat p
ListFormatV1 FL p wX wY
ps = do
Doc
x <- forall (p :: * -> * -> *) (m :: * -> *) wX wY.
(Apply p, ShowContextPatch p, IsHunk p,
ApplyMonad (ApplyState p) m) =>
ShowPatchFor -> FileNameFormat -> FL p wX wY -> m Doc
showContextSeries ShowPatchFor
ForStorage FileNameFormat
FileNameFormatV1 FL p wX wY
ps
forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ String -> Doc
blueText String
"{" Doc -> Doc -> Doc
$$ Doc
x Doc -> Doc -> Doc
$$ String -> Doc
blueText String
"}"
showContextPatchInternal ListFormat p
ListFormatV2 FL p wX wY
ps = forall (p :: * -> * -> *) (m :: * -> *) wX wY.
(Apply p, ShowContextPatch p, IsHunk p,
ApplyMonad (ApplyState p) m) =>
ShowPatchFor -> FileNameFormat -> FL p wX wY -> m Doc
showContextSeries ShowPatchFor
ForStorage FileNameFormat
FileNameFormatV2 FL p wX wY
ps
showContextPatchInternal ListFormat p
ListFormatDefault FL p wX wY
ps = forall (p :: * -> * -> *) (m :: * -> *) wX wY.
(Apply p, ShowContextPatch p, IsHunk p,
ApplyMonad (ApplyState p) m) =>
ShowPatchFor -> FileNameFormat -> FL p wX wY -> m Doc
showContextSeries ShowPatchFor
ForStorage FileNameFormat
FileNameFormatV2 FL p wX wY
ps
showContextPatchInternal ListFormat p
ListFormatV3 FL p wX wY
ps = forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ forall (p :: * -> * -> *) wX wY.
ShowPatchBasic p =>
ShowPatchFor -> p wX wY -> Doc
showPatch ShowPatchFor
ForStorage FL p wX wY
ps
instance (PatchListFormat p, ShowPatch p) => ShowPatch (FL p) where
content :: forall wX wY. FL p wX wY -> Doc
content = [Doc] -> Doc
vcat forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (a :: * -> * -> *) b wX wY.
(forall wW wZ. a wW wZ -> b) -> FL a wX wY -> [b]
mapFL forall (p :: * -> * -> *) wX wY. ShowPatch p => p wX wY -> Doc
content
description :: forall wX wY. FL p wX wY -> Doc
description = [Doc] -> Doc
vcat forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (a :: * -> * -> *) b wX wY.
(forall wW wZ. a wW wZ -> b) -> FL a wX wY -> [b]
mapFL forall (p :: * -> * -> *) wX wY. ShowPatch p => p wX wY -> Doc
description
summary :: forall wX wY. FL p wX wY -> Doc
summary = forall (p :: * -> * -> *) wX wY. ShowPatch p => FL p wX wY -> Doc
summaryFL
summaryFL :: forall wX wY. FL (FL p) wX wY -> Doc
summaryFL = forall (p :: * -> * -> *) wX wY. ShowPatch p => FL p wX wY -> Doc
summaryFL forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (a :: * -> * -> *) wX wZ. FL (FL a) wX wZ -> FL a wX wZ
concatFL
thing :: forall wX wY. FL p wX wY -> String
thing FL p wX wY
x = forall (p :: * -> * -> *) wX wY. ShowPatch p => p wX wY -> String
thing (forall (a :: * -> * -> *) wX wY. FL a wX wY -> a wX wY
helperx FL p wX wY
x) forall a. [a] -> [a] -> [a]
++ String
"s"
where
helperx :: FL a wX wY -> a wX wY
helperx :: forall (a :: * -> * -> *) wX wY. FL a wX wY -> a wX wY
helperx FL a wX wY
_ = forall a. HasCallStack => a
undefined
things :: forall wX wY. FL p wX wY -> String
things = forall (p :: * -> * -> *) wX wY. ShowPatch p => p wX wY -> String
thing
instance (PatchListFormat p, ShowPatchBasic p) => ShowPatchBasic (RL p) where
showPatch :: forall wX wY. ShowPatchFor -> RL p wX wY -> Doc
showPatch ShowPatchFor
f = forall (p :: * -> * -> *) wX wY.
ShowPatchBasic p =>
ShowPatchFor -> p wX wY -> Doc
showPatch ShowPatchFor
f forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (a :: * -> * -> *) wX wZ. RL a wX wZ -> FL a wX wZ
reverseRL
instance (ShowContextPatch p, Apply p, IsHunk p, PatchListFormat p)
=> ShowContextPatch (RL p) where
showContextPatch :: forall (m :: * -> *) wX wY.
ApplyMonad (ApplyState (RL p)) m =>
ShowPatchFor -> RL p wX wY -> m Doc
showContextPatch ShowPatchFor
use = forall (p :: * -> * -> *) (m :: * -> *) wX wY.
(ShowContextPatch p, ApplyMonad (ApplyState p) m) =>
ShowPatchFor -> p wX wY -> m Doc
showContextPatch ShowPatchFor
use forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (a :: * -> * -> *) wX wZ. RL a wX wZ -> FL a wX wZ
reverseRL
instance (PatchListFormat p, ShowPatch p) => ShowPatch (RL p) where
content :: forall wX wY. RL p wX wY -> Doc
content = forall (p :: * -> * -> *) wX wY. ShowPatch p => p wX wY -> Doc
content forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (a :: * -> * -> *) wX wZ. RL a wX wZ -> FL a wX wZ
reverseRL
description :: forall wX wY. RL p wX wY -> Doc
description = forall (p :: * -> * -> *) wX wY. ShowPatch p => p wX wY -> Doc
description forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (a :: * -> * -> *) wX wZ. RL a wX wZ -> FL a wX wZ
reverseRL
summary :: forall wX wY. RL p wX wY -> Doc
summary = forall (p :: * -> * -> *) wX wY. ShowPatch p => p wX wY -> Doc
summary forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (a :: * -> * -> *) wX wZ. RL a wX wZ -> FL a wX wZ
reverseRL
summaryFL :: forall wX wY. FL (RL p) wX wY -> Doc
summaryFL = forall (p :: * -> * -> *) wX wY. ShowPatch p => FL p wX wY -> Doc
summaryFL forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (a :: * -> * -> *) (b :: * -> * -> *) wX wZ.
(forall wW wY. a wW wY -> b wW wY) -> FL a wX wZ -> FL b wX wZ
mapFL_FL forall (a :: * -> * -> *) wX wZ. RL a wX wZ -> FL a wX wZ
reverseRL
thing :: forall wX wY. RL p wX wY -> String
thing = forall (p :: * -> * -> *) wX wY. ShowPatch p => p wX wY -> String
thing forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (a :: * -> * -> *) wX wZ. RL a wX wZ -> FL a wX wZ
reverseRL
things :: forall wX wY. RL p wX wY -> String
things = forall (p :: * -> * -> *) wX wY. ShowPatch p => p wX wY -> String
things forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (a :: * -> * -> *) wX wZ. RL a wX wZ -> FL a wX wZ
reverseRL