diff --git a/TODO.FACTOR.txt b/TODO.FACTOR.txt index bba1400e6e..6086711782 100644 --- a/TODO.FACTOR.txt +++ b/TODO.FACTOR.txt @@ -1,6 +1,3 @@ -- reader syntax for arrays, byte arrays, displaced aliens -- out of memory error when printing global namespace -- removing unneeded #label - finish scrollbars - fix up the min thumb size hack @@ -54,6 +51,7 @@ + compiler: +- removing unneeded #label - flushing optimization - compile-byte/cell: instantiating aliens - fix fixnum<< and /i overflow on PowerPC @@ -71,6 +69,8 @@ + kernel: +- reader syntax for arrays, byte arrays, displaced aliens +- out of memory error when printing global namespace - first time hash/vector is grown, set size to something big - merge timers with sleeping tasks - what about tasks and timers between image restarts diff --git a/doc/handbook.tex b/doc/handbook.tex index 2e3a3486a1..7e0e249273 100644 --- a/doc/handbook.tex +++ b/doc/handbook.tex @@ -4392,7 +4392,6 @@ Key&Description\\ \ttindex{underline}&A boolean\\ \ttindex{presented}&If set, a presentation for this object is output\\ \ttindex{file}&If set, a hyperlink to that file is output\\ -\ttindex{icon}&If set, the icon named by this resource path is output\\ \end{tabular} All keys are symbols in the \verb|styles| vocabulary. diff --git a/library/bootstrap/boot-stage1.factor b/library/bootstrap/boot-stage1.factor index 74ff9842ad..c82cdb2034 100644 --- a/library/bootstrap/boot-stage1.factor +++ b/library/bootstrap/boot-stage1.factor @@ -69,7 +69,6 @@ sequences io vectors words ; "/library/io/string-streams.factor" "/library/io/c-streams.factor" "/library/io/files.factor" - "/library/io/directories.factor" "/library/io/binary.factor" "/library/syntax/parse-words.factor" diff --git a/library/httpd/default-responders.factor b/library/httpd/default-responders.factor index 5ae7f92205..56ba5f4e23 100644 --- a/library/httpd/default-responders.factor +++ b/library/httpd/default-responders.factor @@ -10,19 +10,15 @@ test-responder ; global [ {{ }} clone responders set - ! Runs all unit tests and dumps result to the client. This uses - ! a lot of server resources, so disable it on a busy server. - [ - "test" "responder" set - [ test-responder ] "get" set - ] make-responder - ! 404 error message pages are served by this guy [ "404" "responder" set [ drop no-such-responder ] "get" set ] make-responder + ! Servers Factor word definitions from the image. + "browser" [ browser-responder ] install-cont-responder + ! Serves files from a directory stored in the "doc-root" ! variable. You can set the variable in the global namespace, ! or inside the responder. @@ -34,15 +30,6 @@ global [ [ file-responder ] "head" set ] make-responder - ! Serves Factor source code - [ - "resource" "responder" set - [ resource-responder ] "get" set - ] make-responder - - ! Servers Factor word definitions from the image. - "browser" [ browser-responder ] install-cont-responder - ! The root directory is served by... "file" set-default-responder diff --git a/library/httpd/file-responder.factor b/library/httpd/file-responder.factor index e909a28185..51dd0f8bfc 100644 --- a/library/httpd/file-responder.factor +++ b/library/httpd/file-responder.factor @@ -27,6 +27,18 @@ io strings ; serve-static ] ifte ; +: file-link. ( text path -- ) + file swons unit format ; + +: file-type. ( path -- ) + directory? "[DIR ] " "[FILE] " ? write ; + +: file. ( dir name -- ) + tuck path+ [ file-type. ] keep file-link. ; + +: directory. ( dir -- ) + dup directory [ file. terpri ] each-with ; + : list-directory ( directory -- ) serving-html "method" get "head" = [ diff --git a/library/httpd/html.factor b/library/httpd/html.factor index 8afe197d43..dceb67bbac 100644 --- a/library/httpd/html.factor +++ b/library/httpd/html.factor @@ -91,16 +91,6 @@ presentation sequences strings styles words ; drop call ] ifte ; -: icon-tag ( string style quot -- ) - over icon swap assoc dup [ - - #! Ignore the quotation, since no further style - #! can be applied - 3drop - ] [ - drop call - ] ifte ; - TUPLE: html-stream ; M: html-stream stream-write1 ( char stream -- ) @@ -112,10 +102,8 @@ M: html-stream stream-format ( str style stream -- ) [ [ [ - [ - [ drop chars>entities write ] span-tag - ] file-link-tag - ] icon-tag + [ drop chars>entities write ] span-tag + ] file-link-tag ] browser-link-tag ] with-wrapper ; @@ -131,7 +119,6 @@ C: html-stream ( stream -- stream ) #! font-style #! font-size #! underline - #! icon #! file #! word #! vocab diff --git a/library/httpd/load.factor b/library/httpd/load.factor index 3d78266fc9..8cf325f27d 100644 --- a/library/httpd/load.factor +++ b/library/httpd/load.factor @@ -7,8 +7,6 @@ USING: kernel parser sequences io ; "/library/httpd/responder.factor" "/library/httpd/httpd.factor" "/library/httpd/file-responder.factor" - "/library/httpd/test-responder.factor" - "/library/httpd/resource-responder.factor" "/library/httpd/cont-responder.factor" "/library/httpd/browser-responder.factor" "/library/httpd/default-responders.factor" diff --git a/library/httpd/resource-responder.factor b/library/httpd/resource-responder.factor deleted file mode 100644 index fa5f94150a..0000000000 --- a/library/httpd/resource-responder.factor +++ /dev/null @@ -1,21 +0,0 @@ -! Copyright (C) 2004, 2005 Slava Pestov. -! See http://factor.sf.net/license.txt for BSD license. -IN: resource-responder -USING: httpd kernel lists namespaces io ; - -: resource-response ( mime-type -- ) - "Content-Type" swons unit "200 OK" response terpri ; - -: serve-resource ( filename mime-type -- ) - dup mime-type resource-response "method" get "head" = [ - drop - ] [ - stdio get stream-copy - ] ifte ; - -: resource-responder ( filename -- ) - "resource-path" get [ - serve-resource - ] [ - drop "404 resource-path not set" httpd-error - ] ifte ; diff --git a/library/httpd/test-responder.factor b/library/httpd/test-responder.factor deleted file mode 100644 index fef5856c33..0000000000 --- a/library/httpd/test-responder.factor +++ /dev/null @@ -1,9 +0,0 @@ -! Copyright (C) 2004, 2005 Slava Pestov. -! See http://factor.sf.net/license.txt for BSD license. -IN: test-responder -USING: html httpd kernel test ; - -: test-responder ( argument -- ) - drop - serving-html - "Factor Test Suite" [ all-tests ] simple-html-document ; diff --git a/library/io/directories.factor b/library/io/directories.factor deleted file mode 100644 index 6e3ad05e66..0000000000 --- a/library/io/directories.factor +++ /dev/null @@ -1,24 +0,0 @@ -! Copyright (C) 2004, 2005 Slava Pestov. -! See http://factor.sf.net/license.txt for BSD license. -IN: io -USING: hashtables kernel lists namespaces presentation sequences -strings styles ; - -! Hyperlinked directory listings. - -: dir-icon "/library/icons/Folder.png" ; -: file-icon "/library/icons/File.png" ; -: file-icon. directory? dir-icon file-icon ? write-icon ; - -: file-link. ( dir name -- ) - tuck path+ file swons unit format ; - -: file. ( dir name -- ) - #! If "doc-root" set, create links relative to it. - 2dup path+ file-icon. " " write file-link. terpri ; - -: directory. ( dir -- ) - #! If "doc-root" set, create links relative to it. - dup directory [ - dup [ "." ".." ] member? [ 2drop ] [ file. ] ifte - ] each-with ; diff --git a/library/io/files.factor b/library/io/files.factor index 373e52c0b9..a4d8014d01 100644 --- a/library/io/files.factor +++ b/library/io/files.factor @@ -6,10 +6,16 @@ USING: kernel lists namespaces sequences strings ; ! Words for accessing filesystem meta-data. : path+ ( path path -- path ) "/" swap append3 ; + : exists? ( file -- ? ) stat >boolean ; + : directory? ( file -- ? ) stat car ; -: directory ( dir -- list ) (directory) string-sort ; + +: directory ( dir -- list ) + (directory) { "." ".." } swap seq-diff string-sort ; + : file-length ( file -- length ) stat third ; + : file-extension ( filename -- extension ) "." split cdr dup [ peek ] when ; diff --git a/library/io/stdio.factor b/library/io/stdio.factor index 6e4842f12b..3f186edfa6 100644 --- a/library/io/stdio.factor +++ b/library/io/stdio.factor @@ -14,10 +14,6 @@ USING: errors generic kernel lists namespaces strings styles ; : terpri ( -- ) stdio get stream-terpri ; : close ( -- ) stdio get stream-close ; -: write-icon ( resource -- ) - #! Write an icon. Eg, /library/icons/File.png - icon swons unit "" swap format ; - : write-object ( string object -- ) presented swons unit format ; diff --git a/library/styles.factor b/library/styles.factor index 2b762cd34b..b279008e2e 100644 --- a/library/styles.factor +++ b/library/styles.factor @@ -27,7 +27,5 @@ SYMBOL: bold-italic SYMBOL: underline -SYMBOL: icon - SYMBOL: presented SYMBOL: file