]> gitweb.factorcode.org Git - factor.git/blob - extra/modern/paths/paths.factor
io.files: exists? -> file-exists? and rename primitive.
[factor.git] / extra / modern / paths / paths.factor
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
5 vocabs.metadata sets ;
6 IN: modern.paths
7
8 ERROR: not-a-source-path path ;
9
10 : vocabs-from ( root -- vocabs )
11     "" disk-vocabs-in-root/prefix
12     no-prefixes [ name>> ] map ;
13
14 CONSTANT: core-broken-vocabs
15    {
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"
32     }
33
34 : core-vocabs ( -- seq )
35     "resource:core" vocabs-from core-broken-vocabs diff ;
36
37 : basis-vocabs ( -- seq ) "resource:basis" vocabs-from ;
38 : extra-vocabs ( -- seq ) "resource:extra" vocabs-from ;
39 : all-vocabs ( -- seq )
40     [
41         core-vocabs
42         basis-vocabs
43         extra-vocabs
44     ] { } append-outputs-as ;
45
46 : filter-exists ( seq -- seq' ) [ file-exists? ] filter ;
47
48 ! These paths have syntax errors on purpose...
49 : reject-some-paths ( seq -- seq' )
50     {
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"
68     } diff
69     ! Don't parse .modern files yet
70     [ ".modern" tail? ] reject ;
71
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 ;
78
79 : all-source-paths ( -- seq )
80     all-vocabs modern-source-paths ;
81
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 ;
85
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 ;
89
90
91 : all-docs-paths ( -- seq ) all-vocabs modern-docs-paths ;
92  : all-tests-paths ( -- seq ) all-vocabs modern-tests-paths ;
93
94 : all-paths ( -- seq )
95     [
96         all-source-paths all-docs-paths all-tests-paths
97     ] { } append-outputs-as ;
98
99 : core-source-paths ( -- seq )
100     core-vocabs modern-source-paths reject-some-paths ;
101 : basis-source-paths ( -- seq )
102     basis-vocabs
103     modern-source-paths reject-some-paths ;
104 : extra-source-paths ( -- seq )
105     extra-vocabs
106     modern-source-paths reject-some-paths ;