openbsd-ports/devel/darcs/patches/patch-src_Darcs_Patch_Match_lhs
kili 61f34d1e88 Fix build and adjust wantlib after threading has been disabled in
ghc. While here, rename the `log' matcher to `comment' and add a
little bit of documentation as discussed upstream.
2010-05-06 20:06:28 +00:00

62 lines
2.7 KiB
Plaintext

$OpenBSD: patch-src_Darcs_Patch_Match_lhs,v 1.2 2010/05/06 20:06:28 kili Exp $
--- src/Darcs/Patch/Match.lhs.orig Mon Apr 12 21:42:42 2010
+++ src/Darcs/Patch/Match.lhs Wed May 5 17:09:11 2010
@@ -36,7 +36,7 @@ import System.IO.Unsafe ( unsafePerformIO )
import Darcs.Hopefully ( PatchInfoAnd, hopefully, info )
import Darcs.Patch ( Patch, Patchy, hunkMatches, listTouchedFiles, patchcontents )
-import Darcs.Patch.Info ( just_name, just_author, make_filename,
+import Darcs.Patch.Info ( just_name, just_author, just_log, make_filename,
pi_date )
import Darcs.Witnesses.Sealed ( Sealed2(..), seal2 )
import DateMatcher ( parseDateMatcher )
@@ -81,7 +81,7 @@ trivial = const True
\subsection{Match}
-Currently \verb!--match! accepts six primitive match types, although
+Currently \verb!--match! accepts eight primitive match types, although
there are plans to expand it to match more patterns. Also, note that the
syntax is still preliminary and subject to change.
@@ -199,6 +199,18 @@ file paths that the patch touches. The syntax is
darcs annotate --summary --match 'touch foo/bar.c'
\end{verbatim}
+The seventh match type accepts a regular expression which is checked
+against every hunk. The syntax is
+\begin{verbatim}
+darcs annotate --summary --match 'hunk "^instance .* Foo where$"'
+\end{verbatim}
+
+The eight match type accepts a regular expression which is checked
+against the long comment. The syntax is
+\begin{verbatim}
+darcs annotate --summary --match 'comment "remote repository"'
+\end{verbatim}
+
The \verb!--match! pattern can include the logical operators \verb!&&!,
\verb!||! and \verb!not!, as well as grouping of patterns with parentheses.
For example
@@ -306,8 +318,11 @@ primitiveMatchers =
, ["\"David Roundy\"", "droundy", "droundy@darcs.net"]
, authormatch )
, ("hunk", "check a regular expression against the contents of a hunk patch"
- , ["foo = 2", "^instance .* Foo where$"]
+ , ["\"foo = 2\"", "\"^instance .* Foo where$\""]
, hunkmatch )
+ , ("comment", "check a regular expression against the log message"
+ , ["\"prevent deadlocks\""]
+ , logmatch )
, ("hash", "match the darcs hash for a patch"
, ["20040403105958-53a90-c719567e92c3b0ab9eddd5290b705712b8b918ef"]
, hashmatch )
@@ -339,6 +354,7 @@ exactmatch r (Sealed2 hp) = r == (just_name (info hp))
authormatch a (Sealed2 hp) = isJust $ matchRegex (mkRegex a) $ just_author (info hp)
+logmatch l (Sealed2 hp) = isJust $ matchRegex (mkRegex l) $ just_log (info hp)
hunkmatch r (Sealed2 hp) = let patch = patchcontents $ hopefully hp
regexMatcher = isJust . (matchRegex (mkRegex r) . BC.unpack)