! Copyright (C) 2007, 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: arrays assocs combinators.short-circuit fry io.directories io.files io.files.info io.pathnames kernel make memoize namespaces sequences sorting splitting vocabs sets vocabs.loader vocabs.metadata vocabs.errors ; IN: vocabs.hierarchy vocab-link , ] when vocabs-in-dir ] with each ; PRIVATE> : all-vocabs ( -- assoc ) vocab-roots get [ dup [ "" vocabs-in-dir ] { } make ] { } map>assoc ; : all-vocabs-under ( prefix -- vocabs ) [ [ vocab-roots get ] dip '[ _ vocabs-in-dir ] each ] { } make ; MEMO: all-vocabs-seq ( -- seq ) "" all-vocabs-under ; : all-child-vocabs ( prefix -- assoc ) vocab-roots get [ dup pick (all-child-vocabs) [ >vocab-link ] map ] { } map>assoc swap unrooted-child-vocabs f swap 2array suffix ; : all-child-vocabs-seq ( prefix -- assoc ) vocab-roots get swap '[ dup _ (all-child-vocabs) [ vocab-dir? ] with filter ] map concat ; : (load) ( prefix -- failures ) all-vocabs-under filter-unportable require-all ; : load ( prefix -- ) (load) load-failures. ; : load-all ( -- ) "" load ; MEMO: all-tags ( -- seq ) all-vocabs-seq [ vocab-tags ] gather natural-sort ; MEMO: all-authors ( -- seq ) all-vocabs-seq [ vocab-authors ] gather natural-sort ;