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 CONSTANT: core-broken-vocabs
16 "vocabs.loader.test.a"
17 "vocabs.loader.test.b"
18 "vocabs.loader.test.c"
19 "vocabs.loader.test.d"
20 "vocabs.loader.test.e"
21 "vocabs.loader.test.f"
22 "vocabs.loader.test.g"
23 "vocabs.loader.test.h"
24 "vocabs.loader.test.i"
25 "vocabs.loader.test.j"
26 "vocabs.loader.test.k"
27 "vocabs.loader.test.l"
28 "vocabs.loader.test.m"
29 "vocabs.loader.test.n"
30 "vocabs.loader.test.o"
31 "vocabs.loader.test.p"
34 : core-vocabs ( -- seq )
35 "resource:core" vocabs-from core-broken-vocabs diff ;
37 : basis-vocabs ( -- seq ) "resource:basis" vocabs-from ;
38 : extra-vocabs ( -- seq ) "resource:extra" vocabs-from ;
39 : all-vocabs ( -- seq )
44 ] { } append-outputs-as ;
46 : filter-exists ( seq -- seq' ) [ file-exists? ] filter ;
48 ! These paths have syntax errors on purpose...
49 : reject-some-paths ( seq -- seq' )
51 "resource:core/vocabs/loader/test/a/a.factor"
52 "resource:core/vocabs/loader/test/b/b.factor"
53 "resource:core/vocabs/loader/test/c/c.factor"
54 ! Here down have parse errors
55 "resource:core/vocabs/loader/test/d/d.factor"
56 "resource:core/vocabs/loader/test/e/e.factor"
57 "resource:core/vocabs/loader/test/f/f.factor"
58 "resource:core/vocabs/loader/test/g/g.factor"
59 "resource:core/vocabs/loader/test/h/h.factor"
60 "resource:core/vocabs/loader/test/i/i.factor"
61 "resource:core/vocabs/loader/test/j/j.factor"
62 "resource:core/vocabs/loader/test/k/k.factor"
63 "resource:core/vocabs/loader/test/l/l.factor"
64 "resource:core/vocabs/loader/test/m/m.factor"
65 "resource:core/vocabs/loader/test/n/n.factor"
66 "resource:core/vocabs/loader/test/o/o.factor"
67 "resource:core/vocabs/loader/test/p/p.factor"
69 ! Don't parse .modern files yet
70 [ ".modern" tail? ] reject ;
72 : modern-source-paths ( names -- paths )
73 [ vocab-source-path ] map filter-exists reject-some-paths ;
74 : modern-docs-paths ( names -- paths )
75 [ vocab-docs-path ] map filter-exists reject-some-paths ;
76 : modern-tests-paths ( names -- paths )
77 [ vocab-tests ] map concat filter-exists reject-some-paths ;
79 : all-source-paths ( -- seq )
80 all-vocabs modern-source-paths ;
82 : core-docs-paths ( -- seq ) core-vocabs modern-docs-paths ;
83 : basis-docs-paths ( -- seq ) basis-vocabs modern-docs-paths ;
84 : extra-docs-paths ( -- seq ) extra-vocabs modern-docs-paths ;
86 : core-test-paths ( -- seq ) core-vocabs modern-tests-paths ;
87 : basis-test-paths ( -- seq ) basis-vocabs modern-tests-paths ;
88 : extra-test-paths ( -- seq ) extra-vocabs modern-tests-paths ;
91 : all-docs-paths ( -- seq ) all-vocabs modern-docs-paths ;
92 : all-tests-paths ( -- seq ) all-vocabs modern-tests-paths ;
94 : all-paths ( -- seq )
96 all-source-paths all-docs-paths all-tests-paths
97 ] { } append-outputs-as ;
99 : core-source-paths ( -- seq )
100 core-vocabs modern-source-paths reject-some-paths ;
101 : basis-source-paths ( -- seq )
103 modern-source-paths reject-some-paths ;
104 : extra-source-paths ( -- seq )
106 modern-source-paths reject-some-paths ;