aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/@csstools/css-parser-algorithms/README.md
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/@csstools/css-parser-algorithms/README.md
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/@csstools/css-parser-algorithms/README.md')
-rw-r--r--vanilla/node_modules/@csstools/css-parser-algorithms/README.md119
1 files changed, 119 insertions, 0 deletions
diff --git a/vanilla/node_modules/@csstools/css-parser-algorithms/README.md b/vanilla/node_modules/@csstools/css-parser-algorithms/README.md
new file mode 100644
index 0000000..a51d668
--- /dev/null
+++ b/vanilla/node_modules/@csstools/css-parser-algorithms/README.md
@@ -0,0 +1,119 @@
+# CSS Parser Algorithms <img src="https://cssdb.org/images/css.svg" alt="for CSS" width="90" height="90" align="right">
+
+[<img alt="npm version" src="https://img.shields.io/npm/v/@csstools/css-parser-algorithms.svg" height="20">][npm-url]
+[<img alt="Build Status" src="https://github.com/csstools/postcss-plugins/actions/workflows/test.yml/badge.svg?branch=main" height="20">][cli-url]
+[<img alt="Discord" src="https://shields.io/badge/Discord-5865F2?logo=discord&logoColor=white">][discord]
+
+Implemented from : https://www.w3.org/TR/2021/CRD-css-syntax-3-20211224/
+
+## API
+
+[Read the API docs](./docs/css-parser-algorithms.md)
+
+## Usage
+
+Add [CSS Parser Algorithms] to your project:
+
+```bash
+npm install @csstools/css-parser-algorithms @csstools/css-tokenizer --save-dev
+```
+
+[CSS Parser Algorithms] only accepts tokenized CSS.
+It must be used together with `@csstools/css-tokenizer`.
+
+
+```js
+import { tokenizer, TokenType } from '@csstools/css-tokenizer';
+import { parseComponentValue } from '@csstools/css-parser-algorithms';
+
+const myCSS = `@media only screen and (min-width: 768rem) {
+ .foo {
+ content: 'Some content!' !important;
+ }
+}
+`;
+
+const t = tokenizer({
+ css: myCSS,
+});
+
+const tokens = [];
+
+{
+ while (!t.endOfFile()) {
+ tokens.push(t.nextToken());
+ }
+
+ tokens.push(t.nextToken()); // EOF-token
+}
+
+const options = {
+ onParseError: ((err) => {
+ throw err;
+ }),
+};
+
+const result = parseComponentValue(tokens, options);
+
+console.log(result);
+```
+
+### Available functions
+
+- [`parseComponentValue`](https://www.w3.org/TR/css-syntax-3/#parse-component-value)
+- [`parseListOfComponentValues`](https://www.w3.org/TR/css-syntax-3/#parse-list-of-component-values)
+- [`parseCommaSeparatedListOfComponentValues`](https://www.w3.org/TR/css-syntax-3/#parse-comma-separated-list-of-component-values)
+
+### Utilities
+
+#### `gatherNodeAncestry`
+
+The AST does not expose the entire ancestry of each node.
+The walker methods do provide access to the current parent, but also not the entire ancestry.
+
+To gather the entire ancestry for a a given sub tree of the AST you can use `gatherNodeAncestry`.
+The result is a `Map` with the child nodes as keys and the parents as values.
+This allows you to lookup any ancestor of any node.
+
+```js
+import { parseComponentValue } from '@csstools/css-parser-algorithms';
+
+const result = parseComponentValue(tokens, options);
+const ancestry = gatherNodeAncestry(result);
+```
+
+### Options
+
+```ts
+{
+ onParseError?: (error: ParseError) => void
+}
+```
+
+#### `onParseError`
+
+The parser algorithms are forgiving and won't stop when a parse error is encountered.
+Parse errors also aren't tokens.
+
+To receive parsing error information you can set a callback.
+
+Parser errors will try to inform you about the point in the parsing logic the error happened.
+This tells you the kind of error.
+
+## Goals and non-goals
+
+Things this package aims to be:
+- specification compliant CSS parser
+- a reliable low level package to be used in CSS sub-grammars
+
+What it is not:
+- opinionated
+- fast
+- small
+- a replacement for PostCSS (PostCSS is fast and also an ecosystem)
+
+[cli-url]: https://github.com/csstools/postcss-plugins/actions/workflows/test.yml?query=workflow/test
+[discord]: https://discord.gg/bUadyRwkJS
+[npm-url]: https://www.npmjs.com/package/@csstools/css-parser-algorithms
+
+[CSS Parser Algorithms]: https://github.com/csstools/postcss-plugins/tree/main/packages/css-parser-algorithms