@@ -3,12 +3,37 @@ script({
3
3
files : "src/muz/spacer/spacer_qe_project.cpp"
4
4
} )
5
5
6
+ // return function names and source code of the functions
6
7
8
+ function get_functions ( captures : QueryCapture [ ] , code : string ) {
9
+ return captures . map ( ( { name, node } ) => ( {
10
+ code : node . text
11
+ } ) )
12
+ }
7
13
8
14
const inputFile = env . files [ 0 ] ;
9
- const { captures } = await parsers . code ( inputFile ) ;
10
15
11
- // pretty-print tree sitter parse tree of captures:
12
16
17
+ const { captures : functions } = await parsers . code (
18
+ inputFile ,
19
+ `(function_definition) @function`
20
+ ) ;
21
+
22
+
23
+ let funs = get_functions ( functions , inputFile . content ) ;
24
+
25
+ for ( const fun of funs ) {
26
+ // todo put files in a different directory
27
+ let name = fun . code . split ( '(' ) [ 0 ] . trim ( ) ;
28
+ name = name
29
+ . replace ( / : : / g, '_' )
30
+ . replace ( / / g, '_' ) ;
31
+ let outputFile = path . basename ( inputFile . filename )
32
+ . replace ( / \. c p p $ / , `.${ name } .cpp` )
33
+ . replace ( / \. h $ / , `.${ name } .h` ) ;
34
+ outputFile = "slice_" + outputFile ;
35
+ outputFile = path . join ( "code_slices" , outputFile ) ;
36
+
37
+ await workspace . writeText ( outputFile , `//Extracted ${ name } in ${ inputFile . filename } \n${ fun . code } \n\n` ) ;
38
+ }
13
39
14
- console . log ( JSON . stringify ( captures , null , 2 ) )
0 commit comments