diff --git a/scsh/xanadu/AUTHORS b/scsh/xanadu/AUTHORS deleted file mode 100644 index c2430eb..0000000 --- a/scsh/xanadu/AUTHORS +++ /dev/null @@ -1 +0,0 @@ -Copyright (C) 2011-2012 Johan Ceuppens diff --git a/scsh/xanadu/BLURB b/scsh/xanadu/BLURB deleted file mode 100644 index 26ba26c..0000000 --- a/scsh/xanadu/BLURB +++ /dev/null @@ -1 +0,0 @@ -xanadu : Xanadu file system diff --git a/scsh/xanadu/NEWS b/scsh/xanadu/NEWS deleted file mode 100644 index da41d2c..0000000 --- a/scsh/xanadu/NEWS +++ /dev/null @@ -1,2 +0,0 @@ -version 0.1 -* preliminary methods diff --git a/scsh/xanadu/README b/scsh/xanadu/README deleted file mode 100644 index bcb1b17..0000000 --- a/scsh/xanadu/README +++ /dev/null @@ -1,6 +0,0 @@ -This is a xanadu system. - -ideas/TODO: - -. libaa desktop publishing -. xml & svg (use autoprogramming for a scheme version) diff --git a/scsh/xanadu/b-tree.scm b/scsh/xanadu/b-tree.scm deleted file mode 100644 index 02e92db..0000000 --- a/scsh/xanadu/b-tree.scm +++ /dev/null @@ -1,222 +0,0 @@ -;;; b-tree.scm - a B-tree for Xanadu -;;; -;;; Copyright (c) 2012 Johan Ceuppens -;;; -;;; All rights reserved. -;;; -;;; Redistribution and use in source and binary forms, with or without -;;; modification, are permitted provided that the following conditions -;;; are met: -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. -;;; 2. Redistributions in binary form must reproduce the above copyright -;;; notice, this list of conditions and the following disclaimer in the -;;; documentation and/or other materials provided with the distribution. -;;; 3. The name of the authors may not be used to endorse or promote products -;;; derived from this software without specific prior written permission. -;;; -;;; THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR -;;; IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -;;; OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -;;; IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, -;;; INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -;;; NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -;;; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -;;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -;;; THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -;; FIXMES -;; copy vector nodes into n-ary vectors (from median splitted vecs) - -(define (make-b-tree-node l r) - (let ((data #f) - (left l) - (right r)) - - (define (get-data) - data) - - (define (set-data! value) - (set! data value)) - - (define (set-left-with-index! i value) - (cond ((not left) - (display "b-tree : no left node vector.") - #f) - (else (vector-set! left i value)))) - - (define (set-right-with-index! i value) - (cond ((not right) - (display "b-tree : no right node vector") - #f) - (else (vector-set! right i value)))) - - (define (get-left) - left) - - (define (get-right) - right) - - (define (dispatch msg) - (lambda (msg) - (cond ((eq? msg 'get-left) - get-left) - ((eq? msg 'get-right) - get-right) - ((eq? msg 'set-left-with-index!) - set-left-with-index!) - ((eq? msg 'set-right-with-index!) - set-right-with-index!) - ((eq? msg 'get-data) - get-data) - ((eq? msg 'set-data!) - set-data!) - (else (display "b-tree-node : message not understood")(newline))))) - dispatch)) - -(define (make-b-tree n-ary) - (let ((*tree (make-b-tree-node - (make-vector n-ary (make-b-tree-node #f #f)) - (make-vector n-ary (make-b-tree-node #f #f))))) - - (define (vector-median j v) - (let ((len (vector-length v))) - (let ((retl (make-vector (- j 1) (make-b-tree-node #f #f))) - (retr (make-vector (- len (+ j 1)) (make-b-tree-node #f #f)))) - (do ((i 0 (+ i 1))) - ((= i len)(list retl retr)) - (vector-set! retl i (vector-ref v i)) - (vector-set! retr (- len (+ i 1)) (vector-ref v (- len (+ i 1)))) - )))) - - ;;FIXME - (define (search-rec str tree side-string) ;; root param in b-treenode - (let* ((side-tree (tree side-string)) - (len (vector-length side-tree))) - (do ((i 0 (+ i 1))) - ((let ((side-tree-el-first (vector-ref side-tree i))) - (cond ((>= i len);;last node - (do ((j 0 (+ j 1))) - ((= j len) 0) - (search-rec str (vector-ref side-tree j) 'get-left) - (search-rec str (vector-ref side-tree j) 'get-right) - )) - ((let ((side-tree-el-second (vector-ref side-tree (+ i 1)))) - (and (string? str - ((side-tree-el-second 'get-data)))) - (display "b-tree search : node not found in tree.") 0)) - ((string=? str ((side-tree-el-first 'get-data))) - (display "b-tree search : string found in tree.") str) - (else (display "b-tree : never reached.")))))))) - - (define (search str) - (search-rec str *tree 'get-left) - (search-rec str *tree 'get-right)) - - ;;FIXME - (define (dump-rec tree) - (if (not (tree 'get-left)) - 0 - (let ((len (vector-length (tree 'get-left)))) - (do ((i 0 (+ i 1))) - ((>= i len) 0) - (display (((vector-ref (tree 'get-left) i)'get-data))) - (dump-rec (vector-ref (tree 'get-left) i)) - ))) - (if (not (tree 'get-right)) - 0 - (let ((len (vector-length (tree 'get-right)))) - (do ((i 0 (+ i 1))) - ((>= i len) 0) - (dump-rec (vector-ref (tree 'get-right) i)) - )))) - - (define (dump) - (dump-rec *tree)) - - (define (add-rec str tree) ;; root param in b-treenode ;; refactor call-with-values - - (let ((lefttree (tree 'get-left));;FIXME () - (righttree (tree 'get-right))) - ;;len (vector-length ((tree 'get-left))))) - ;;(call-with-values - ;; (lambda () (values lefttree righttree)) - ;; (lambda (lefttree righttree) - (add-rec-side-tree str lefttree) - (add-rec-side-tree str righttree) - ;; )) - )) - - (define (add-rec-side-tree str side-tree) - (do ((i 0 (+ i 1))) - ((cond ((not side-tree) - #f) - ((= i (vector-length side-tree)) - (do ((i 0 (+ i 1))) - ((= i (vector-length side-tree))0) - (let ((side-tree-node (vector-ref i side-tree))) - (cond ((not (not side-tree-node)) - #f) - (else (add-rec str side-tree-node)))));;NOTE add-rec not the other add-rec - ) - ((let* ((data (((vector-ref side-tree i) 'get-data))) - (left-and-right (vector-median i side-tree));;FIXME right also descend - (new-node (make-b-tree-node - (car left-and-right) - (cadr left-and-right))));;FIXME lenght mustbe n-ary - - (or (not data) - (and data (string? data)(string=? data ""))) - ((new-node 'set-data!) str) - ;;((side-tree 'set-left-with-index!) i new-node) - (vector-set! side-tree i new-node) - (set! i (vector-length side-tree)))) - - ((let ((data (((vector-ref side-tree i) 'get-data))) - (data2 (((vector-ref side-tree (if (< (- i 1)(vector-length side-tree)) - (+ i 1) - i) - ) 'get-data)))) - (or ;;(and (string=?) - ;; (string>? str data)) - (and (string? data) - (string=? data "")) - (and (string? data) - (string? data2) - (string? str data2)));;FIXME data2! - (let ((left-and-right (vector-median i side-tree))) - (let ((new-node (make-b-tree-node (car left-and-right) (cadr left-and-right)))) - ((new-node 'set-data!) str) - (vector-set! side-tree i new-node) - )))) - ((let ((data (((vector-ref side-tree i) 'get-data)))) - (string=? data str) ;;NOTE duplicates possible - (display "b-tree - node already exists.") - 0)) - (else (display "b-tree - add - never reached."))))) - ) - - - - (define (add str) - (add-rec str *tree) - ) - - (define (dispatch msg) - (cond ((eq? msg 'add) add) - ((eq? msg 'search) search) - ((eq? msg 'dump) dump) - (else (display "b-tree : message not understood.")(newline)))) - dispatch)) - -;; test program -;;(define bt (make-b-tree 2)) -;;((bt 'add)"abc") -;;((bt 'add)"def") -;;((bt 'add)"hij") -;;((bt 'search)"abc") -;;((bt 'dump)) diff --git a/scsh/xanadu/load.scm b/scsh/xanadu/load.scm deleted file mode 100644 index ac1621a..0000000 --- a/scsh/xanadu/load.scm +++ /dev/null @@ -1,36 +0,0 @@ -;;; load.scm - a Xanadu file system (until desktop publishing) -;;; -;;; Copyright (c) 2011-2012 Johan Ceuppens -;;; -;;; All rights reserved. -;;; -;;; Redistribution and use in source and binary forms, with or without -;;; modification, are permitted provided that the following conditions -;;; are met: -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. -;;; 2. Redistributions in binary form must reproduce the above copyright -;;; notice, this list of conditions and the following disclaimer in the -;;; documentation and/or other materials provided with the distribution. -;;; 3. The name of the authors may not be used to endorse or promote products -;;; derived from this software without specific prior written permission. -;;; -;;; THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR -;;; IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -;;; OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -;;; IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, -;;; INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -;;; NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -;;; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -;;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -;;; THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -(load "scganadu.scm") - -;; interface - -(define X (make-scganadu)) -(define (scganadu-add-file X filename) ((X 'add-file) filename)) -(define (scganadu-attach-to-file! X filename) ((X 'attach-to-file! filename))) - diff --git a/scsh/xanadu/packages.scm b/scsh/xanadu/packages.scm deleted file mode 100644 index f34cefa..0000000 --- a/scsh/xanadu/packages.scm +++ /dev/null @@ -1,9 +0,0 @@ -(define-interface scgame-interface - (export - make-scganadu)) - -(define-structure scgame - scgame-interface - (open scheme) - (files load scganadu scganaduutil)) - diff --git a/scsh/xanadu/pkg-def.scm b/scsh/xanadu/pkg-def.scm deleted file mode 100644 index 69f99f8..0000000 --- a/scsh/xanadu/pkg-def.scm +++ /dev/null @@ -1,14 +0,0 @@ -(define-package "xanadu" - (0 1) - ((install-lib-version (1 3 0))) - (write-to-load-script - `((config) - (load ,(absolute-file-name "packages.scm" - (get-directory 'scheme #f))))) - (install-file "README" 'doc) - (install-file "NEWS" 'doc) - (install-string (COPYING) "COPYING" 'doc) - (install-file "packages.scm" 'scheme) - (install-file "config.scm" 'scheme) - (install-file "scganadauutil.scm" 'scheme) - (install-file "scganadu.scm" 'scheme)) diff --git a/scsh/xanadu/scganadu.scm b/scsh/xanadu/scganadu.scm deleted file mode 100644 index 42c0fb3..0000000 --- a/scsh/xanadu/scganadu.scm +++ /dev/null @@ -1,76 +0,0 @@ -;;; scganadu.scm - a Xanadu file system (until desktop publishing) -;;; -;;; Copyright (c) 2011-2012 Johan Ceuppens -;;; -;;; All rights reserved. -;;; -;;; Redistribution and use in source and binary forms, with or without -;;; modification, are permitted provided that the following conditions -;;; are met: -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. -;;; 2. Redistributions in binary form must reproduce the above copyright -;;; notice, this list of conditions and the following disclaimer in the -;;; documentation and/or other materials provided with the distribution. -;;; 3. The name of the authors may not be used to endorse or promote products -;;; derived from this software without specific prior written permission. -;;; -;;; THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR -;;; IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -;;; OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -;;; IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, -;;; INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -;;; NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -;;; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -;;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -;;; THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -;; This code fabricates xanadu hypertext files to attach -;; to xanandu objects or use as metafiles - -(load "scganaduutil.scm") - -(define (make-scganadu) - (let ((record (delay #f))) - - (define (add-file filename) - (let ((displayproc (write (((FILE-MAKER-unit (force record)) 'get-post-html) - (string-append "" - filename - "")))) - - (with-output-to-file (string-append "." filename ".scganadu") displayproc) - ))) - - (define (attach-to-file! filename) - (let ((displayproc (write (((FILE-MAKER-unit (force record)) 'get-post-html) - (string-append "" - filename - ""))))) - - (with-output-to-file filename displayproc) - )) - - (define (dispatch msg) - (lambda (msg) - (cond ((eq? msg 'add-file)add-file) - ((eq? msg 'attach-to-file!)attach-to-file!) - (else (aspecterror) (display "make-scganadu"))))) - - - (define :scganadu-record - (make-record-type 'scganadu-record - '(FILE-MAKER make-scganadu))) - (define make-scganadu-record - (record-constructor :scganadu-record - '(FILE-MAKER make-scganadu))) - (define FILE-MAKER-unit (record-accessor :scganadu-record 'FILE-MAKER)) - (define make-scganadu-unit (record-accessor :scganadu-record 'make-scganadu)) - (define make-scganadu-record - (delay (make-copy-of-document)) - (delay (make-cell dispatch))) - (set! record make-scganadu-record) - dispatch)) - - diff --git a/scsh/xanadu/scganaduutil.scm b/scsh/xanadu/scganaduutil.scm deleted file mode 100644 index 9a55432..0000000 --- a/scsh/xanadu/scganaduutil.scm +++ /dev/null @@ -1,92 +0,0 @@ -;;; scganaduutil.scm - a scheme Xanadu utility -;;; -;;; Copyright (c) 2011-2012 Johan Ceuppens -;;; -;;; All rights reserved. -;;; -;;; Redistribution and use in source and binary forms, with or without -;;; modification, are permitted provided that the following conditions -;;; are met: -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. -;;; 2. Redistributions in binary form must reproduce the above copyright -;;; notice, this list of conditions and the following disclaimer in the -;;; documentation and/or other materials provided with the distribution. -;;; 3. The name of the authors may not be used to endorse or promote products -;;; derived from this software without specific prior written permission. -;;; -;;; THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR -;;; IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -;;; OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -;;; IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, -;;; INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -;;; NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -;;; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -;;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -;;; THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -(define (aspecterror) - (display "::error:: Message not understood.")) - -(define (aspectmsg) - (display "::message:: ")) - -;; FIX : use scsh regexp instead of these following 2 functions - -(define (string-cat s j) - (if (< j (string-length s)) - (begin - (display j) - (string-append (string (string-ref s j)) (string-cat s (+ j 1))) - ) - "")) - -(define (substring? needle haystack j) -;; (define (max? s1 s2 j) - (if (and (string? haystack)(string? needle)) - (let ((hs (string-cat haystack j))) - (if (string<=? needle hs) - hs - #f)) - #f)) - - -(define (make-copy-of-document) - (let ((*XMLOPENDATA (list "" "" "" "")) - (*scganadutag! car) - (*audiotag! cadr) - (*imagetag! caadr) - ) - - (define (get-open-xml tag) - (tag *XMLOPENDATA)) - (define (get-close-xml tag) - (tag *XMLCLOSEDATA)) - - (define (get-copyright) - "Copyright (C) unknown by SCGanadu.")) - - (define (get-post hypertext) - (get-post-html hypertext)) - (define (get-post-html hypertext) - (string-append (get-open-xml scganadutag!) hypertext (get-open-xml scganadutag!)) - (define (get-post-sound hypertext2) - (get-post-html (string (get-open-xml audiotag!) hypertext2 (get-close-xml audiotag!)))) - (define (get-post-image hypertext3) - (get-post-html (string (get-open-xml imagetag!) hypertext3 (get-close-xml imagetag!)))) - - (lambda (msg) - (cond ((eq? msg 'get-copyright) - get-copyright) - ((eq? msg 'get-post-sound) - get-post-sound) - ((eq? msg 'get-post-image) - get-post-image) - ((eq? msg 'get-post-scganadu) - get-post-scganadu) - ((eq? msg 'get-post) - get-post) - (else (aspecterror) (display "make-copy-of-document"))))) - diff --git a/scsh/xanadu/xml-tree.scm b/scsh/xanadu/xml-tree.scm deleted file mode 100644 index a9b23ed..0000000 --- a/scsh/xanadu/xml-tree.scm +++ /dev/null @@ -1,41 +0,0 @@ -;;; xml-tree.scm - a xml tree for Xanadu -;;; -;;; Copyright (c) 2012 Johan Ceuppens -;;; -;;; All rights reserved. -;;; -;;; Redistribution and use in source and binary forms, with or without -;;; modification, are permitted provided that the following conditions -;;; are met: -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. -;;; 2. Redistributions in binary form must reproduce the above copyright -;;; notice, this list of conditions and the following disclaimer in the -;;; documentation and/or other materials provided with the distribution. -;;; 3. The name of the authors may not be used to endorse or promote products -;;; derived from this software without specific prior written permission. -;;; -;;; THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR -;;; IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -;;; OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -;;; IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, -;;; INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -;;; NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -;;; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -;;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -;;; THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -(load "b-tree.scm") -(load "xml.scm") - -(define (make-xml-tree n-ary) - (let ((*bt (make-b-tree n-ary))) - - (define (add-tag tag) - 0) - - (define (dispatch msg) - (cond ((eq? msg 'add-tag)add-tag) - (else (*bt msg)))) - dispatch)) diff --git a/scsh/xanadu/xml.scm b/scsh/xanadu/xml.scm deleted file mode 100644 index a7c5b7d..0000000 --- a/scsh/xanadu/xml.scm +++ /dev/null @@ -1,57 +0,0 @@ -;;; xml.scm - a simple scheme XML library -;;; -;;; Copyright (c) 2012 Johan Ceuppens -;;; -;;; All rights reserved. -;;; -;;; Redistribution and use in source and binary forms, with or without -;;; modification, are permitted provided that the following conditions -;;; are met: -;;; 1. Redistributions of source code must retain the above copyright -;;; notice, this list of conditions and the following disclaimer. -;;; 2. Redistributions in binary form must reproduce the above copyright -;;; notice, this list of conditions and the following disclaimer in the -;;; documentation and/or other materials provided with the distribution. -;;; 3. The name of the authors may not be used to endorse or promote products -;;; derived from this software without specific prior written permission. -;;; -;;; THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR -;;; IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -;;; OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -;;; IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, -;;; INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -;;; NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -;;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -;;; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -;;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -;;; THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -(define (xml-load-tree! filename) - (let ((in (open-input-file filename)) - (contents "")) - - (define (tagify! c tagged) - (cond ((> tagged 0) "") - ((= tagged 0) (if (eq? c #\>) "" (string c))) - ;; FIXME make node, descend one level - (else ""))) - - (define (xml-read-in-file contents) - (let ((tagged 0)) - (do ((c (read-char in) (read-char in))) - ((eof-object? c) contents) - (cond ((and (= tagged 0)(eq? c #\<)) - (set! tagged (+ tagged 1))) - ((and (> tagged 0)(eq? c #\<)) - (set! tagged (+ tagged 1))) - ((and (= tagged 0)(eq? c #\>)) - (set! tagged (- tagged 1))) - ((and (> tagged 0)(eq? c #\>)) - (set! tagged (- tagged 1))) - ((< tagged 0) - (display "xml : bad xml file - broken tags.")(newline) - (set! tagged 0)) - ) - (set! contents (string-append contents (tagify! c tagged)))))) - (xml-read-in-file contents))) -