in tsdoc/src/beta/DeclarationReference.ts [984:1055]
private scanEscapeSequence(): void {
if (this.eof) {
this._stringIsUnterminated = true;
return;
}
const ch: string = this._text.charAt(this._pos);
// EscapeSequence:: CharacterEscapeSequence
if (isCharacterEscapeSequence(ch)) {
this._pos++;
return;
}
// EscapeSequence:: `0` [lookahead != DecimalDigit]
if (
ch === '0' &&
(this._pos + 1 === this._text.length || !isDecimalDigit(this._text.charAt(this._pos + 1)))
) {
this._pos++;
return;
}
// EscapeSequence:: HexEscapeSequence
if (
ch === 'x' &&
this._pos + 3 <= this._text.length &&
isHexDigit(this._text.charAt(this._pos + 1)) &&
isHexDigit(this._text.charAt(this._pos + 2))
) {
this._pos += 3;
return;
}
// EscapeSequence:: UnicodeEscapeSequence
// UnicodeEscapeSequence:: `u` Hex4Digits
if (
ch === 'u' &&
this._pos + 5 <= this._text.length &&
isHexDigit(this._text.charAt(this._pos + 1)) &&
isHexDigit(this._text.charAt(this._pos + 2)) &&
isHexDigit(this._text.charAt(this._pos + 3)) &&
isHexDigit(this._text.charAt(this._pos + 4))
) {
this._pos += 5;
return;
}
// EscapeSequence:: UnicodeEscapeSequence
// UnicodeEscapeSequence:: `u` `{` CodePoint `}`
if (ch === 'u' && this._pos + 4 <= this._text.length && this._text.charAt(this._pos + 1) === '{') {
let hexDigits: string = this._text.charAt(this._pos + 2);
if (isHexDigit(hexDigits)) {
for (let i: number = this._pos + 3; i < this._text.length; i++) {
const ch2: string = this._text.charAt(i);
if (ch2 === '}') {
const mv: number = parseInt(hexDigits, 16);
if (mv <= 0x10ffff) {
this._pos = i + 1;
return;
}
break;
}
if (!isHexDigit(ch2)) {
hexDigits += ch2;
break;
}
}
}
}
this._stringIsUnterminated = true;
}