removing xanadu

This commit is contained in:
erana 2012-01-25 03:28:13 +09:00
parent 1de88dda31
commit 3007b888b3
12 changed files with 0 additions and 557 deletions

View File

@ -1 +0,0 @@
Copyright (C) 2011-2012 Johan Ceuppens

View File

@ -1 +0,0 @@
xanadu : Xanadu file system

View File

@ -1,2 +0,0 @@
version 0.1
* preliminary methods

View File

@ -1,6 +0,0 @@
This is a xanadu system.
ideas/TODO:
. libaa desktop publishing
. xml & svg (use autoprogramming for a scheme version)

View File

@ -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))

View File

@ -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)))

View File

@ -1,9 +0,0 @@
(define-interface scgame-interface
(export
make-scganadu))
(define-structure scgame
scgame-interface
(open scheme)
(files load scganadu scganaduutil))

View File

@ -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))

View File

@ -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))

View File

@ -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")))))

View File

@ -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))

View File

@ -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)))