@@ -21,10 +21,12 @@ for (var i = 0; i < contents.length; i++) {
21
21
var fileContent ;
22
22
23
23
if ( fs . existsSync ( './src/operator/' + filename + '.ts' ) ) {
24
- fileContent = fs . readFileSync ( './src/operator/' + filename + '.ts' ) . toString ( ) ;
24
+ fileContent = fs . readFileSync ( './src/operator/' + filename + '.ts' ) . toString ( 'utf8' ) ;
25
25
} else {
26
- fileContent = fs . readFileSync ( './src/operator/extended/' + filename + '.ts' ) . toString ( ) ;
26
+ fileContent = fs . readFileSync ( './src/operator/extended/' + filename + '.ts' ) . toString ( 'utf8' ) ;
27
27
}
28
+
29
+ fileContent = computeTypingsFor ( fileContent ) ;
28
30
29
31
var methods = [ ] ;
30
32
@@ -64,3 +66,53 @@ var typingsContent = fs.readFileSync('./src/operator-typings.ts').toString();
64
66
fileResult = '/* ||| MARKER ||| */\n' + fileResult + '/* ||| MARKER ||| */' ;
65
67
typingsContent = typingsContent . replace ( / ( \/ \* \| \| \| M A R K E R \| \| \| \* \/ [ \s | \S ] * ?\/ \* \| \| \| M A R K E R \| \| \| \* \/ ) / , fileResult ) ;
66
68
fs . writeFileSync ( './src/operator-typings.ts' , typingsContent ) ;
69
+
70
+
71
+ function computeTypingsFor ( s ) {
72
+ var captureRegex = / \/ \* \- \- ( [ \s | \S ] * ?) - \- \* \/ / g;
73
+ var computeNumberRegex = / \* c o m p u t e ( \d .* ?) ? \* / ;
74
+ var tokenRegex = / \{ .* ?\} / g;
75
+
76
+ s = s . replace ( captureRegex , function ( capture ) {
77
+ capture = capture . trim ( ) ;
78
+ capture = capture . substr ( 3 , capture . length - 3 * 2 ) ;
79
+ var compute = computeNumberRegex . exec ( capture ) ;
80
+ if ( compute ) {
81
+ compute = compute [ 1 ] || '6' ;
82
+ } else {
83
+ compute = '6' ;
84
+ }
85
+ var range = compute . split ( '-' ) ;
86
+ if ( range . length === 1 ) {
87
+ var start = 1 ;
88
+ var end = range [ 0 ] ;
89
+ } else {
90
+ var start = range [ 0 ] ;
91
+ var end = range [ 1 ] ;
92
+ }
93
+
94
+ capture = capture . replace ( computeNumberRegex , '' ) . trim ( ) ;
95
+
96
+ var tokenResult ;
97
+ var results = [ ] ;
98
+ for ( var number = start ; number <= end ; number ++ ) {
99
+ var res = capture . replace ( tokenRegex , function ( capture , index , str ) {
100
+ var items = [ ] ;
101
+ capture = capture . substr ( 1 , capture . length - 2 ) ;
102
+ for ( var i = start ; i <= number ; i ++ ) {
103
+ var typeName = 'T' + ( i === 1 ? '' : i ) ;
104
+ items . push ( capture . replace ( / \| X \| / g, typeName ) . replace ( / \| v \| / g, 'v' + i ) ) ;
105
+ }
106
+
107
+ return items . join ( ', ' ) ;
108
+ } ) ;
109
+ results . push ( res ) ;
110
+ }
111
+
112
+ return results . join ( '\n' ) ;
113
+ } ) ;
114
+
115
+ return s ;
116
+ }
117
+
118
+
0 commit comments