@@ -38,26 +38,26 @@ type skipPossibleQuestionMark<unscanned extends string> =
3838 unscanned extends `?${infer next } ` ? next : unscanned
3939
4040type parsePossibleRangeString < unscanned extends string > =
41+ // treat bound
42+ unscanned extends `${infer l extends `${number } `} ,${infer r extends `${number } `} }${infer next } ` ?
43+ parseNaturalNumber < l > extends never ? null
44+ : parseNaturalNumber < r > extends never ? null
45+ : ParsedRange . from < {
46+ min : parseNaturalNumber < l >
47+ max : parseNaturalNumber < r >
48+ unscanned : skipPossibleQuestionMark < next >
49+ } >
4150 // treat unbound
42- unscanned extends `${infer l } ,}${infer next } ` ?
51+ : unscanned extends `${infer l extends `${ number } ` } ,}${infer next } ` ?
4352 parseNaturalNumber < l > extends never ?
4453 null
4554 : ParsedRange . from < {
4655 min : parseNaturalNumber < l >
4756 max : null
4857 unscanned : skipPossibleQuestionMark < next >
4958 } >
50- : // treat bound
51- unscanned extends `${infer l } ,${infer r } }${infer next } ` ?
52- parseNaturalNumber < l > extends never ? null
53- : parseNaturalNumber < r > extends never ? null
54- : ParsedRange . from < {
55- min : parseNaturalNumber < l >
56- max : parseNaturalNumber < r >
57- unscanned : skipPossibleQuestionMark < next >
58- } >
5959 : // treat exact
60- unscanned extends `${infer l } }${infer next } ` ?
60+ unscanned extends `${infer l extends `${ number } ` } }${infer next } ` ?
6161 parseNaturalNumber < l > extends never ?
6262 null
6363 : ParsedRange . from < {
0 commit comments