61f34d1e88
ghc. While here, rename the `log' matcher to `comment' and add a little bit of documentation as discussed upstream.
62 lines
2.7 KiB
Plaintext
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)
|