1 ! Copyright (C) 2015 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors combinators.smart io.files kernel sequences
4 splitting vocabs.files vocabs.hierarchy vocabs.loader
8 ERROR: not-a-source-path path ;
10 : vocabs-from ( root -- vocabs )
11 "" disk-vocabs-in-root/prefix
12 no-prefixes [ name>> ] map ;
14 : core-vocabs ( -- seq ) "resource:core" vocabs-from ;
15 : less-core-test-vocabs ( seq -- seq' )
17 "vocabs.loader.test.a"
18 "vocabs.loader.test.b"
19 "vocabs.loader.test.c"
20 "vocabs.loader.test.d"
21 "vocabs.loader.test.e"
22 "vocabs.loader.test.f"
23 "vocabs.loader.test.g"
24 "vocabs.loader.test.h"
25 "vocabs.loader.test.i"
26 "vocabs.loader.test.j"
27 "vocabs.loader.test.k"
28 "vocabs.loader.test.l"
29 "vocabs.loader.test.m"
30 "vocabs.loader.test.n"
31 "vocabs.loader.test.o"
32 "vocabs.loader.test.p"
35 : core-bootstrap-vocabs ( -- seq )
36 core-vocabs less-core-test-vocabs ;
38 : basis-vocabs ( -- seq ) "resource:basis" vocabs-from ;
39 : extra-vocabs ( -- seq ) "resource:extra" vocabs-from ;
40 : all-vocabs ( -- seq )
45 ] { } append-outputs-as ;
47 : filter-exists ( seq -- seq' ) [ exists? ] filter ;
49 ! These paths have syntax errors on purpose...
50 : reject-some-paths ( seq -- seq' )
52 "resource:core/vocabs/loader/test/a/a.factor"
53 "resource:core/vocabs/loader/test/b/b.factor"
54 "resource:core/vocabs/loader/test/c/c.factor"
55 ! Here down have parse errors
56 "resource:core/vocabs/loader/test/d/d.factor"
57 "resource:core/vocabs/loader/test/e/e.factor"
58 "resource:core/vocabs/loader/test/f/f.factor"
59 "resource:core/vocabs/loader/test/g/g.factor"
60 "resource:core/vocabs/loader/test/h/h.factor"
61 "resource:core/vocabs/loader/test/i/i.factor"
62 "resource:core/vocabs/loader/test/j/j.factor"
63 "resource:core/vocabs/loader/test/k/k.factor"
64 "resource:core/vocabs/loader/test/l/l.factor"
65 "resource:core/vocabs/loader/test/m/m.factor"
66 "resource:core/vocabs/loader/test/n/n.factor"
67 "resource:core/vocabs/loader/test/o/o.factor"
68 "resource:core/vocabs/loader/test/p/p.factor"
70 ! Don't parse .modern files yet
71 [ ".modern" tail? ] reject ;
73 : modern-source-paths ( names -- paths )
74 [ vocab-source-path ] map filter-exists reject-some-paths ;
75 : modern-docs-paths ( names -- paths )
76 [ vocab-docs-path ] map filter-exists reject-some-paths ;
77 : modern-tests-paths ( names -- paths )
78 [ vocab-tests ] map concat filter-exists reject-some-paths ;
80 : all-source-paths ( -- seq )
81 all-vocabs modern-source-paths ;
83 : core-docs-paths ( -- seq ) core-vocabs modern-docs-paths ;
84 : basis-docs-paths ( -- seq ) basis-vocabs modern-docs-paths ;
85 : extra-docs-paths ( -- seq ) extra-vocabs modern-docs-paths ;
87 : core-test-paths ( -- seq ) core-vocabs modern-tests-paths ;
88 : basis-test-paths ( -- seq ) basis-vocabs modern-tests-paths ;
89 : extra-test-paths ( -- seq ) extra-vocabs modern-tests-paths ;
92 : all-docs-paths ( -- seq ) all-vocabs modern-docs-paths ;
93 : all-tests-paths ( -- seq ) all-vocabs modern-tests-paths ;
95 : all-paths ( -- seq )
97 all-source-paths all-docs-paths all-tests-paths
98 ] { } append-outputs-as ;
100 : core-source-paths ( -- seq )
101 core-vocabs modern-source-paths reject-some-paths ;
102 : basis-source-paths ( -- seq )
104 modern-source-paths reject-some-paths ;
105 : extra-source-paths ( -- seq )
107 modern-source-paths reject-some-paths ;