IN: tools.vocabs.tests
-USING: tools.test tools.vocabs namespaces continuations ;
+USING: continuations namespaces tools.test tools.vocabs tools.vocabs.private ;
[ ] [
changed-vocabs get-global
[ t ] [ "kernel" changed-vocab? ] unit-test
[ "kernel" changed-vocab ] [ changed-vocabs set-global ] [ ] cleanup
] unit-test
+
+[ t ] [ "some-vocab" valid-vocab-dirname ] unit-test
+[ f ] [ ".git" valid-vocab-dirname ] unit-test
: set-vocab-authors ( authors vocab -- )\r
dup vocab-authors-path set-vocab-file-contents ;\r
\r
-: subdirs ( dir -- dirs )\r
+\r
+<PRIVATE\r
+: valid-vocab-dirname ( dirname -- ? )\r
+ dup empty? [ drop f ] [ first CHAR: . = not ] if ;\r
+PRIVATE>\r
+\r
+: vocab-subdirs ( dir -- dirs )\r
[\r
- [ link-info directory? ] filter\r
+ [ [ link-info directory? ] [ valid-vocab-dirname ] bi and ] filter\r
] with-directory-files natural-sort ;\r
\r
: (all-child-vocabs) ( root name -- vocabs )\r
[\r
vocab-dir append-path dup exists?\r
- [ subdirs ] [ drop { } ] if\r
+ [ vocab-subdirs ] [ drop { } ] if\r
] keep [\r
swap [ "." glue ] with map\r
] unless-empty ;\r
dup [ "" vocabs-in-dir ] { } make\r
] { } map>assoc ;\r
\r
+: all-vocabs-under ( prefix -- vocabs )\r
+ [\r
+ vocab-roots get [ over vocabs-in-dir ] each drop\r
+ ] { } make ;\r
+\r
MEMO: all-vocabs-seq ( -- seq )\r
all-vocabs values concat ;\r
\r
: load-everything ( -- )\r
try-everything load-failures. ;\r
\r
+: load-all-under ( prefix -- )\r
+ all-vocabs-under filter-unportable require-all load-failures. ;\r
+\r
: unrooted-child-vocabs ( prefix -- seq )\r
dup empty? [ CHAR: . suffix ] unless\r
vocabs\r