Safe Haskell | None |
---|---|
Language | Haskell2010 |
First matcher, Second matcher and Nonrange matcher
When we match for patches, we have a PatchSet, of which we want a
subset. This subset is formed by the patches in a given interval
which match a given criterion. If we represent time going left to
right, then we have (up to) three Matcher
s:
- the
firstMatcher
is the left bound of the interval, - the
secondMatcher
is the right bound, and - the
nonrangeMatcher
is the criterion we use to select among patches in the interval.
- matchParser :: Matchable p => CharParser st (MatchFun rt p)
- helpOnMatchers :: [String]
- addInternalMatcher :: (IsRepoType rt, Matchable p) => Maybe (Matcher rt p) -> Maybe (Matcher rt p)
- matchFirstPatchset :: (IsRepoType rt, Matchable p) => [MatchFlag] -> PatchSet rt p wStart wX -> SealedPatchSet rt p wStart
- matchSecondPatchset :: (IsRepoType rt, Matchable p) => [MatchFlag] -> PatchSet rt p wStart wX -> SealedPatchSet rt p wStart
- splitSecondFL :: Matchable p => (forall wA wB. q wA wB -> Sealed2 (PatchInfoAnd rt p)) -> [MatchFlag] -> FL q wX wY -> (FL q :> FL q) wX wY
- matchPatch :: (IsRepoType rt, Matchable p) => [MatchFlag] -> PatchSet rt p wStart wX -> Sealed2 (WrappedNamed rt p)
- matchAPatch :: (IsRepoType rt, Matchable p) => [MatchFlag] -> PatchInfoAnd rt p wX wY -> Bool
- matchAPatchread :: (IsRepoType rt, Matchable p) => [MatchFlag] -> PatchInfoAnd rt p wX wY -> Bool
- getNonrangeMatchS :: (ApplyMonad (ApplyState p) m, MonadProgress m, IsRepoType rt, Matchable p, ApplyState p ~ Tree) => [MatchFlag] -> PatchSet rt p Origin wX -> m ()
- firstMatch :: [MatchFlag] -> Bool
- secondMatch :: [MatchFlag] -> Bool
- haveNonrangeMatch :: forall rt p. (IsRepoType rt, Matchable p) => PatchType rt p -> [MatchFlag] -> Bool
- havePatchsetMatch :: forall rt p. (IsRepoType rt, Matchable p) => PatchType rt p -> [MatchFlag] -> Bool
- checkMatchSyntax :: [MatchFlag] -> IO ()
- applyInvToMatcher :: (Matchable p, ApplyMonad (ApplyState p) m) => InclusiveOrExclusive -> Matcher rt p -> PatchSet rt p Origin wX -> m ()
- nonrangeMatcher :: (IsRepoType rt, Matchable p) => [MatchFlag] -> Maybe (Matcher rt p)
- data InclusiveOrExclusive
- matchExists :: Matcher rt p -> PatchSet rt p wStart wX -> Bool
- applyNInv :: (Matchable p, ApplyMonad (ApplyState p) m) => Int -> PatchSet rt p Origin wX -> m ()
- hasIndexRange :: [MatchFlag] -> Maybe (Int, Int)
- getMatchingTag :: Matchable p => Matcher rt p -> PatchSet rt p wStart wX -> SealedPatchSet rt p wStart
- matchAPatchset :: Matchable p => Matcher rt p -> PatchSet rt p wStart wX -> SealedPatchSet rt p wStart
- getFirstMatchS :: (ApplyMonad (ApplyState p) m, MonadProgress m, Matchable p, IsRepoType rt) => [MatchFlag] -> PatchSet rt p Origin wX -> m ()
- nonrangeMatcherIsTag :: [MatchFlag] -> Bool
- data MatchFlag
- = OnePattern String
- | SeveralPattern String
- | AfterPattern String
- | UpToPattern String
- | OnePatch String
- | OneHash String
- | AfterHash String
- | UpToHash String
- | SeveralPatch String
- | AfterPatch String
- | UpToPatch String
- | OneTag String
- | AfterTag String
- | UpToTag String
- | LastN Int
- | PatchIndexRange Int Int
- | Context AbsolutePath
Documentation
matchParser :: Matchable p => CharParser st (MatchFun rt p) Source #
helpOnMatchers :: [String] Source #
The string that is emitted when the user runs darcs help --match
.
addInternalMatcher :: (IsRepoType rt, Matchable p) => Maybe (Matcher rt p) -> Maybe (Matcher rt p) Source #
matchFirstPatchset :: (IsRepoType rt, Matchable p) => [MatchFlag] -> PatchSet rt p wStart wX -> SealedPatchSet rt p wStart Source #
matchFirstPatchset fs ps
returns the part of ps
before its
first matcher, ie the one that comes first dependencywise. Hence,
patches in matchFirstPatchset fs ps
are the context for the ones
we don't want.
matchSecondPatchset :: (IsRepoType rt, Matchable p) => [MatchFlag] -> PatchSet rt p wStart wX -> SealedPatchSet rt p wStart Source #
matchSecondPatchset fs ps
returns the part of ps
before its
second matcher, ie the one that comes last dependencywise.
:: Matchable p | |
=> (forall wA wB. q wA wB -> Sealed2 (PatchInfoAnd rt p)) | |
-> [MatchFlag] | |
-> FL q wX wY | |
-> (FL q :> FL q) wX wY | The first element is the patches before and including the first patch matching the second matcher, the second element is the patches after it |
Split on the second matcher. Note that this picks up the first match starting from
the earliest patch in a sequence, as opposed to matchSecondPatchset
which picks up the
first match starting from the latest patch
matchPatch :: (IsRepoType rt, Matchable p) => [MatchFlag] -> PatchSet rt p wStart wX -> Sealed2 (WrappedNamed rt p) Source #
matchAPatch :: (IsRepoType rt, Matchable p) => [MatchFlag] -> PatchInfoAnd rt p wX wY -> Bool Source #
matchAPatch fs p
tells whether p
matches the matchers in
the flags fs
matchAPatchread :: (IsRepoType rt, Matchable p) => [MatchFlag] -> PatchInfoAnd rt p wX wY -> Bool Source #
matchAPatchread fs p
tells whether p
matches the matchers in
the flags listed in fs
.
getNonrangeMatchS :: (ApplyMonad (ApplyState p) m, MonadProgress m, IsRepoType rt, Matchable p, ApplyState p ~ Tree) => [MatchFlag] -> PatchSet rt p Origin wX -> m () Source #
firstMatch :: [MatchFlag] -> Bool Source #
firstMatch fs
tells whether fs
implies a "first match", that
is if we match against patches from a point in the past on, rather
than against all patches since the creation of the repository.
secondMatch :: [MatchFlag] -> Bool Source #
secondMatch fs
tells whether fs
implies a "second match", that
is if we match against patches up to a point in the past on, rather
than against all patches until now.
haveNonrangeMatch :: forall rt p. (IsRepoType rt, Matchable p) => PatchType rt p -> [MatchFlag] -> Bool Source #
haveNonrangeMatch flags
tells whether there is a flag in
flags
which corresponds to a match that is "non-range". Thus,
--match
, --patch
, --hash
and --index
make haveNonrangeMatch
true, but not --from-patch
or --to-patch
.
havePatchsetMatch :: forall rt p. (IsRepoType rt, Matchable p) => PatchType rt p -> [MatchFlag] -> Bool Source #
havePatchsetMatch flags
tells whether there is a "patchset
match" in the flag list. A patchset match is --match
or
--patch
, or --context
, but not --from-patch
nor (!)
--index
.
Question: Is it supposed not to be a subset of haveNonrangeMatch
?
checkMatchSyntax :: [MatchFlag] -> IO () Source #
applyInvToMatcher :: (Matchable p, ApplyMonad (ApplyState p) m) => InclusiveOrExclusive -> Matcher rt p -> PatchSet rt p Origin wX -> m () Source #
nonrangeMatcher :: (IsRepoType rt, Matchable p) => [MatchFlag] -> Maybe (Matcher rt p) Source #
nonrangeMatcher
is the criterion that is used to match against
patches in the interval. It is 'Just m' when the --patch
, --match
,
--tag
options are passed (or their plural variants).
matchExists :: Matcher rt p -> PatchSet rt p wStart wX -> Bool Source #
matchExists m ps
tells whether there is a patch matching
m
in ps
applyNInv :: (Matchable p, ApplyMonad (ApplyState p) m) => Int -> PatchSet rt p Origin wX -> m () Source #
applyNInv
n ps applies the inverse of the last n
patches of ps
.
getMatchingTag :: Matchable p => Matcher rt p -> PatchSet rt p wStart wX -> SealedPatchSet rt p wStart Source #
getMatchingTag m ps
, where m
is a Matcher
which matches tags
returns a SealedPatchSet
containing all patches in the last tag which
matches m
. Last tag means the most recent tag in repository order,
i.e. the last one you'd see if you ran darcs log -t m
. Calls
error
if there is no matching tag.
matchAPatchset :: Matchable p => Matcher rt p -> PatchSet rt p wStart wX -> SealedPatchSet rt p wStart Source #
matchAPatchset m ps
returns a (the largest?) subset of ps
ending in patch which matches m
. Calls error
if there is none.
getFirstMatchS :: (ApplyMonad (ApplyState p) m, MonadProgress m, Matchable p, IsRepoType rt) => [MatchFlag] -> PatchSet rt p Origin wX -> m () Source #
nonrangeMatcherIsTag :: [MatchFlag] -> Bool Source #
nonrangeMatcherIsTag
returns true if the matching option was
'--tag'