@@ -62,22 +62,28 @@ export function isIdStart(cp: number): boolean {
62
62
${ makeSmallCondition ( idStartSmall ) }
63
63
return isLargeIdStart(cp)
64
64
}
65
+
65
66
export function isIdContinue(cp: number): boolean {
66
67
${ makeSmallCondition ( idContinueSmall ) }
67
68
return isLargeIdStart(cp) || isLargeIdContinue(cp)
68
69
}
70
+
69
71
function isLargeIdStart(cp: number): boolean {
70
72
return isInRange(cp, largeIdStartRanges || (largeIdStartRanges = initLargeIdStartRanges()))
71
73
}
74
+
72
75
function isLargeIdContinue(cp: number): boolean {
73
76
return isInRange(cp, largeIdContinueRanges || (largeIdContinueRanges = initLargeIdContinueRanges()))
74
77
}
78
+
75
79
function initLargeIdStartRanges(): number[] {
76
80
${ makeInitLargeIdRanges ( idStartLarge ) }
77
81
}
82
+
78
83
function initLargeIdContinueRanges(): number[] {
79
84
${ makeInitLargeIdRanges ( idContinueLarge ) }
80
85
}
86
+
81
87
function isInRange(cp: number, ranges: number[]): boolean {
82
88
let l = 0, r = ranges.length / 2 | 0, i = 0, min = 0, max = 0
83
89
while (l < r) {
@@ -93,7 +99,16 @@ function isInRange(cp: number, ranges: number[]): boolean {
93
99
}
94
100
}
95
101
return false
96
- }`
102
+ }
103
+
104
+ function restoreRanges(diffs: number[]): number[] {
105
+ let last = 0
106
+ for (let i = 0; i < diffs.length; ++i) {
107
+ last = (diffs[i] += last)
108
+ }
109
+ return diffs
110
+ }
111
+ `
97
112
98
113
logger . log ( "Formatting code..." )
99
114
const engine = new CLIEngine ( {
@@ -164,12 +179,14 @@ function makeSmallCondition(ranges: [number, number][]): string {
164
179
}
165
180
166
181
function makeInitLargeIdRanges ( ranges : [ number , number ] [ ] ) : string {
167
- const lines : string [ ] = [ "return [" ]
182
+ const strings : string [ ] = [ "return restoreRanges([" ]
183
+ let last = 0
168
184
for ( const [ min , max ] of ranges ) {
169
- lines . push ( `0x${ min . toString ( 16 ) } , 0x${ max . toString ( 16 ) } ,` )
185
+ strings . push ( `${ min - last } ,${ max - min } ,` )
186
+ last = max
170
187
}
171
- lines . push ( "]" )
172
- return lines . join ( "\n " )
188
+ strings . push ( "]) //eslint-disable-line @mysticatea/prettier " )
189
+ return strings . join ( "" )
173
190
}
174
191
175
192
function save ( content : string ) : Promise < void > {
0 commit comments