removing xanadu
This commit is contained in:
parent
1de88dda31
commit
3007b888b3
|
@ -1 +0,0 @@
|
|||
Copyright (C) 2011-2012 Johan Ceuppens
|
|
@ -1 +0,0 @@
|
|||
xanadu : Xanadu file system
|
|
@ -1,2 +0,0 @@
|
|||
version 0.1
|
||||
* preliminary methods
|
|
@ -1,6 +0,0 @@
|
|||
This is a xanadu system.
|
||||
|
||||
ideas/TODO:
|
||||
|
||||
. libaa desktop publishing
|
||||
. xml & svg (use autoprogramming for a scheme version)
|
|
@ -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-first 'get-data)))
|
||||
(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 data)
|
||||
(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))
|
|
@ -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)))
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
(define-interface scgame-interface
|
||||
(export
|
||||
make-scganadu))
|
||||
|
||||
(define-structure scgame
|
||||
scgame-interface
|
||||
(open scheme)
|
||||
(files load scganadu scganaduutil))
|
||||
|
|
@ -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))
|
|
@ -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>"
|
||||
filename
|
||||
"</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>"
|
||||
filename
|
||||
"</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))
|
||||
|
||||
|
|
@ -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 "<scganadu>" "<audio>" "<image>"))
|
||||
(*XMLCLOSEDATA (list "</scganadu>" "</audio>" "</image>"))
|
||||
(*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")))))
|
||||
|
|
@ -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))
|
|
@ -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)))
|
||||
|
Loading…
Reference in New Issue