1 ! Copyright (C) 2015 Doug Coleman.
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: accessors combinators.smart io.files sequences sets
4 vocabs.files vocabs.hierarchy vocabs.loader ;
7 ERROR: not-a-source-path path ;
9 : vocabs-from ( root -- vocabs )
10 "" disk-vocabs-in-root/prefix
11 no-prefixes [ name>> ] map ;
13 CONSTANT: core-broken-vocabs
15 "vocabs.loader.test.a"
16 "vocabs.loader.test.b"
17 "vocabs.loader.test.c"
18 "vocabs.loader.test.d"
19 "vocabs.loader.test.e"
20 "vocabs.loader.test.f"
21 "vocabs.loader.test.g"
22 "vocabs.loader.test.h"
23 "vocabs.loader.test.i"
24 "vocabs.loader.test.j"
25 "vocabs.loader.test.k"
26 "vocabs.loader.test.l"
27 "vocabs.loader.test.m"
28 "vocabs.loader.test.n"
29 "vocabs.loader.test.o"
30 "vocabs.loader.test.p"
33 : core-vocabs ( -- seq )
34 "resource:core" vocabs-from core-broken-vocabs diff ;
36 : basis-vocabs ( -- seq ) "resource:basis" vocabs-from ;
37 : extra-vocabs ( -- seq ) "resource:extra" vocabs-from ;
38 : all-vocabs ( -- seq )
43 ] { } append-outputs-as ;
45 : filter-exists ( seq -- seq' ) [ file-exists? ] filter ;
47 ! These paths have syntax errors on purpose...
48 : reject-some-paths ( seq -- seq' )
50 "resource:core/vocabs/loader/test/a/a.factor"
51 "resource:core/vocabs/loader/test/b/b.factor"
52 "resource:core/vocabs/loader/test/c/c.factor"
53 ! Here down have parse errors
54 "resource:core/vocabs/loader/test/d/d.factor"
55 "resource:core/vocabs/loader/test/e/e.factor"
56 "resource:core/vocabs/loader/test/f/f.factor"
57 "resource:core/vocabs/loader/test/g/g.factor"
58 "resource:core/vocabs/loader/test/h/h.factor"
59 "resource:core/vocabs/loader/test/i/i.factor"
60 "resource:core/vocabs/loader/test/j/j.factor"
61 "resource:core/vocabs/loader/test/k/k.factor"
62 "resource:core/vocabs/loader/test/l/l.factor"
63 "resource:core/vocabs/loader/test/m/m.factor"
64 "resource:core/vocabs/loader/test/n/n.factor"
65 "resource:core/vocabs/loader/test/o/o.factor"
66 "resource:core/vocabs/loader/test/p/p.factor"
68 ! Don't parse .modern files yet
69 [ ".modern" tail? ] reject ;
71 : modern-source-paths ( names -- paths )
72 [ vocab-source-path ] map filter-exists reject-some-paths ;
73 : modern-docs-paths ( names -- paths )
74 [ vocab-docs-path ] map filter-exists reject-some-paths ;
75 : modern-tests-paths ( names -- paths )
76 [ vocab-tests ] map concat filter-exists reject-some-paths ;
78 : all-source-paths ( -- seq )
79 all-vocabs modern-source-paths ;
81 : core-docs-paths ( -- seq ) core-vocabs modern-docs-paths ;
82 : basis-docs-paths ( -- seq ) basis-vocabs modern-docs-paths ;
83 : extra-docs-paths ( -- seq ) extra-vocabs modern-docs-paths ;
85 : core-test-paths ( -- seq ) core-vocabs modern-tests-paths ;
86 : basis-test-paths ( -- seq ) basis-vocabs modern-tests-paths ;
87 : extra-test-paths ( -- seq ) extra-vocabs modern-tests-paths ;
90 : all-docs-paths ( -- seq ) all-vocabs modern-docs-paths ;
91 : all-tests-paths ( -- seq ) all-vocabs modern-tests-paths ;
93 : all-paths ( -- seq )
95 all-source-paths all-docs-paths all-tests-paths
96 ] { } append-outputs-as ;
98 : core-source-paths ( -- seq )
99 core-vocabs modern-source-paths reject-some-paths ;
100 : basis-source-paths ( -- seq )
102 modern-source-paths reject-some-paths ;
103 : extra-source-paths ( -- seq )
105 modern-source-paths reject-some-paths ;