Packages
moon
2.90.1
2.90.5
retired
2.90.4
2.90.3
2.90.2
2.90.1
2.90.0
2.89.4
2.89.1
2.89.0
2.88.0
2.87.11
2.87.10
2.87.9
2.87.8
2.87.7
2.87.6
2.87.5
2.87.4
2.87.3
2.87.2
2.87.1
2.87.0
2.86.1
2.86.0
2.85.1
2.85.0
2.84.0
2.83.0
2.82.0
2.81.4
2.81.3
2.81.2
2.81.1
2.81.0
2.80.2
2.80.1
2.80.0
2.79.13
2.79.12
2.79.11
2.79.10
2.79.9
2.79.8
2.79.7
2.79.6
2.79.5
2.79.4
2.79.3
2.79.2
2.79.1
2.79.0
2.78.4
2.78.3
2.78.2
2.78.1
2.78.0
2.77.0
2.76.5
2.76.4
2.76.3
2.76.2
2.76.1
2.76.0
2.75.0
2.74.1
2.74.0
2.73.8
2.73.7
2.73.6
2.73.5
2.73.4
2.73.3
2.73.2
2.73.1
2.73.0
2.72.5
2.72.4
2.72.3
2.72.2
2.72.1
2.72.0
2.71.1
2.71.0
2.70.0
2.69.2
2.69.1
2.69.0
2.68.11
2.68.10
Components-based design system written in elixir
Current section
Files
Jump to
Current section
Files
assets/node_modules/sucrase/dist/parser/tokenizer/readWord.js
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _base = require('../traverser/base');
var _charcodes = require('../util/charcodes');
var _identifier = require('../util/identifier');
var _index = require('./index');
var _readWordTree = require('./readWordTree');
var _types = require('./types');
/**
* Read an identifier, producing either a name token or matching on one of the existing keywords.
* For performance, we pre-generate big decision tree that we traverse. Each node represents a
* prefix and has 27 values, where the first value is the token or contextual token, if any (-1 if
* not), and the other 26 values are the transitions to other nodes, or -1 to stop.
*/
function readWord() {
let treePos = 0;
let code = 0;
let pos = _base.state.pos;
while (pos < _base.input.length) {
code = _base.input.charCodeAt(pos);
if (code < _charcodes.charCodes.lowercaseA || code > _charcodes.charCodes.lowercaseZ) {
break;
}
const next = _readWordTree.READ_WORD_TREE[treePos + (code - _charcodes.charCodes.lowercaseA) + 1];
if (next === -1) {
break;
} else {
treePos = next;
pos++;
}
}
const keywordValue = _readWordTree.READ_WORD_TREE[treePos];
if (keywordValue > -1 && !_identifier.IS_IDENTIFIER_CHAR[code]) {
_base.state.pos = pos;
if (keywordValue & 1) {
_index.finishToken.call(void 0, keywordValue >>> 1);
} else {
_index.finishToken.call(void 0, _types.TokenType.name, keywordValue >>> 1);
}
return;
}
while (pos < _base.input.length) {
const ch = _base.input.charCodeAt(pos);
if (_identifier.IS_IDENTIFIER_CHAR[ch]) {
pos++;
} else if (ch === _charcodes.charCodes.backslash) {
// \u
pos += 2;
if (_base.input.charCodeAt(pos) === _charcodes.charCodes.leftCurlyBrace) {
while (pos < _base.input.length && _base.input.charCodeAt(pos) !== _charcodes.charCodes.rightCurlyBrace) {
pos++;
}
pos++;
}
} else if (ch === _charcodes.charCodes.atSign && _base.input.charCodeAt(pos + 1) === _charcodes.charCodes.atSign) {
pos += 2;
} else {
break;
}
}
_base.state.pos = pos;
_index.finishToken.call(void 0, _types.TokenType.name);
} exports.default = readWord;