darcs-2.8.4: a distributed, interactive, smart revision control system

Safe Haskell | None

Darcs.Patch.Prim

Synopsis

- showPrim :: PrimShow prim => FileNameFormat -> prim a b -> Doc
- showPrimFL :: PrimShow prim => FileNameFormat -> FL prim a b -> Doc
- primIsAddfile :: PrimClassify prim => prim x y -> Bool
- primIsHunk :: PrimClassify prim => prim x y -> Bool
- primIsBinary :: PrimClassify prim => prim x y -> Bool
- primIsSetpref :: PrimClassify prim => prim x y -> Bool
- primIsAdddir :: PrimClassify prim => prim x y -> Bool
- is_filepatch :: PrimClassify prim => prim x y -> Maybe FileName
- canonize :: PrimCanonize prim => prim x y -> FL prim x y
- tryToShrink :: PrimCanonize prim => FL prim x y -> FL prim x y
- sortCoalesceFL :: PrimCanonize prim => FL prim x y -> FL prim x y
- join :: PrimCanonize prim => (prim :> prim) x y -> Maybe (FL prim x y)
- canonizeFL :: PrimCanonize prim => FL prim x y -> FL prim x y
- tryShrinkingInverse :: PrimCanonize prim => FL prim x y -> Maybe (FL prim x y)
- summarizePrim :: PrimDetails prim => prim x y -> [SummDetail]
- applyPrimFL :: (PrimApply prim, ApplyMonad m (ApplyState prim)) => FL prim x y -> m ()
- readPrim :: (PrimRead prim, ParserM m) => FileNameFormat -> m (Sealed (prim x))
- class FromPrim p where
  - fromPrim :: PrimOf p x y -> p x y
- class FromPrims p where
  - fromPrims :: FL (PrimOf p) x y -> p x y
  - joinPatches :: FL p x y -> p x y
- class FromPrim p => ToFromPrim p where
  - toPrim :: p x y -> Maybe (PrimOf p x y)
- class (Patchy prim, PatchListFormat prim, IsHunk prim, RepairToFL prim, PrimConstruct prim, PrimCanonize prim, PrimClassify prim, PrimDetails prim, PrimShow prim, PrimRead prim, PrimApply prim) => PrimPatch prim
- class PrimPatch (PrimOf p) => PrimPatchBase p where
  - type PrimOf p :: * -> * -> *
- class PrimConstruct prim where
  - addfile :: FilePath -> prim x y
  - rmfile :: FilePath -> prim x y
  - adddir :: FilePath -> prim x y
  - rmdir :: FilePath -> prim x y
  - move :: FilePath -> FilePath -> prim x y
  - changepref :: String -> String -> String -> prim x y
  - hunk :: FilePath -> Int -> [ByteString] -> [ByteString] -> prim x y
  - tokreplace :: FilePath -> String -> String -> String -> prim x y
  - binary :: FilePath -> ByteString -> ByteString -> prim x y
  - primFromHunk :: FileHunk x y -> prim x y
  - anIdentity :: prim x x

# Documentation

showPrim :: PrimShow prim => FileNameFormat -> prim a b -> Doc

showPrimFL :: PrimShow prim => FileNameFormat -> FL prim a b -> Doc

primIsAddfile :: PrimClassify prim => prim x y -> Bool

primIsHunk :: PrimClassify prim => prim x y -> Bool

primIsBinary :: PrimClassify prim => prim x y -> Bool

primIsSetpref :: PrimClassify prim => prim x y -> Bool

primIsAdddir :: PrimClassify prim => prim x y -> Bool

is_filepatch :: PrimClassify prim => prim x y -> Maybe FileName

canonize :: PrimCanonize prim => prim x y -> FL prim x y

It can sometimes be handy to have a canonical representation of a given patch. We achieve this by defining a canonical form for each patch type, and a function `canonize` which takes a patch and puts it into canonical form. This routine is used by the diff function to create an optimal patch (based on an LCS algorithm) from a simple hunk describing the old and new version of a file.

tryToShrink :: PrimCanonize prim => FL prim x y -> FL prim x y

sortCoalesceFL :: PrimCanonize prim => FL prim x y -> FL prim x y

`sortCoalesceFL` `ps` coalesces as many patches in `ps` as possible, sorting the results in some standard order.

join :: PrimCanonize prim => (prim :> prim) x y -> Maybe (FL prim x y)

canonizeFL :: PrimCanonize prim => FL prim x y -> FL prim x y

`canonizeFL` `ps` puts a sequence of primitive patches into canonical form. Even if the patches are just hunk patches, this is not necessarily the same set of results as you would get if you applied the sequence to a specific tree and recalculated a diff.

Note that this process does not preserve the commutation behaviour of the patches and is therefore not appropriate for use when working with already recorded patches (unless doing amend-record or the like).

tryShrinkingInverse :: PrimCanonize prim => FL prim x y -> Maybe (FL prim x y)

summarizePrim :: PrimDetails prim => prim x y -> [SummDetail]

applyPrimFL :: (PrimApply prim, ApplyMonad m (ApplyState prim)) => FL prim x y -> m ()

readPrim :: (PrimRead prim, ParserM m) => FileNameFormat -> m (Sealed (prim x))

class FromPrim p where

Methods

fromPrim :: PrimOf p x y -> p x y

Instances

FromPrim Prim |
FromPrim Prim |
FromPrim p => FromPrim (FL p) |
FromPrim (Patch prim) |
FromPrim (RealPatch prim) |

class FromPrims p where

Methods

fromPrims :: FL (PrimOf p) x y -> p x y

joinPatches :: FL p x y -> p x y

Instances

FromPrim p => FromPrims (RL p) |
FromPrim p => FromPrims (FL p) |

class FromPrim p => ToFromPrim p where

Methods

toPrim :: p x y -> Maybe (PrimOf p x y)

Instances

ToFromPrim (RealPatch prim) |

class (Patchy prim, PatchListFormat prim, IsHunk prim, RepairToFL prim, PrimConstruct prim, PrimCanonize prim, PrimClassify prim, PrimDetails prim, PrimShow prim, PrimRead prim, PrimApply prim) => PrimPatch prim

Instances

PrimPatch Prim |
PrimPatch Prim |

class PrimPatch (PrimOf p) => PrimPatchBase p

Associated Types

type PrimOf p :: * -> * -> *

Instances

PrimPatchBase Prim |
PrimPatchBase Prim |
PrimPatchBase p => PrimPatchBase (RL p) |
PrimPatchBase p => PrimPatchBase (FL p) |
PrimPatch prim => PrimPatchBase (Patch prim) |
PrimPatchBase p => PrimPatchBase (Named p) |
PrimPatchBase p => PrimPatchBase (PatchInfoAnd p) |
PrimPatch prim => PrimPatchBase (RealPatch prim) |

class PrimConstruct prim where

Methods

addfile :: FilePath -> prim x y

rmfile :: FilePath -> prim x y

adddir :: FilePath -> prim x y

rmdir :: FilePath -> prim x y

move :: FilePath -> FilePath -> prim x y

changepref :: String -> String -> String -> prim x y

hunk :: FilePath -> Int -> [ByteString] -> [ByteString] -> prim x y

tokreplace :: FilePath -> String -> String -> String -> prim x y

binary :: FilePath -> ByteString -> ByteString -> prim x y

primFromHunk :: FileHunk x y -> prim x y

anIdentity :: prim x x

Instances

PrimConstruct Prim |
PrimConstruct Prim |