summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog18
-rw-r--r--src/guile/skribilo/package/diff.scm51
2 files changed, 64 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 0ad8f90..d06f512 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,24 @@
# arch-tag: automatic-ChangeLog--skribilo@sv.gnu.org--2006/skribilo--devo--1.2
#
+2007-03-28 08:44:53 GMT Ludovic Court`es <ludovic.courtes@laas.fr> patch-68
+
+ Summary:
+ `diff' package: Use actual markups and writers.
+ Revision:
+ skribilo--devo--1.2--patch-68
+
+ * src/guile/skribilo/package/diff.scm: Use `output' and `writer'.
+ (deletion, insertion, replacement, unchanged): Return a specific markup
+ object. Add the corresponding writers for the `base' engine.
+
+ modified files:
+ ChangeLog src/guile/skribilo/package/diff.scm
+
+ new patches:
+ lcourtes@laas.fr--2006-libre/skribilo--devo--1.2--patch-27
+
+
2007-03-16 17:11:30 GMT Ludovic Court`es <ludovic.courtes@laas.fr> patch-67
Summary:
diff --git a/src/guile/skribilo/package/diff.scm b/src/guile/skribilo/package/diff.scm
index 116a6bd..15fdcf2 100644
--- a/src/guile/skribilo/package/diff.scm
+++ b/src/guile/skribilo/package/diff.scm
@@ -26,8 +26,10 @@
:use-module (skribilo ast)
:use-module (skribilo lib)
+ :use-module (skribilo engine)
+ :use-module (skribilo writer)
+ :autoload (skribilo output) (output)
:autoload (skribilo reader) (*document-reader*)
- :autoload (skribilo engine) (*current-engine*)
:autoload (skribilo module) (make-run-time-module)
:autoload (skribilo resolve) (resolve!)
:autoload (skribilo evaluator) (evaluate-ast-from-port)
@@ -58,16 +60,28 @@
;;;
(define-markup (deletion :rest args)
- (color :fg "red" (symbol "middot")))
+ (new markup
+ (markup 'diff:deletion)
+ (ident (gensym "diff:deletion"))
+ (body args)))
(define-markup (insertion :rest args)
- (color :fg "green" args))
+ (new markup
+ (markup 'diff:insertion)
+ (ident (gensym "diff:insertion"))
+ (body args)))
(define-markup (replacement :rest args)
- (color :fg "orange" args))
+ (new markup
+ (markup 'diff:replacement)
+ (ident (gensym "diff:replacement"))
+ (body args)))
(define-markup (unchanged :rest args)
- args)
+ (new markup
+ (markup 'diff:unchanged)
+ (ident (gensym "diff:unchanged"))
+ (body args)))
;;;
@@ -323,6 +337,33 @@
(resolve! ast2 engine env)
(make-diff-document ast1 ast2)))
+
+
+;;;
+;;; Default writers.
+;;;
+
+(markup-writer 'diff:deletion (find-engine 'base)
+ :action (lambda (n e)
+ ;;(color :fg "red" (symbol "middot"))
+
+ ;; Output nothing by default so that the document remains
+ ;; readable.
+ #f))
+
+(markup-writer 'diff:insertion (find-engine 'base)
+ :action (lambda (n e)
+ (output (color :fg "green" (markup-body n)) e)))
+
+(markup-writer 'diff:replacement (find-engine 'base)
+ :action (lambda (n e)
+ (output (color :fg "orange" (markup-body n)) e)))
+
+(markup-writer 'diff:unchanged (find-engine 'base)
+ :action (lambda (n e)
+ (output (markup-body n) e)))
+
+
;;; diff.scm ends here
;;; arch-tag: 69ad10fa-5688-4835-8956-439e44e26847