@@ -30,22 +30,23 @@ export function buildCodeFragment(...frag: CodeFragment[]) {
30
30
return [ frag , push ] as const
31
31
}
32
32
33
+ type Segments = [
34
+ left : CodeFragments ,
35
+ right : CodeFragments ,
36
+ segment : CodeFragments ,
37
+ ]
33
38
export function genMulti (
34
- [ left , right , seg ] : [
35
- left : CodeFragments ,
36
- right : CodeFragments ,
37
- segment : CodeFragments ,
38
- ] ,
39
- ...fns : CodeFragments [ ]
39
+ [ left , right , seg ] : Segments ,
40
+ ...frags : CodeFragments [ ]
40
41
) : CodeFragment [ ] {
41
42
const frag : CodeFragment [ ] = [ ]
42
- fns = fns . filter ( Boolean )
43
+ frags = frags . filter ( Boolean )
43
44
push ( left )
44
45
for ( let [ i , fn ] of (
45
- fns as Array < Exclude < CodeFragments , FalsyValue > >
46
+ frags as Array < Exclude < CodeFragments , FalsyValue > >
46
47
) . entries ( ) ) {
47
48
push ( fn )
48
- if ( i < fns . length - 1 ) push ( seg )
49
+ if ( i < frags . length - 1 ) push ( seg )
49
50
}
50
51
push ( right )
51
52
return frag
@@ -55,12 +56,19 @@ export function genMulti(
55
56
frag . push ( ...fn )
56
57
}
57
58
}
59
+ export const SEGMENTS_ARRAY : Segments = [ '[' , ']' , ', ' ]
60
+ export const SEGMENTS_OBJECT : Segments = [ '{ ' , ' }' , ', ' ]
61
+ export const SEGMENTS_OBJECT_NEWLINE : Segments = [
62
+ [ '{' , INDENT_START , NEWLINE ] ,
63
+ [ INDENT_END , NEWLINE , '}' ] ,
64
+ [ ', ' , NEWLINE ] ,
65
+ ]
58
66
59
67
export function genCall (
60
68
name : string ,
61
- ...args : CodeFragments [ ]
69
+ ...frags : CodeFragments [ ]
62
70
) : CodeFragment [ ] {
63
- return [ name , ...genMulti ( [ '(' , ')' , ', ' ] , ...args ) ]
71
+ return [ name , ...genMulti ( [ '(' , ')' , ', ' ] , ...frags ) ]
64
72
}
65
73
66
74
export function genCodeFragment ( context : CodegenContext ) {
0 commit comments