io.directories io.files io.files.types io.pathnames kernel make\r
memoize namespaces sequences sorting splitting vocabs sets\r
vocabs.loader vocabs.metadata vocabs.errors ;\r
-RENAME: child-vocabs vocabs => vocabs:child-vocabs\r
IN: vocabs.hierarchy\r
\r
TUPLE: vocab-prefix name ;\r
: ensure-vocab-root/prefix ( root prefix -- root prefix )\r
[ ensure-vocab-root ] [ check-vocab-name ] bi* ;\r
\r
-: (child-vocabs) ( root prefix -- vocabs )\r
+: (disk-vocab-children) ( root prefix -- vocabs )\r
check-vocab-name\r
[ vocab-dir append-path dup exists? [ vocab-subdirs ] [ drop { } ] if ]\r
[ nip [ "." append '[ _ prepend ] map! ] unless-empty ]\r
[ drop '[ _ over vocab-dir? [ >vocab-link ] [ <vocab-prefix> ] if ] map! ]\r
2tri ;\r
\r
-: ((child-vocabs-recursive)) ( root prefix -- )\r
- dupd vocab-name (child-vocabs) [ % ] keep\r
- [ ((child-vocabs-recursive)) ] with each ;\r
+: ((disk-vocabs-recursive)) ( root prefix -- )\r
+ dupd vocab-name (disk-vocab-children) [ % ] keep\r
+ [ ((disk-vocabs-recursive)) ] with each ;\r
\r
-: (child-vocabs-recursive) ( root prefix -- seq )\r
+: (disk-vocabs-recursive) ( root prefix -- seq )\r
[ ensure-vocab-root ] dip\r
- [ ((child-vocabs-recursive)) ] { } make ;\r
+ [ ((disk-vocabs-recursive)) ] { } make ;\r
\r
: no-rooted ( seq -- seq' ) [ find-vocab-root ] reject ;\r
\r
: one-level-only? ( name prefix -- ? )\r
?head [ "." split1 nip not ] [ drop f ] if ;\r
\r
-: unrooted-child-vocabs ( prefix -- seq )\r
- [ vocabs no-rooted ] dip\r
+: unrooted-disk-vocabs ( prefix -- seq )\r
+ [ loaded-vocab-names no-rooted ] dip\r
dup empty? [ CHAR: . suffix ] unless\r
'[ vocab-name _ one-level-only? ] filter ;\r
\r
-: unrooted-child-vocabs-recursive ( prefix -- seq )\r
- vocabs:child-vocabs no-rooted ;\r
+: unrooted-disk-vocabs-recursive ( prefix -- seq )\r
+ loaded-child-vocab-names no-rooted ;\r
\r
PRIVATE>\r
\r
: filter-vocabs ( assoc -- seq )\r
no-roots no-prefixes members ;\r
\r
-: child-vocabs ( prefix -- assoc )\r
- [ [ vocab-roots get ] dip '[ dup _ (child-vocabs) ] { } map>assoc ]\r
- [ unrooted-child-vocabs [ lookup-vocab ] map! f swap 2array ]\r
+: disk-vocabs-for-prefix ( prefix -- assoc )\r
+ [ [ vocab-roots get ] dip '[ dup _ (disk-vocab-children) ] { } map>assoc ]\r
+ [ unrooted-disk-vocabs [ lookup-vocab ] map! f swap 2array ]\r
bi suffix ;\r
\r
-: all-vocabs ( -- assoc )\r
- "" child-vocabs ;\r
+: all-disk-vocabs-by-root ( -- assoc )\r
+ "" disk-vocabs-for-prefix ;\r
\r
-: child-vocabs-recursive ( prefix -- assoc )\r
- [ [ vocab-roots get ] dip '[ dup _ (child-vocabs-recursive) ] { } map>assoc ]\r
- [ unrooted-child-vocabs-recursive [ lookup-vocab ] map! f swap 2array ]\r
+: disk-vocabs-recursive-for-prefix ( prefix -- assoc )\r
+ [ [ vocab-roots get ] dip '[ dup _ (disk-vocabs-recursive) ] { } map>assoc ]\r
+ [ unrooted-disk-vocabs-recursive [ lookup-vocab ] map! f swap 2array ]\r
bi suffix ;\r
\r
-MEMO: all-vocabs-recursive ( -- assoc )\r
- "" child-vocabs-recursive ;\r
+MEMO: all-disk-vocabs-recursive ( -- assoc )\r
+ "" disk-vocabs-recursive-for-prefix ;\r
\r
-: all-vocab-names ( -- seq )\r
- all-vocabs-recursive filter-vocabs [ vocab-name ] map! ;\r
+: all-disk-vocab-names ( -- seq )\r
+ all-disk-vocabs-recursive filter-vocabs [ vocab-name ] map! ;\r
\r
-: child-vocab-names ( prefix -- seq )\r
- child-vocabs filter-vocabs [ vocab-name ] map! ;\r
+: disk-child-vocab-names ( prefix -- seq )\r
+ disk-vocabs-for-prefix filter-vocabs [ vocab-name ] map! ;\r
\r
<PRIVATE\r
\r
: collect-vocabs ( quot -- seq )\r
- [ all-vocabs-recursive filter-vocabs ] dip\r
+ [ all-disk-vocabs-recursive filter-vocabs ] dip\r
gather natural-sort ; inline\r
\r
: maybe-include-root/prefix ( root prefix -- vocab-link/f )\r
\r
PRIVATE>\r
\r
-: vocabs-in-root/prefix ( root prefix -- seq )\r
- [ (child-vocabs-recursive) ]\r
+: disk-vocabs-in-root/prefix ( root prefix -- seq )\r
+ [ (disk-vocabs-recursive) ]\r
[ maybe-include-root/prefix [ prefix ] when* ] 2bi ;\r
\r
-: vocabs-in-root ( root -- seq )\r
- "" vocabs-in-root/prefix ;\r
+: disk-vocabs-in-root ( root -- seq )\r
+ "" disk-vocabs-in-root/prefix ;\r
\r
: (load-from-root) ( root prefix -- failures )\r
- vocabs-in-root/prefix\r
+ disk-vocabs-in-root/prefix\r
[ don't-load? ] reject no-prefixes\r
require-all ;\r
\r