[Cl-darcs-cvs] r81 - cl-darcs/trunk
mhenoch at common-lisp.net
mhenoch at common-lisp.net
Tue Nov 28 00:15:22 UTC 2006
Author: mhenoch
Date: Mon Nov 27 19:15:21 2006
New Revision: 81
Added:
cl-darcs/trunk/display-patch.lisp
Modified:
cl-darcs/trunk/cl-darcs.asd
Log:
Add display-patch.lisp
Modified: cl-darcs/trunk/cl-darcs.asd
==============================================================================
--- cl-darcs/trunk/cl-darcs.asd (original)
+++ cl-darcs/trunk/cl-darcs.asd Mon Nov 27 19:15:21 2006
@@ -45,6 +45,7 @@
(:file "write-patch" :depends-on ("patch-core"))
(:file "apply-patch" :depends-on ("patch-core"))
(:file "invert-patch" :depends-on ("patch-core"))
+ (:file "display-patch" :depends-on ("patch-core"))
(:file "pristine" :depends-on ("patch-core"))
(:file "touching" :depends-on ("patch-core"))
(:file "commute" :depends-on ("patch-core"))
Added: cl-darcs/trunk/display-patch.lisp
==============================================================================
--- (empty file)
+++ cl-darcs/trunk/display-patch.lisp Mon Nov 27 19:15:21 2006
@@ -0,0 +1,36 @@
+;;; Copyright (C) 2006 Magnus Henoch
+;;;
+;;; This program is free software; you can redistribute it and/or
+;;; modify it under the terms of the GNU General Public License as
+;;; published by the Free Software Foundation; either version 2 of the
+;;; License, or (at your option) any later version.
+;;;
+;;; This program is distributed in the hope that it will be useful,
+;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;;; General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with this program; if not, write to the Free Software
+;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+(in-package :darcs)
+
+(defgeneric display-patch (patch stream)
+ (:documentation
+ "Print an elaborate and readable description of PATCH to STREAM."))
+
+(defmethod display-patch ((patch patch) stream)
+ "When no display method is defined, write a terse description."
+ (print patch stream))
+
+(defmethod display-patch ((patch hunk-patch) stream)
+ (format stream "~&~A: ~A~[~:;~:*-~A~]~[~:;~:*+~A~]"
+ (patch-filename patch)
+ (hunk-line-number patch)
+ (length (hunk-old-lines patch))
+ (length (hunk-new-lines patch)))
+ (dolist (old (hunk-old-lines patch))
+ (format stream "~&-~A" (bytes-to-string old)))
+ (dolist (new (hunk-new-lines patch))
+ (format stream "~&+~A" (bytes-to-string new))))
More information about the Cl-darcs-cvs
mailing list