1 ! Copyright (C) 2008, 2009 Jose Antonio Ortega Ruiz.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors assocs compiler.units continuations fry fuel.eval
4 fuel.help fuel.xref help.topics io.pathnames kernel namespaces parser
5 parser.notes sequences source-files tools.scaffold vocabs vocabs.files
6 vocabs.hierarchy vocabs.loader vocabs.metadata vocabs.parser words ;
11 : fuel-eval-restartable ( -- )
12 t eval-res-flag set-global ; inline
14 : fuel-eval-non-restartable ( -- )
15 f eval-res-flag set-global ; inline
17 : fuel-eval-in-context ( lines in usings -- )
20 : fuel-eval-set-result ( obj -- )
21 clone eval-result set-global ; inline
23 : fuel-retort ( -- ) f f "" send-retort ; inline
30 SYMBOL: :uses-suggestions
32 : is-use-restart? ( restart -- ? )
33 name>> [ "Use the " head? ] [ " vocabulary" tail? ] bi and ;
35 : get-restart-vocab ( restart -- vocab/f )
36 obj>> dup word? [ vocabulary>> ] [ drop f ] if ;
38 : is-suggested-restart? ( restart -- ? )
40 get-restart-vocab :uses-suggestions get member?
43 : try-suggested-restarts ( -- )
44 restarts get [ is-suggested-restart? ] filter
45 dup length 1 = [ first continue-restart ] [ drop ] if ;
48 [ manifest get auto-used>> clone :uses prefix fuel-eval-set-result ]
53 : fuel-use-suggested-vocabs ( ..a suggestions quot: ( ..a -- ..b ) -- ..b )
54 [ :uses-suggestions set ] dip
55 [ try-suggested-restarts rethrow ] recover ; inline
57 : fuel-run-file ( path -- )
58 '[ _ set-use-hook run-file ] with-scope ; inline
60 : fuel-with-autouse ( ..a quot: ( ..a -- ..b ) -- ..b )
61 '[ _ set-use-hook call ] with-scope ; inline
63 : fuel-get-uses ( name lines -- )
70 ] with-compilation-unit
75 : fuel-get-word-location ( word -- )
76 word-location fuel-eval-set-result ;
78 : fuel-get-vocab-location ( vocab -- )
79 vocab-location fuel-eval-set-result ;
81 : fuel-get-doc-location ( word -- )
82 doc-location fuel-eval-set-result ;
84 : fuel-get-article-location ( name -- )
85 article-location fuel-eval-set-result ;
87 : fuel-get-vocabs ( -- )
88 all-disk-vocab-names fuel-eval-set-result ;
90 : fuel-get-vocabs/prefix ( prefix -- )
91 get-vocabs/prefix fuel-eval-set-result ;
93 : fuel-get-words ( prefix names -- )
94 get-vocabs-words/prefix fuel-eval-set-result ;
98 : fuel-callers-xref ( word -- ) callers-xref fuel-eval-set-result ;
100 : fuel-callees-xref ( word -- ) callees-xref fuel-eval-set-result ;
102 : fuel-apropos-xref ( str -- ) apropos-xref fuel-eval-set-result ;
104 : fuel-vocab-xref ( vocab -- ) vocab-xref fuel-eval-set-result ;
106 : fuel-vocab-uses-xref ( vocab -- ) vocab-uses-xref fuel-eval-set-result ;
108 : fuel-vocab-usage-xref ( vocab -- ) vocab-usage-xref fuel-eval-set-result ;
112 : fuel-get-article ( name -- ) fuel.help:get-article fuel-eval-set-result ;
114 : fuel-get-article-title ( name -- )
115 articles get at [ article-title ] [ f ] if* fuel-eval-set-result ;
117 : fuel-word-help ( name -- ) word-help fuel-eval-set-result ;
119 : fuel-word-def ( name -- ) word-def fuel-eval-set-result ;
121 : fuel-vocab-help ( name -- ) fuel.help:vocab-help fuel-eval-set-result ;
123 : fuel-word-synopsis ( word -- ) word-synopsis fuel-eval-set-result ;
125 : fuel-vocab-summary ( name -- )
126 fuel.help:vocab-summary fuel-eval-set-result ;
128 : fuel-index ( quot -- ) call( -- seq ) format-index fuel-eval-set-result ;
130 : fuel-get-vocabs/tag ( tag -- )
131 get-vocabs/tag fuel-eval-set-result ;
133 : fuel-get-vocabs/author ( author -- )
134 get-vocabs/author fuel-eval-set-result ;
138 : scaffold-name ( devname -- )
139 [ developer-name set ] when* ;
141 : fuel-scaffold-vocab ( root name devname -- )
142 [ scaffold-name dup [ scaffold-vocab ] dip ] with-scope
143 dup require vocab-source-path absolute-path fuel-eval-set-result ;
145 : fuel-scaffold-help ( name devname -- )
146 [ scaffold-name dup require dup scaffold-docs ] with-scope
147 vocab-docs-path absolute-path fuel-eval-set-result ;
149 : fuel-scaffold-tests ( name devname -- )
150 [ scaffold-name dup require dup scaffold-tests ] with-scope
151 vocab-tests-file absolute-path fuel-eval-set-result ;
153 : fuel-scaffold-authors ( name devname -- )
154 [ scaffold-name dup require dup scaffold-authors ] with-scope
155 [ vocab-authors-path ] keep swap vocab-append-path absolute-path fuel-eval-set-result ;
157 : fuel-scaffold-tags ( name tags -- )
160 drop [ vocab-tags-path ] keep swap
161 vocab-append-path absolute-path fuel-eval-set-result
164 : fuel-scaffold-summary ( name summary -- )
167 drop [ vocab-summary-path ] keep swap
168 vocab-append-path absolute-path fuel-eval-set-result
171 : fuel-scaffold-platforms ( name platforms -- )
172 [ scaffold-platforms ]
174 drop [ vocab-platforms-path ] keep swap
175 vocab-append-path absolute-path fuel-eval-set-result
178 : fuel-scaffold-get-root ( name -- ) find-vocab-root fuel-eval-set-result ;