7
7
decorate ,
8
8
noisySuggestions ,
9
9
Parser ,
10
- withoutSuggestions ,
10
+ withoutSuggestions , runtime , many1 ,
11
11
} from "../../Parser" ;
12
12
import { styles , style } from "./Suggestions" ;
13
13
import { FileInfo } from "../../Interfaces" ;
@@ -24,19 +24,24 @@ export const directoryAlias = noisySuggestions(
24
24
] )
25
25
) ;
26
26
27
- export const fileInDirectoryGenerator = async ( directory : string , filter : ( info : FileInfo ) => boolean ) => {
27
+ const fileName = ( name : string ) => decorate ( string ( name ) , suggestion => suggestion . withDisplayValue ( name ) . withValue ( suggestion . value . replace ( / \s / g, "\\ " ) ) ) ;
28
+
29
+ export const pathPart = async ( directory : string , filter : ( info : FileInfo ) => boolean ) => {
28
30
const stats = await statsIn ( directory ) ;
29
31
30
32
return choice ( stats . filter ( filter ) . map ( info => {
31
- const file = decorate ( string ( info . name ) , suggestion => suggestion . withDisplayValue ( info . name ) . withValue ( info . name . replace ( / \s / g, "\\ " ) ) ) ;
32
-
33
33
if ( info . stat . isDirectory ( ) ) {
34
- return changingContextDirectory (
35
- info . name . startsWith ( "." ) ? noisySuggestions ( decorate ( append ( "/" , file ) , style ( styles . directory ) ) ) : decorate ( append ( "/" , file ) , style ( styles . directory ) )
36
- ) ;
34
+ const styledDirectory = decorate ( fileName ( `${ info . name } /` ) , style ( styles . directory ) ) ;
35
+ return changingContextDirectory ( info . name . startsWith ( "." ) ? noisySuggestions ( styledDirectory ) : styledDirectory ) ;
37
36
} else {
38
- const styled = decorate ( file , style ( styles . file ( info ) ) ) ;
37
+ const styled = decorate ( fileName ( info . name ) , style ( styles . file ( info ) ) ) ;
39
38
return info . name . startsWith ( "." ) ? noisySuggestions ( styled ) : styled ;
40
39
}
41
40
} ) ) ;
42
41
} ;
42
+
43
+ export const pathInCurrentDirectory = ( filter : ( info : FileInfo ) => boolean ) => many1 (
44
+ runtime (
45
+ async ( context ) => choice ( [ directoryAlias ] . concat ( await pathPart ( context . directory , filter ) ) )
46
+ )
47
+ ) ;
0 commit comments