From 1e2dcfae12eb75bbdc6114d0c7c4022bfd9e7f4a Mon Sep 17 00:00:00 2001 From: slava Date: Mon, 19 Jun 2006 01:31:20 +0000 Subject: [PATCH] More module system hackery --- contrib/aim/load.factor | 2 +- contrib/all.factor | 10 +++++----- contrib/automata.factor | 6 +++++- contrib/boids.factor | 4 ++++ contrib/cairo/load.factor | 2 +- contrib/concurrency/load.factor | 2 +- contrib/crypto/load.factor | 2 +- contrib/factory/load.factor | 2 +- contrib/httpd/load.factor | 3 +-- contrib/postgresql/load.factor | 2 +- contrib/slate.factor | 4 +++- contrib/sqlite/sqlite.factor | 4 ---- contrib/vim/load.factor | 2 +- contrib/x11/load.factor | 2 +- library/bootstrap/boot-stage1.factor | 2 +- library/modules.factor | 11 +++++++++-- library/syntax/parse-syntax.factor | 6 ++++-- 17 files changed, 40 insertions(+), 26 deletions(-) diff --git a/contrib/aim/load.factor b/contrib/aim/load.factor index 973c5f49cc..8636beba4c 100644 --- a/contrib/aim/load.factor +++ b/contrib/aim/load.factor @@ -1,3 +1,3 @@ -REQUIRE: crypto ; +REQUIRES: crypto ; PROVIDE: aim { "net-bytes.factor" "aim.factor" } ; diff --git a/contrib/all.factor b/contrib/all.factor index 652be0f0cd..743b109ffa 100644 --- a/contrib/all.factor +++ b/contrib/all.factor @@ -1,10 +1,10 @@ -USING: modules words ; +USING: kernel modules words ; -REQUIRE: aim cairo concurrency coroutines crypto dlists +REQUIRES: aim cairo concurrency coroutines crypto dlists embedded gap-buffer httpd math postgresql process random-tester splay-trees sqlite units ; "x11" vocab [ - "factory" require - "x11" require -] + "factory" (require) + "x11" (require) +] when diff --git a/contrib/automata.factor b/contrib/automata.factor index aaa680a6c6..d0418bb954 100644 --- a/contrib/automata.factor +++ b/contrib/automata.factor @@ -1,5 +1,7 @@ ! Copyright (C) 2006 Eduardo Cavazos. +REQUIRES: slate ; + USING: parser kernel hashtables namespaces sequences math io math-contrib threads strings arrays prettyprint gadgets slate ; @@ -129,4 +131,6 @@ interesting get random-item set-rule 1000 sleep run-rule ; : automata-gallery ( -- ) dup self set open-window 1000 sleep init-interesting init-rule -random-interesting-gallery ; \ No newline at end of file +random-interesting-gallery ; + +PROVIDE: automata ; \ No newline at end of file diff --git a/contrib/boids.factor b/contrib/boids.factor index 53f8477417..677b71a017 100644 --- a/contrib/boids.factor +++ b/contrib/boids.factor @@ -2,6 +2,8 @@ ! To run the demo do: USE: boids boids-go +REQUIRES: slate ; + USING: generic threads namespaces math kernel sequences arrays gadgets slate ; IN: boids @@ -278,3 +280,5 @@ iterate-boids draw-boids 1 sleep run-boids ; ! : execute-with ( item [ word word ... ] -- results ... ) ! [ over >r execute r> ] each drop ; +PROVIDE: boids ; + diff --git a/contrib/cairo/load.factor b/contrib/cairo/load.factor index cf1210338f..05158e65bb 100644 --- a/contrib/cairo/load.factor +++ b/contrib/cairo/load.factor @@ -2,4 +2,4 @@ USING: alien ; "cairo" "libcairo" add-simple-library -PROVIDE: cairo { "/contrib/cairo/cairo.factor" } ; +PROVIDE: cairo { "cairo.factor" } ; diff --git a/contrib/concurrency/load.factor b/contrib/concurrency/load.factor index 0ec75247e0..c14bc5572e 100644 --- a/contrib/concurrency/load.factor +++ b/contrib/concurrency/load.factor @@ -1,4 +1,4 @@ -REQUIRE: dlists ; +REQUIRES: dlists ; PROVIDE: concurrency { "concurrency.factor" } diff --git a/contrib/crypto/load.factor b/contrib/crypto/load.factor index 4a158cf400..b0b2da12d7 100644 --- a/contrib/crypto/load.factor +++ b/contrib/crypto/load.factor @@ -1,4 +1,4 @@ -REQUIRE: math ; +REQUIRES: math ; PROVIDE: crypto { "common.factor" diff --git a/contrib/factory/load.factor b/contrib/factory/load.factor index 2267f9c28d..8c0aa2ff8d 100644 --- a/contrib/factory/load.factor +++ b/contrib/factory/load.factor @@ -1,3 +1,3 @@ -REQUIRE: process concurrency x11 ; +REQUIRES: process concurrency x11 ; PROVIDE: factory { "factory.factor" } ; diff --git a/contrib/httpd/load.factor b/contrib/httpd/load.factor index ae960366c7..b5bb403842 100644 --- a/contrib/httpd/load.factor +++ b/contrib/httpd/load.factor @@ -11,14 +11,13 @@ PROVIDE: httpd { "callback-responder.factor" "prototype-js.factor" "html.factor" - "embedded.factor" "file-responder.factor" "help-responder.factor" "inspect-responder.factor" "browser-responder.factor" "default-responders.factor" "http-client.factor" - +} { "test/html.factor" "test/http-client.factor" "test/httpd.factor" diff --git a/contrib/postgresql/load.factor b/contrib/postgresql/load.factor index 2c7b2272bd..9464a33b03 100644 --- a/contrib/postgresql/load.factor +++ b/contrib/postgresql/load.factor @@ -3,5 +3,5 @@ USING: alien ; "postgresql" "libpq" add-simple-library PROVIDE: postgresql -{ "libpq" "postgresql" } +{ "libpq.factor" "postgresql.factor" } { "postgresql-test" } ; diff --git a/contrib/slate.factor b/contrib/slate.factor index 5085734656..f61618886c 100644 --- a/contrib/slate.factor +++ b/contrib/slate.factor @@ -78,4 +78,6 @@ GL_LINES glBegin first2 glVertex2f first2 glVertex2f glEnd ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -: reset-slate ( -- ) [ ] set-action reset-dlist ; \ No newline at end of file +: reset-slate ( -- ) [ ] set-action reset-dlist ; + +PROVIDE: slate ; \ No newline at end of file diff --git a/contrib/sqlite/sqlite.factor b/contrib/sqlite/sqlite.factor index 1387cc1769..5a5f08ec8c 100644 --- a/contrib/sqlite/sqlite.factor +++ b/contrib/sqlite/sqlite.factor @@ -31,7 +31,6 @@ IN: sqlite USE: kernel USE: alien -USE: compiler USE: errors USE: strings USE: namespaces @@ -258,6 +257,3 @@ END-STRUCT : sqlite-map ( statement quot -- ) [ ] (sqlite-map) ; - - -{ "sqlite" } compile-vocabs diff --git a/contrib/vim/load.factor b/contrib/vim/load.factor index 39a887cc14..db724fa9d9 100644 --- a/contrib/vim/load.factor +++ b/contrib/vim/load.factor @@ -3,7 +3,7 @@ #! "contrib/httpd/embedded.factor" run-file #! "contrib/vim/load.factor" run-file -REQUIRE: embedded ; +REQUIRES: embedded ; USING: embedded io ; diff --git a/contrib/x11/load.factor b/contrib/x11/load.factor index 459c21b1ad..ee23dcfd02 100644 --- a/contrib/x11/load.factor +++ b/contrib/x11/load.factor @@ -1,4 +1,4 @@ -REQUIRE: concurrency ; +REQUIRES: concurrency ; PROVIDE: x11 { "rectangle.factor" "x.factor" "draw-string.factor" "concurrent-widgets.factor" "gl.factor" diff --git a/library/bootstrap/boot-stage1.factor b/library/bootstrap/boot-stage1.factor index 6da03f9141..e4c1a3e9f4 100644 --- a/library/bootstrap/boot-stage1.factor +++ b/library/bootstrap/boot-stage1.factor @@ -117,7 +117,6 @@ vectors words ; "/library/test/test.factor" - "/library/modules.factor" "/library/threads.factor" "/library/io/server.factor" @@ -158,6 +157,7 @@ vectors words ; "/library/io/buffer.factor" "/library/cli.factor" + "/library/modules.factor" "/library/bootstrap/init.factor" "/library/bootstrap/image.factor" diff --git a/library/modules.factor b/library/modules.factor index 2e58c7287c..6f41ae4db2 100644 --- a/library/modules.factor +++ b/library/modules.factor @@ -1,7 +1,8 @@ ! Copyright (C) 2006 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. IN: modules -USING: hashtables io kernel namespaces parser sequences words ; +USING: compiler hashtables io kernel namespaces parser sequences +words ; TUPLE: module name files tests ; @@ -26,7 +27,7 @@ H{ } clone modules set-global : module modules get hash ; -: require ( name -- ) +: (require) ( name -- ) dup module [ drop ] [ @@ -34,6 +35,10 @@ H{ } clone modules set-global module-def run-resource ] if ; +: require ( name -- ) + [ \ require on (require) ] with-scope + \ require get [ compile-all ] unless ; + : run-resources ( seq -- ) bootstrapping? get [ parse-resource % ] [ run-resource ] ? each ; @@ -47,3 +52,5 @@ H{ } clone modules set-global : reload-module ( name -- ) module load-module ; : test-module ( name -- ) module module-tests run-resources ; + +: test-modules ( -- ) modules hash-keys [ test-module ] each ; diff --git a/library/syntax/parse-syntax.factor b/library/syntax/parse-syntax.factor index 8d9c7fd235..5e1f3f056c 100644 --- a/library/syntax/parse-syntax.factor +++ b/library/syntax/parse-syntax.factor @@ -73,6 +73,8 @@ DEFER: PRIMITIVE: parsing : PROVIDE: scan [ { { } { } } append first2 provide ] f ; parsing -: REQUIRE: +: REQUIRE: scan require ; parsing + +: REQUIRES: string-mode on - [ string-mode off [ require ] each ] f ; parsing + [ string-mode off [ (require) ] each ] f ; parsing