diff -urN xmlisp-2.0.1/XML/Load-XMLisp.lisp xmlisp-2.0.1.patch/XML/Load-XMLisp.lisp --- xmlisp-2.0.1/XML/Load-XMLisp.lisp 2005-03-01 14:43:51.817289734 +0100 +++ xmlisp-2.0.1.patch/XML/Load-XMLisp.lisp 2005-03-01 14:44:13.372148387 +0100 @@ -21,8 +21,14 @@ (defvar *XMLisp-Files* - '("xml-utilities" "element-definition" "xml-tag-definitions" "element-implementation" - "name-character-check" "xml-parser" "xml-writer" "XMLisp") + '("xml-utilities" + "element-definition" + "xml-tag-definitions" + "element-implementation" + "name-character-check" + "xml-parser" + "xml-writer" + "XMLisp") "all the XMLisp files") diff -urN xmlisp-2.0.1/XML/XMLisp.lisp xmlisp-2.0.1.patch/XML/XMLisp.lisp --- xmlisp-2.0.1/XML/XMLisp.lisp 2005-03-01 14:43:51.818289589 +0100 +++ xmlisp-2.0.1.patch/XML/XMLisp.lisp 2005-03-01 15:38:02.153594495 +0100 @@ -46,35 +46,6 @@ (in-package :xml) -;; each MOP implementation appears to keep its symbols in a different, application specific package: how clever!! -;; probably not a good idea to just USE that entire package - -(eval-when (:compile-toplevel :load-toplevel :execute) - #+:mcl - (import '(ccl:slot-definition-name ccl:slot-definition-type ccl:slot-definition-initform)) - #+:ccl-5.1 - (import '(ccl:class-slots)) - #+:common-lispworks - (import '(harlequin-common-lisp:class-slots harlequin-common-lisp:slot-definition-name - harlequin-common-lisp:slot-definition-type harlequin-common-lisp:slot-definition-initform))) - - -(export '( - ;; classes - xml-serializer ![cdata[ !doctype !-- - ;; aggregation methods - set-attribute-value add-subobject add-object-to-slot cleanup-sub-object-slots - ;; print control methods - xml-printable-as-attribute-value-p xml-printable-as-subelement-p map-object print-slot-with-name-p - print-slot-value-as-attribute print-slot-value-as-subelement print-slots - print-typed-attribute-value print-typed-subelement-value - ;; reading - load-object save-object finished-reading finished-reading-attributes read-typed-attribute-value - ;; variables - *XMLisp-Output-Non-Default-Value-Attributes* - def-element-class-name xml-tag-name-string)) - - (defvar *XMLisp-Output-Non-Default-Value-Attributes* nil "if non-nil output also attributes that are the same as the default value.") (defvar *XMLiSP-Element-Class-Names* (make-hash-table :test #'eq) "table mapping element names to class names") @@ -1128,7 +1099,21 @@ (read-xmlisp-element (read-name-and-make-instance Stream) Stream)) -(set-macro-character #\< #'element-reader t) +;;; FIXME: this does not nest properly. I think it's better to provide +;;; a readtable for the user to enable & disable. +(let ((read-syntax-enabled) + (<-macro-character nil)) + (defun enable-xmlisp-read-syntax () + (unless read-syntax-enabled + (setf read-syntax-enabled t) + (setf <-macro-character (multiple-value-list (get-macro-character #\<))) + (set-macro-character #\< #'element-reader t))) + (defun disable-xmlisp-read-syntax () + (when read-syntax-enabled + (setf read-syntax-enabled nil) + (apply #'set-macro-character #\< <-macro-character)))) + +(enable-xmlisp-read-syntax) ;_____________________________ ; Platform Specific Printing | diff -urN xmlisp-2.0.1/XML/element-definition.lisp xmlisp-2.0.1.patch/XML/element-definition.lisp --- xmlisp-2.0.1/XML/element-definition.lisp 2005-03-01 14:43:51.819289443 +0100 +++ xmlisp-2.0.1.patch/XML/element-definition.lisp 2005-03-01 14:44:13.373148242 +0100 @@ -18,14 +18,6 @@ (in-package :xml) -(export '(NAME - ELEMENT-ATTRIBUTES - CONTENT - START-TAG-ACTIONS - END-TAG-ACTIONS - CONTAINER - XML-ELEMENT)) - ;*************************************** ;* C L A S S D E F I N I T I O N S * ;*************************************** diff -urN xmlisp-2.0.1/XML/element-implementation.lisp xmlisp-2.0.1.patch/XML/element-implementation.lisp --- xmlisp-2.0.1/XML/element-implementation.lisp 2005-03-01 14:43:51.819289443 +0100 +++ xmlisp-2.0.1.patch/XML/element-implementation.lisp 2005-03-01 14:44:13.374148096 +0100 @@ -18,12 +18,6 @@ (in-package :xml) -(export '(GET-ELEMENT-ATTRIBUTE - SET-ELEMENT-ATTRIBUTE - GET-CHILD-ELEMENT - GET-ELEMENT-TEXT-CONTENT - SET-ELEMENT-TEXT-CONTENT)) - ;*************************************** ;* I M P L E M E N T A T I O N * ;*************************************** diff -urN xmlisp-2.0.1/XML/name-character-check.lisp xmlisp-2.0.1.patch/XML/name-character-check.lisp --- xmlisp-2.0.1/XML/name-character-check.lisp 2005-03-01 14:43:51.819289443 +0100 +++ xmlisp-2.0.1.patch/XML/name-character-check.lisp 2005-03-01 14:44:13.374148096 +0100 @@ -19,16 +19,6 @@ (in-package :xml) -(export '(WHITE-SPACE-P - NAMECHARP - DIGITP - LETTERP - EXTENTERP - IDEOGRAPHICP - COMBINING-CHAR-P - BASE-CHAR-P)) - - (defun WHITE-SPACE-P (Char) (declare (optimize (speed 3) (safety 0))) (case (char-code Char) diff -urN xmlisp-2.0.1/XML/package.lisp xmlisp-2.0.1.patch/XML/package.lisp --- xmlisp-2.0.1/XML/package.lisp 1970-01-01 01:00:00.000000000 +0100 +++ xmlisp-2.0.1.patch/XML/package.lisp 2005-03-01 15:01:24.883818661 +0100 @@ -0,0 +1,104 @@ +(defpackage XML + (:use "COMMON-LISP") + (:export + ;; symbols in xml-utilities.lisp: + "*PRINT-VERBOSE*" + "*XML-PROLOG*" + "*XML-VERSION*" + "*XML-FILE-VERSION*" + "*XML-FILE-BEING-PARSED*" + "FORMAT-IF-VERBOSE" + "PRINT-N-SPACES" + "MAP-TO-XML" + "MAP-FROM-XML" + ;; symbols in element-definition.lisp: + "NAME" + "ELEMENT-ATTRIBUTES" + "CONTENT" + "START-TAG-ACTIONS" + "END-TAG-ACTIONS" + "CONTAINER" + "XML-ELEMENT" + ;; symbols in xml-tag-definitions.lisp: + "*XML-ELEMENT-DEFINITIONS*" + "DEFXMLELEMENT" + "IN-XML-DOCUMENT" + ;; symbols in element-implementation.lisp: + "GET-ELEMENT-ATTRIBUTE" + "SET-ELEMENT-ATTRIBUTE" + "GET-CHILD-ELEMENT" + "GET-ELEMENT-TEXT-CONTENT" + "SET-ELEMENT-TEXT-CONTENT" + ;; symbols in name-character-check.lisp: + "WHITE-SPACE-P" + "NAMECHARP" + "DIGITP" + "LETTERP" + "EXTENTERP" + "IDEOGRAPHICP" + "COMBINING-CHAR-P" + "BASE-CHAR-P" + ;; symbols in xml-parser.lisp: + "PARSE-XML-FILE" + "PARSE-XML" + "READ-PROLOG" + "READ-ELEMENT" + "READ-NAME" + "READ-WHITE-SPACE" + "READ-EQUAL-SIGN" + "READ-VALUE" + "*XML-RELAXED-CASE*" + ;; symbols in xml-writer.lisp: + "PRINT-OBJECT" + "WRITE-ELEMENT" + ;; symbols in XMLisp.lisp: + ;; classes + "XML-SERIALIZER" + "![CDATA[" + "!DOCTYPE" + "!-- " + ;; aggregation methods + "SET-ATTRIBUTE-VALUE" + "ADD-SUBOBJECT" + "ADD-OBJECT-TO-SLOT" + "CLEANUP-SUB-OBJECT-SLOTS" + ;; print control methods + "XML-PRINTABLE-AS-ATTRIBUTE-VALUE-P" + "XML-PRINTABLE-AS-SUBELEMENT-P" + "MAP-OBJECT" + "PRINT-SLOT-WITH-NAME-P" + "PRINT-SLOT-VALUE-AS-ATTRIBUTE" + "PRINT-SLOT-VALUE-AS-SUBELEMENT" + "PRINT-SLOTS" + "PRINT-TYPED-ATTRIBUTE-VALUE" + "PRINT-TYPED-SUBELEMENT-VALUE" + ;; reading + "LOAD-OBJECT" + "SAVE-OBJECT" + "FINISHED-READING" + "FINISHED-READING-ATTRIBUTES" + "READ-TYPED-ATTRIBUTE-VALUE" + ;; variables + "*XMLISP-OUTPUT-NON-DEFAULT-VALUE-ATTRIBUTES*" + "DEF-ELEMENT-CLASS-NAME" + "XML-TAG-NAME-STRING") + + ;; each MOP implementation appears to keep its symbols in a + ;; different, application specific package: how clever!! probably + ;; not a good idea to just USE that entire package + #+:mcl + (:import-from "CCL" + "SLOT-DEFINITION-NAME" "SLOT-DEFINITION-TYPE" + "SLOT-DEFINITION-INITFORM") + + #+:common-lispworks + (:import-from "HARLEQUIN-COMMON-LISP" + "CLASS-SLOTS" "SLOT-DEFINITION-NAME" "SLOT-DEFINITION-TYPE" + "SLOT-DEFINITION-INITFORM") + #+:ccl-5.1 + (:import-from "CCL" + "CLASS-SLOTS") + #+sbcl + (:import-from "SB-MOP" + "CLASS-SLOTS" "SLOT-DEFINITION-INITFORM" "SLOT-DEFINITION-NAME" + "SLOT-DEFINITION-TYPE")) diff -urN xmlisp-2.0.1/XML/xml-parser.lisp xmlisp-2.0.1.patch/XML/xml-parser.lisp --- xmlisp-2.0.1/XML/xml-parser.lisp 2005-03-01 14:43:51.821289151 +0100 +++ xmlisp-2.0.1.patch/XML/xml-parser.lisp 2005-03-01 14:44:13.375147950 +0100 @@ -22,16 +22,6 @@ (in-package :xml) -(export '(PARSE-XML-FILE - PARSE-XML - READ-PROLOG - READ-ELEMENT - READ-NAME - READ-WHITE-SPACE - READ-EQUAL-SIGN - READ-VALUE - *XML-RELAXED-CASE*)) - (defparameter *XML-RELAXED-CASE* nil "ignore uppercase letters in xml tags?") (defun PARSE-XML-FILE (Filename) diff -urN xmlisp-2.0.1/XML/xml-tag-definitions.lisp xmlisp-2.0.1.patch/XML/xml-tag-definitions.lisp --- xmlisp-2.0.1/XML/xml-tag-definitions.lisp 2005-03-01 14:43:51.821289151 +0100 +++ xmlisp-2.0.1.patch/XML/xml-tag-definitions.lisp 2005-03-01 14:44:13.376147804 +0100 @@ -20,10 +20,6 @@ (in-package :xml) -(export '(*XML-ELEMENT-DEFINITIONS* - DEFXMLELEMENT - IN-XML-DOCUMENT)) - (defvar *XML-ELEMENT-DEFINITIONS* (make-hash-table :size 100)) (defvar *XML-DOCUMENT* nil "The XML document for which the tag definitions need to be declared") diff -urN xmlisp-2.0.1/XML/xml-utilities.lisp xmlisp-2.0.1.patch/XML/xml-utilities.lisp --- xmlisp-2.0.1/XML/xml-utilities.lisp 2005-03-01 14:43:51.821289151 +0100 +++ xmlisp-2.0.1.patch/XML/xml-utilities.lisp 2005-03-01 14:44:13.376147804 +0100 @@ -19,17 +19,6 @@ (in-package :xml) -(export '(*PRINT-VERBOSE* - *XML-PROLOG* - *XML-VERSION* - *XML-FILE-VERSION* - *XML-FILE-BEING-PARSED* - FORMAT-IF-VERBOSE - PRINT-N-SPACES - MAP-TO-XML - MAP-FROM-XML)) - - ;__________________________________ ; P A R A M E T E R S / ;________________________________/ diff -urN xmlisp-2.0.1/XML/xml-writer.lisp xmlisp-2.0.1.patch/XML/xml-writer.lisp --- xmlisp-2.0.1/XML/xml-writer.lisp 2005-03-01 14:43:51.821289151 +0100 +++ xmlisp-2.0.1.patch/XML/xml-writer.lisp 2005-03-01 14:44:13.376147804 +0100 @@ -20,10 +20,6 @@ (in-package :xml) -(export '(PRINT-OBJECT - WRITE-ELEMENT)) - - (defmethod PRINT-OBJECT ((Self Xml-Element) Stream) (declare (special $tab-level$)) (let ((Attributes (element-attributes Self)) diff -urN xmlisp-2.0.1/XML/xmlisp.asd xmlisp-2.0.1.patch/XML/xmlisp.asd --- xmlisp-2.0.1/XML/xmlisp.asd 1970-01-01 01:00:00.000000000 +0100 +++ xmlisp-2.0.1.patch/XML/xmlisp.asd 2005-03-01 14:58:02.688286092 +0100 @@ -0,0 +1,18 @@ +;;; -*- lisp -*- + +(defpackage :xmlisp.system + (:use :cl :asdf)) + +(in-package :xmlisp.system) + +(defsystem xmlisp + :components ((:file "package") + (:file "xml-utilities" :depends-on ("package")) + (:file "element-definition" :depends-on ("package")) + (:file "xml-tag-definitions" :depends-on ("package")) + (:file "element-implementation" :depends-on ("package" "element-definition")) + (:file "name-character-check" :depends-on ("package")) + (:file "xml-parser" :depends-on ("package" "xml-utilities" "element-definition")) + (:file "xml-writer" :depends-on ("package" "xml-utilities" "element-definition")) + (:file "XMLisp" :depends-on ("package" "xml-utilities" "element-definition" "name-character-check" + "xml-parser" "xml-writer")))) \ No newline at end of file