summaryrefslogtreecommitdiff
path: root/packages/astro-parser/src/utils/full_char_code_at.ts
blob: b62b2c77afce80ada1dd93ba44cc7aada54ef858 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
// Adapted from https://github.com/acornjs/acorn/blob/6584815dca7440e00de841d1dad152302fdd7ca5/src/tokenize.js
// Reproduced under MIT License https://github.com/acornjs/acorn/blob/master/LICENSE

/** @url https://github.com/acornjs/acorn/blob/6584815dca7440e00de841d1dad152302fdd7ca5/src/tokenize.js */
export default function full_char_code_at(str: string, i: number): number {
  const code = str.charCodeAt(i);
  if (code <= 0xd7ff || code >= 0xe000) return code;

  const next = str.charCodeAt(i + 1);
  return (code << 10) + next - 0x35fdc00;
}