aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/css-tree/lib/syntax/scope/default.js
diff options
context:
space:
mode:
authorAdam Mathes <adam@adammathes.com>2026-02-13 21:34:48 -0800
committerAdam Mathes <adam@adammathes.com>2026-02-13 21:34:48 -0800
commit76cb9c2a39d477a64824a985ade40507e3bbade1 (patch)
tree41e997aa9c6f538d3a136af61dae9424db2005a9 /vanilla/node_modules/css-tree/lib/syntax/scope/default.js
parent819a39a21ac992b1393244a4c283bbb125208c69 (diff)
downloadneko-76cb9c2a39d477a64824a985ade40507e3bbade1.tar.gz
neko-76cb9c2a39d477a64824a985ade40507e3bbade1.tar.bz2
neko-76cb9c2a39d477a64824a985ade40507e3bbade1.zip
feat(vanilla): add testing infrastructure and tests (NK-wjnczv)
Diffstat (limited to 'vanilla/node_modules/css-tree/lib/syntax/scope/default.js')
-rw-r--r--vanilla/node_modules/css-tree/lib/syntax/scope/default.js85
1 files changed, 85 insertions, 0 deletions
diff --git a/vanilla/node_modules/css-tree/lib/syntax/scope/default.js b/vanilla/node_modules/css-tree/lib/syntax/scope/default.js
new file mode 100644
index 0000000..8f14035
--- /dev/null
+++ b/vanilla/node_modules/css-tree/lib/syntax/scope/default.js
@@ -0,0 +1,85 @@
+import {
+ Ident,
+ String as StringToken,
+ Number as NumberToken,
+ Function as FunctionToken,
+ Url,
+ Hash,
+ Dimension,
+ Percentage,
+ LeftParenthesis,
+ LeftSquareBracket,
+ Comma,
+ Delim
+} from '../../tokenizer/index.js';
+
+const NUMBERSIGN = 0x0023; // U+0023 NUMBER SIGN (#)
+const ASTERISK = 0x002A; // U+002A ASTERISK (*)
+const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+)
+const HYPHENMINUS = 0x002D; // U+002D HYPHEN-MINUS (-)
+const SOLIDUS = 0x002F; // U+002F SOLIDUS (/)
+const U = 0x0075; // U+0075 LATIN SMALL LETTER U (u)
+
+export default function defaultRecognizer(context) {
+ switch (this.tokenType) {
+ case Hash:
+ return this.Hash();
+
+ case Comma:
+ return this.Operator();
+
+ case LeftParenthesis:
+ return this.Parentheses(this.readSequence, context.recognizer);
+
+ case LeftSquareBracket:
+ return this.Brackets(this.readSequence, context.recognizer);
+
+ case StringToken:
+ return this.String();
+
+ case Dimension:
+ return this.Dimension();
+
+ case Percentage:
+ return this.Percentage();
+
+ case NumberToken:
+ return this.Number();
+
+ case FunctionToken:
+ return this.cmpStr(this.tokenStart, this.tokenEnd, 'url(')
+ ? this.Url()
+ : this.Function(this.readSequence, context.recognizer);
+
+ case Url:
+ return this.Url();
+
+ case Ident:
+ // check for unicode range, it should start with u+ or U+
+ if (this.cmpChar(this.tokenStart, U) &&
+ this.cmpChar(this.tokenStart + 1, PLUSSIGN)) {
+ return this.UnicodeRange();
+ } else {
+ return this.Identifier();
+ }
+
+ case Delim: {
+ const code = this.charCodeAt(this.tokenStart);
+
+ if (code === SOLIDUS ||
+ code === ASTERISK ||
+ code === PLUSSIGN ||
+ code === HYPHENMINUS) {
+ return this.Operator(); // TODO: replace with Delim
+ }
+
+ // TODO: produce a node with Delim node type
+
+ if (code === NUMBERSIGN) {
+ this.error('Hex or identifier is expected', this.tokenStart + 1);
+ }
+
+ break;
+ }
+ }
+};