-
Notifications
You must be signed in to change notification settings - Fork 2k
/
Copy pathcharacterClasses.ts
64 lines (60 loc) · 1.22 KB
/
characterClasses.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/**
* ```
* WhiteSpace ::
* - "Horizontal Tab (U+0009)"
* - "Space (U+0020)"
* ```
* @internal
*/
export function isWhiteSpace(code: number): boolean {
return code === 0x0009 || code === 0x0020;
}
/**
* ```
* Digit :: one of
* - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`
* ```
* @internal
*/
export function isDigit(code: number): boolean {
return code >= 0x0030 && code <= 0x0039;
}
/**
* ```
* Letter :: one of
* - `A` `B` `C` `D` `E` `F` `G` `H` `I` `J` `K` `L` `M`
* - `N` `O` `P` `Q` `R` `S` `T` `U` `V` `W` `X` `Y` `Z`
* - `a` `b` `c` `d` `e` `f` `g` `h` `i` `j` `k` `l` `m`
* - `n` `o` `p` `q` `r` `s` `t` `u` `v` `w` `x` `y` `z`
* ```
* @internal
*/
export function isLetter(code: number): boolean {
return (
(code >= 0x0061 && code <= 0x007a) || // A-Z
(code >= 0x0041 && code <= 0x005a) // a-z
);
}
/**
* ```
* NameStart ::
* - Letter
* - `_`
* ```
* @internal
*/
export function isNameStart(code: number): boolean {
return isLetter(code) || code === 0x005f;
}
/**
* ```
* NameContinue ::
* - Letter
* - Digit
* - `_`
* ```
* @internal
*/
export function isNameContinue(code: number): boolean {
return isLetter(code) || isDigit(code) || code === 0x005f;
}