\r
: (child-vocabs) ( root prefix -- vocabs )\r
check-vocab-name\r
- [\r
- dup ".private" tail? [ 2drop { } ] [\r
- vocab-dir append-path dup exists?\r
- [ vocab-subdirs ] [ drop { } ] if\r
- ] if\r
- ]\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
PRIVATE>
: vocab-dir ( vocab -- dir )
- vocab-name* H{ { CHAR: . CHAR: / } } substitute ;
+ vocab-name H{ { CHAR: . CHAR: / } } substitute ;
: append-vocab-dir ( vocab str/f -- path )
- [ vocab-name* "." split ] dip
+ [ vocab-name "." split ] dip
[ [ dup last ] dip append suffix ] when*
"/" join ;
dup check-vocab-hook get call( vocab -- )
[
+parsing+ >>source-loaded?
- dup vocab-name ".private" tail? [ [ ] ] [
- dup vocab-source-path [ parse-file ] [ [ ] ] if*
- ] if
+ dup vocab-source-path [ parse-file ] [ [ ] ] if*
[ +parsing+ >>source-loaded? ] dip
[ % ] [ call( -- ) ] if-bootstrapping
+done+ >>source-loaded?
load-help? get [
[
+parsing+ >>docs-loaded?
- dup vocab-name ".private" tail? [
- dup vocab-docs-path [ ?run-file ] when*
- ] unless
+ dup vocab-docs-path [ ?run-file ] when*
+done+ >>docs-loaded?
] [ ] [ f >>docs-loaded? ] cleanup
] when drop ;
: vocab-name* ( vocab-spec -- name )
vocab-name ".private" ?tail drop ;
+: private-vocab? ( vocab -- ? )
+ vocab-name ".private" tail? ;
+
GENERIC: lookup-vocab ( vocab-spec -- vocab )
M: vocab lookup-vocab ;