|
2 | 2 | // this works across all unicode locales |
3 | 3 |
|
4 | 4 | // { <posix class>: [<translation>, /u flag required, negated] |
5 | | -const posixClasses: { [k: string]: [e: string, u: boolean, n?: boolean] } = { |
6 | | - '[:alnum:]': ['\\p{L}\\p{Nl}\\p{Nd}', true], |
7 | | - '[:alpha:]': ['\\p{L}\\p{Nl}', true], |
8 | | - '[:ascii:]': ['\\x' + '00-\\x' + '7f', false], |
9 | | - '[:blank:]': ['\\p{Zs}\\t', true], |
10 | | - '[:cntrl:]': ['\\p{Cc}', true], |
11 | | - '[:digit:]': ['\\p{Nd}', true], |
12 | | - '[:graph:]': ['\\p{Z}\\p{C}', true, true], |
13 | | - '[:lower:]': ['\\p{Ll}', true], |
14 | | - '[:print:]': ['\\p{C}', true], |
15 | | - '[:punct:]': ['\\p{P}', true], |
16 | | - '[:space:]': ['\\p{Z}\\t\\r\\n\\v\\f', true], |
17 | | - '[:upper:]': ['\\p{Lu}', true], |
18 | | - '[:word:]': ['\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}', true], |
19 | | - '[:xdigit:]': ['A-Fa-f0-9', false], |
20 | | -} |
| 5 | +const posixClasses: { [k: string]: [e: string, u: boolean, n?: boolean] } = |
| 6 | + { |
| 7 | + '[:alnum:]': ['\\p{L}\\p{Nl}\\p{Nd}', true], |
| 8 | + '[:alpha:]': ['\\p{L}\\p{Nl}', true], |
| 9 | + '[:ascii:]': ['\\x' + '00-\\x' + '7f', false], |
| 10 | + '[:blank:]': ['\\p{Zs}\\t', true], |
| 11 | + '[:cntrl:]': ['\\p{Cc}', true], |
| 12 | + '[:digit:]': ['\\p{Nd}', true], |
| 13 | + '[:graph:]': ['\\p{Z}\\p{C}', true, true], |
| 14 | + '[:lower:]': ['\\p{Ll}', true], |
| 15 | + '[:print:]': ['\\p{C}', true], |
| 16 | + '[:punct:]': ['\\p{P}', true], |
| 17 | + '[:space:]': ['\\p{Z}\\t\\r\\n\\v\\f', true], |
| 18 | + '[:upper:]': ['\\p{Lu}', true], |
| 19 | + '[:word:]': ['\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}', true], |
| 20 | + '[:xdigit:]': ['A-Fa-f0-9', false], |
| 21 | + } |
21 | 22 |
|
22 | 23 | // only need to escape a few things inside of brace expressions |
23 | 24 | // escapes: [ \ ] - |
@@ -163,11 +164,9 @@ export const parseClass = ( |
163 | 164 | const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']' |
164 | 165 | const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']' |
165 | 166 | const comb = |
166 | | - ranges.length && negs.length |
167 | | - ? '(' + sranges + '|' + snegs + ')' |
168 | | - : ranges.length |
169 | | - ? sranges |
170 | | - : snegs |
| 167 | + ranges.length && negs.length ? '(' + sranges + '|' + snegs + ')' |
| 168 | + : ranges.length ? sranges |
| 169 | + : snegs |
171 | 170 |
|
172 | 171 | return [comb, uflag, endPos - pos, true] |
173 | 172 | } |
0 commit comments