Initial commit: Crypto trader application

This commit is contained in:
2025-12-25 20:20:40 -05:00
commit 07a04c1bb8
47895 changed files with 2042266 additions and 0 deletions

View File

@@ -0,0 +1,60 @@
'use strict';
const lang = require('./lang.cjs');
const selectorList = {
parse() {
return this.createSingleNodeList(
this.SelectorList()
);
}
};
const selector = {
parse() {
return this.createSingleNodeList(
this.Selector()
);
}
};
const identList = {
parse() {
return this.createSingleNodeList(
this.Identifier()
);
}
};
const langList = {
parse: lang.parseLanguageRangeList
};
const nth = {
parse() {
return this.createSingleNodeList(
this.Nth()
);
}
};
const pseudo = {
'dir': identList,
'has': selectorList,
'lang': langList,
'matches': selectorList,
'is': selectorList,
'-moz-any': selectorList,
'-webkit-any': selectorList,
'where': selectorList,
'not': selectorList,
'nth-child': nth,
'nth-last-child': nth,
'nth-last-of-type': nth,
'nth-of-type': nth,
'slotted': selector,
'host': selector,
'host-context': selector
};
module.exports = pseudo;

View File

@@ -0,0 +1,37 @@
'use strict';
const types = require('../../tokenizer/types.cjs');
function parseLanguageRangeList() {
const children = this.createList();
this.skipSC();
loop: while (!this.eof) {
switch (this.tokenType) {
case types.Ident:
children.push(this.Identifier());
break;
case types.String:
children.push(this.String());
break;
case types.Comma:
children.push(this.Operator());
break;
case types.RightParenthesis:
break loop;
default:
this.error('Identifier, string or comma is expected');
}
this.skipSC();
}
return children;
}
exports.parseLanguageRangeList = parseLanguageRangeList;