From david at lichteblau.com Fri Mar 25 18:29:41 2005 From: david at lichteblau.com (David Lichteblau) Date: Fri, 25 Mar 2005 19:29:41 +0100 Subject: [closure-devel] using closure with cxml Message-ID: <20050325182941.GA440@gargravarr.knowledgetools.de> Hi, the attached patch removes the rune (and xstream) implementations as well as the XML parser from closure. It adds a dependency to cxml and uses the rune implementation shipped with cxml. A second step would be to adapt closure to actually work with string-rods instead of codepoint-rods, but I have not started working on that yet. d. -------------- next part -------------- cvs server: src/glisp/runes.lisp was removed, no comparison available cvs server: src/xml/dom-builder.lisp was removed, no comparison available cvs server: src/xml/dom-impl.lisp was removed, no comparison available cvs server: src/xml/dompack.lisp was removed, no comparison available cvs server: src/xml/encodings-data.lisp was removed, no comparison available cvs server: src/xml/encodings.lisp was removed, no comparison available cvs server: src/xml/package.lisp was removed, no comparison available cvs server: src/xml/sax-handler.lisp was removed, no comparison available cvs server: src/xml/xml-canonic.lisp was removed, no comparison available cvs server: src/xml/xml-name-rune-p.lisp was removed, no comparison available cvs server: src/xml/xml-parse.lisp was removed, no comparison available cvs server: src/xml/xml-stream.lisp was removed, no comparison available cvs server: src/xml/sax-tests/event-collecting-handler.lisp was removed, no comparison available cvs server: src/xml/sax-tests/package.lisp was removed, no comparison available cvs server: src/xml/sax-tests/tests.lisp was removed, no comparison available Index: closure.asd =================================================================== RCS file: /project/closure/cvsroot/closure/closure.asd,v retrieving revision 1.4 diff -u -r1.4 closure.asd --- closure.asd 13 Mar 2005 20:54:52 -0000 1.4 +++ closure.asd 25 Mar 2005 18:19:25 -0000 @@ -58,6 +58,7 @@ (defpackage :glisp (:use)) (asdf:defsystem glisp + :depends-on (:cxml) :pathname (merge-pathnames "src/glisp/" (make-pathname :name nil :type nil :defaults *load-truename*)) @@ -75,12 +76,10 @@ #-(OR sbcl CLISP CMU ALLEGRO GCL) #.(error "Configure!")) (:file "package" :depends-on (dependent)) - (:file "runes" - :depends-on ("package" dependent)) (:file "util" - :depends-on ("package" dependent "runes")) + :depends-on ("package" dependent)) (:file "match" - :depends-on ("package" dependent "runes" "util")))) + :depends-on ("package" dependent "util")))) (asdf:defsystem closure @@ -121,20 +120,6 @@ (:file "css-support"))) ;; Libraries - - (:module xml - :components - ((:file "package") - (:file "encodings" :depends-on ("package")) - (:file "encodings-data" :depends-on ("package" "encodings")) - (:file "sax-handler") - (:file "dompack") - (:file "dom-impl" :depends-on ("dompack")) - (:file "dom-builder" :depends-on ("dom-impl" "sax-handler")) - (:file "xml-stream" :depends-on ("package")) - (:file "xml-name-rune-p" :depends-on ("package")) - (:file "xml-parse" :depends-on ("package" "dompack" "sax-handler")) - (:file "xml-canonic" :depends-on ("package" "dompack" "xml-parse")) )) ;; CLEX and LALR Index: src/defpack.lisp =================================================================== RCS file: /project/closure/cvsroot/closure/src/defpack.lisp,v retrieving revision 1.3 diff -u -r1.3 defpack.lisp --- src/defpack.lisp 13 Mar 2005 18:00:56 -0000 1.3 +++ src/defpack.lisp 25 Mar 2005 18:19:26 -0000 @@ -28,7 +28,7 @@ (defpackage :renderer (:nicknames :r2) - (:use :glisp) + (:use :glisp :runes) (:import-from :imagelib #:aimage #:aimage-width @@ -92,18 +92,18 @@ )) (defpackage :ws/x11 - (:use :glisp) + (:use :glisp :runes) (:export #:aimage->ximage)) (defpackage :gif - (:use :glisp) + (:use :glisp :runes) (:export #:gif-stream->aimage)) (defpackage :ws/charset ;;(:nicknames :charset) ;; Arg! CLISP now defines a package called "charset". - (:use :glisp) + (:use :glisp :runes) (:export #:CHARSET #:CHARSET-DECODE #:CHARSET-ENCODE @@ -116,7 +116,7 @@ ;;zzz(defpackage :ws/estk (:use :glisp)) ;should die (defpackage :gui - (:use :glisp) + (:use :glisp :runes) (:import-from #:clim #:+nowhere+ @@ -189,7 +189,7 @@ )) -(defpackage :gtk-gui (:use :glisp)) +(defpackage :gtk-gui (:use :glisp :runes)) (defpackage :closure (:use) @@ -226,9 +226,4 @@ "DEVICE-FONT-UNDERLINE-THICKNESS" )) -(defpackage :clue-gui2 (:use #||:glue :clue||# :glisp)) - - - - - +(defpackage :clue-gui2 (:use #||:glue :clue||# :glisp :runes)) Index: src/css/package.lisp =================================================================== RCS file: /project/closure/cvsroot/closure/src/css/package.lisp,v retrieving revision 1.3 diff -u -r1.3 package.lisp --- src/css/package.lisp 13 Mar 2005 18:00:58 -0000 1.3 +++ src/css/package.lisp 25 Mar 2005 18:19:26 -0000 @@ -28,7 +28,7 @@ (in-package :CL-USER) (defpackage :css - (:use :glisp) + (:use :glisp :runes) ;; (:import-from "CLOSURE-PROTOCOL" ;; basic element protocol Index: src/glisp/package.lisp =================================================================== RCS file: /project/closure/cvsroot/closure/src/glisp/package.lisp,v retrieving revision 1.4 diff -u -r1.4 package.lisp --- src/glisp/package.lisp 13 Mar 2005 18:01:15 -0000 1.4 +++ src/glisp/package.lisp 25 Mar 2005 18:19:28 -0000 @@ -285,35 +285,6 @@ "LREDUCE*" "WITH-UNIQUE-NAMES" - ;; runes.lisp - "RUNE" - "ROD" - "SIMPLE-ROD" - "%RUNE" - "ROD-CAPITALIZE" - "CODE-RUNE" - "RUNE-CODE" - "RUNE-DOWNCASE" - "RUNE-UPCASE" - "ROD-DOWNCASE" - "ROD-UPCASE" - "WHITE-SPACE-RUNE-P" - "DIGIT-RUNE-P" - "RUNE=" - "RUNE<=" - "RUNE>=" - "RUNE-EQUAL" - "RUNEP" - "SLOOPY-ROD-P" - "ROD=" - "ROD-EQUAL" - "MAKE-ROD" - "CHAR-RUNE" - "RUNE-CHAR" - "ROD-STRING" - "STRING-ROD" - "ROD-SUBSEQ" - "G/MAKE-HASH-TABLE" "G/HASHGET" "G/CLRHASH" Index: src/glisp/util.lisp =================================================================== RCS file: /project/closure/cvsroot/closure/src/glisp/util.lisp,v retrieving revision 1.4 diff -u -r1.4 util.lisp --- src/glisp/util.lisp 13 Mar 2005 18:01:16 -0000 1.4 +++ src/glisp/util.lisp 25 Mar 2005 18:19:30 -0000 @@ -216,14 +216,16 @@ (t (subseq string start))))) (defun sanify-rod (string &optional (begin? t) (end? t) (start 0)) - (let ((i (position-if #'white-space-rune-p string :start start))) + (let ((i (position-if #'runes:white-space-rune-p string :start start))) (cond (i - (let ((j (position-if-not #'white-space-rune-p string :start i))) + (let ((j (position-if-not #'runes:white-space-rune-p + string + :start i))) (if j - (concatenate 'rod (subseq string start i) + (concatenate 'runes:rod (subseq string start i) (if (and (= i start) begin?) '#() '#(32)) (sanify-rod string nil end? j)) - (concatenate 'rod (subseq string start i) + (concatenate 'runes:rod (subseq string start i) (if (not end?) '#(32) '#()))))) (t (subseq string start))))) Index: src/gui/clue-gui.lisp =================================================================== RCS file: /project/closure/cvsroot/closure/src/gui/clue-gui.lisp,v retrieving revision 1.3 diff -u -r1.3 clue-gui.lisp --- src/gui/clue-gui.lisp 13 Mar 2005 18:01:37 -0000 1.3 +++ src/gui/clue-gui.lisp 25 Mar 2005 18:19:33 -0000 @@ -115,7 +115,7 @@ ((member mime-type (list (netlib:find-mime-type "text/html"))) (sgml::parse-html input charset)) ((member mime-type (list (netlib:find-mime-type "text/xml"))) - (xml::parse-stream input)) + (cxml:parse-stream input (dom:make-dom-builder))) ((or t #+NIL @@ -213,6 +213,10 @@ (proxee :initarg :proxee) (serial :initarg :serial) (dumpee :initarg :dumpee :initform nil) ) ) + +(defmethod runes::figure-encoding ((stream glisp:gstream)) + ;; For HTML iso-8859-1 is the default + (values (cxml::find-encoding :iso-8859-1) nil)) (defmethod g/read-byte ((stream pb-stream) &optional (eof-error-p t) eof-value) (with-slots (nread ntotal proxee dumpee) stream Index: src/imagelib/deflate.lisp =================================================================== RCS file: /project/closure/cvsroot/closure/src/imagelib/deflate.lisp,v retrieving revision 1.4 diff -u -r1.4 deflate.lisp --- src/imagelib/deflate.lisp 13 Mar 2005 18:02:00 -0000 1.4 +++ src/imagelib/deflate.lisp 25 Mar 2005 18:19:36 -0000 @@ -29,7 +29,7 @@ (in-package :PNG) (defpackage :deflate - (:use :glisp) + (:use :glisp :runes) (:export #:make-deflator #:stuff-deflator Index: src/imagelib/package.lisp =================================================================== RCS file: /project/closure/cvsroot/closure/src/imagelib/package.lisp,v retrieving revision 1.2 diff -u -r1.2 package.lisp --- src/imagelib/package.lisp 13 Mar 2005 18:02:01 -0000 1.2 +++ src/imagelib/package.lisp 25 Mar 2005 18:19:36 -0000 @@ -29,7 +29,7 @@ (in-package :CL-USER) (defpackage :imagelib - (:use :glisp) + (:use :glisp :runes) (:export #:aimage #:aimage-width Index: src/net/package.lisp =================================================================== RCS file: /project/closure/cvsroot/closure/src/net/package.lisp,v retrieving revision 1.2 diff -u -r1.2 package.lisp --- src/net/package.lisp 13 Mar 2005 18:02:19 -0000 1.2 +++ src/net/package.lisp 25 Mar 2005 18:19:36 -0000 @@ -30,7 +30,7 @@ (defpackage :ws/netlib (:nicknames :netlib) - (:use :glisp :url) + (:use :glisp :url :runes) (:export #:*options/connection-timeout* #:open-document #:with-open-document Index: src/net/url.lisp =================================================================== RCS file: /project/closure/cvsroot/closure/src/net/url.lisp,v retrieving revision 1.5 diff -u -r1.5 url.lisp --- src/net/url.lisp 13 Mar 2005 18:02:19 -0000 1.5 +++ src/net/url.lisp 25 Mar 2005 18:19:38 -0000 @@ -41,7 +41,7 @@ ;(require :glisp) (defpackage :url - (:use :glisp) + (:use :glisp :runes) (:export #:parse-url #:unparse-url Index: src/parse/package.lisp =================================================================== RCS file: /project/closure/cvsroot/closure/src/parse/package.lisp,v retrieving revision 1.3 diff -u -r1.3 package.lisp --- src/parse/package.lisp 13 Mar 2005 18:02:40 -0000 1.3 +++ src/parse/package.lisp 25 Mar 2005 18:19:38 -0000 @@ -29,7 +29,7 @@ (in-package :CL-USER) (defpackage :sgml - (:use :glisp) + (:use :glisp :runes) (:export #:SGML-PARSE #:PPT #:SGML-UNPARSE Index: src/parse/sgml-parse.lisp =================================================================== RCS file: /project/closure/cvsroot/closure/src/parse/sgml-parse.lisp,v retrieving revision 1.4 diff -u -r1.4 sgml-parse.lisp --- src/parse/sgml-parse.lisp 13 Mar 2005 18:02:40 -0000 1.4 +++ src/parse/sgml-parse.lisp 25 Mar 2005 18:19:42 -0000 @@ -240,36 +240,36 @@ (defmacro a-read-byte (input) (let ((c (gensym))) - `(let ((,c (xml:read-rune ,input))) + `(let ((,c (runes:read-rune ,input))) (if (eq ,c :eof) nil ,c)))) (defmacro a-peek-byte (input) (let ((c (gensym))) - `(let ((,c (xml:peek-rune ,input))) + `(let ((,c (runes:peek-rune ,input))) (if (eq ,c :eof) nil ,c)))) (defmacro a-unread-byte (byte input) - `(xml:unread-rune ,byte ,input)) + `(runes:unread-rune ,byte ,input)) (defmacro a-stream-position (input) - `(xml:xstream-position ,input)) + `(runes:xstream-position ,input)) (defun make-a-stream (&key cl-stream) - (xml:make-xstream cl-stream :initial-speed 1 :speed 8192)) + (runes:make-xstream cl-stream :initial-speed 1 :speed 8192)) -(defmethod xml::read-octets (sequence (stream glisp:gstream) start end) +(defmethod runes::read-octets (sequence (stream glisp:gstream) start end) (glisp:g/read-byte-sequence sequence stream :start start :end end)) -(defmethod xml::xstream/close ((stream glisp:gstream)) +(defmethod runes::xstream/close ((stream glisp:gstream)) (glisp:g/close stream)) ;; a fake definition -- XXX non-reentrant! (defun a-stream-scratch (input) - (getf (xml::xstream-plist input) 'scratch-pad)) + (getf (runes::xstream-plist input) 'scratch-pad)) (defun (setf a-stream-scratch) (new-value input) - (setf (getf (xml::xstream-plist input) 'scratch-pad) new-value)) + (setf (getf (runes::xstream-plist input) 'scratch-pad) new-value)) ;;;; ------------------------------------------------------------------------- ;;;; Reporting Errors @@ -295,8 +295,8 @@ (when (>= level *parse-warn-level*) (unless *options/parser-silent-p* (let ((preample (format nil ";; Parser warning: ~11@ ~11@: ~5A " - (and input (ignore-errors (xml:xstream-line-number input))) - (and input (ignore-errors (xml:xstream-column-number input))) + (and input (ignore-errors (runes:xstream-line-number input))) + (and input (ignore-errors (runes:xstream-column-number input))) (make-string level :initial-element #\*)))) (fresh-line *trace-output*) (write-string preample *trace-output*) @@ -1038,8 +1038,8 @@ (handle-meta-tag-in-parser input (caddr ausgabe)))) ;; when the BODY tag is openend, switch the streams speed to full speed. (cond ((and (eq (cadr ausgabe) :body)) - (setf (xml::xstream-speed input) - (length (xml::xstream-os-buffer input))))) + (setf (runes::xstream-speed input) + (length (runes::xstream-os-buffer input))))) (let ((n (sgml::make-pt/low :name (cadr ausgabe) :attrs (caddr ausgabe) @@ -1294,7 +1294,7 @@ (defun parse-html (input &optional (charset :iso-8859-1)) (let ((dtd cl-user::*html-dtd*)) - (let ((input (xml:make-xstream input :initial-speed 1 :speed 128))) + (let ((input (runes:make-xstream input :initial-speed 1 :speed 128))) (setf (a-stream-scratch input) (make-array #.(* 2 *buf-size*) :element-type 'rune)) (setup-code-vector input charset) @@ -1583,9 +1583,9 @@ ;; (defun setup-code-vector (input charset) - (let ((enc (xml::find-encoding charset))) + (let ((enc (cxml::find-encoding charset))) (cond ((not (null enc)) - (setf (xml:xstream-encoding input) enc)) + (setf (runes:xstream-encoding input) enc)) (t (parse-warn input 4 "There is no such encoding: ~S." charset))))) @@ -1795,7 +1795,7 @@ #|| (format T "~&;; Parse error (line ~D column ~D): [~A] Saw ~A in ~A." - (xml:xstream-line-number input) - (xml:xstream-column-number input)) + (runes:xstream-line-number input) + (runes:xstream-column-number input)) -||# \ No newline at end of file +||# Index: src/protocols/package.lisp =================================================================== RCS file: /project/closure/cvsroot/closure/src/protocols/package.lisp,v retrieving revision 1.3 diff -u -r1.3 package.lisp --- src/protocols/package.lisp 13 Mar 2005 18:03:05 -0000 1.3 +++ src/protocols/package.lisp 25 Mar 2005 18:19:42 -0000 @@ -27,7 +27,7 @@ ;;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. (defpackage :CLOSURE-PROTOCOL - (:use :glisp) + (:use :glisp :runes) (:export ;; Basic Element Protocol #:element-p Index: src/util/clex.lisp =================================================================== RCS file: /project/closure/cvsroot/closure/src/util/clex.lisp,v retrieving revision 1.3 diff -u -r1.3 clex.lisp --- src/util/clex.lisp 13 Mar 2005 18:03:57 -0000 1.3 +++ src/util/clex.lisp 25 Mar 2005 18:19:44 -0000 @@ -27,7 +27,7 @@ ;;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. (defpackage :clex - (:use :glisp) + (:use :glisp :runes) (:export #:deflexer #:backup #:begin #:initial #:bag)) Index: src/util/lalr.lisp =================================================================== RCS file: /project/closure/cvsroot/closure/src/util/lalr.lisp,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 lalr.lisp --- src/util/lalr.lisp 22 Jul 2002 02:27:19 -0000 1.1.1.1 +++ src/util/lalr.lisp 25 Mar 2005 18:19:45 -0000 @@ -7,7 +7,7 @@ ;;; (c) 1988 Mark Johnson (defpackage :lalr - (:use :glisp) + (:use :glisp :runes) (:export #:DEFINE-GRAMMAR)) (in-package :LALR) Index: src/util/xterm.lisp =================================================================== RCS file: /project/closure/cvsroot/closure/src/util/xterm.lisp,v retrieving revision 1.2 diff -u -r1.2 xterm.lisp --- src/util/xterm.lisp 13 Mar 2005 18:03:58 -0000 1.2 +++ src/util/xterm.lisp 25 Mar 2005 18:19:45 -0000 @@ -28,7 +28,7 @@ (defpackage :XTERM - (:use :glisp) + (:use :glisp :runes) (:export #:open-terminal ))