@@ -62,22 +62,28 @@ export function isIdStart(cp: number): boolean {
6262 ${ makeSmallCondition ( idStartSmall ) }
6363 return isLargeIdStart(cp)
6464}
65+
6566export function isIdContinue(cp: number): boolean {
6667 ${ makeSmallCondition ( idContinueSmall ) }
6768 return isLargeIdStart(cp) || isLargeIdContinue(cp)
6869}
70+
6971function isLargeIdStart(cp: number): boolean {
7072 return isInRange(cp, largeIdStartRanges || (largeIdStartRanges = initLargeIdStartRanges()))
7173}
74+
7275function isLargeIdContinue(cp: number): boolean {
7376 return isInRange(cp, largeIdContinueRanges || (largeIdContinueRanges = initLargeIdContinueRanges()))
7477}
78+
7579function initLargeIdStartRanges(): number[] {
7680 ${ makeInitLargeIdRanges ( idStartLarge ) }
7781}
82+
7883function initLargeIdContinueRanges(): number[] {
7984 ${ makeInitLargeIdRanges ( idContinueLarge ) }
8085}
86+
8187function isInRange(cp: number, ranges: number[]): boolean {
8288 let l = 0, r = ranges.length / 2 | 0, i = 0, min = 0, max = 0
8389 while (l < r) {
@@ -93,7 +99,16 @@ function isInRange(cp: number, ranges: number[]): boolean {
9399 }
94100 }
95101 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+ `
97112
98113 logger . log ( "Formatting code..." )
99114 const engine = new CLIEngine ( {
@@ -164,12 +179,14 @@ function makeSmallCondition(ranges: [number, number][]): string {
164179}
165180
166181function makeInitLargeIdRanges ( ranges : [ number , number ] [ ] ) : string {
167- const lines : string [ ] = [ "return [" ]
182+ const strings : string [ ] = [ "return restoreRanges([" ]
183+ let last = 0
168184 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
170187 }
171- lines . push ( "]" )
172- return lines . join ( "\n " )
188+ strings . push ( "]) //eslint-disable-line @mysticatea/prettier " )
189+ return strings . join ( "" )
173190}
174191
175192function save ( content : string ) : Promise < void > {
0 commit comments