css-selector-tokenizer

Parses and stringifies CSS selectors

MIT 18 个版本
安装
npm install css-selector-tokenizer
yarn add css-selector-tokenizer
pnpm add css-selector-tokenizer
bun add css-selector-tokenizer
README

CSS Modules: css-selector-tokenizer

Build Status coveralls.io codecov.io

Parses and stringifies CSS selectors.

import Tokenizer from "css-selector-tokenizer";

let input = "a#content.active > div::first-line [data-content], a:not(:visited)";

Tokenizer.parse(input); // === expected
let expected = {
  type: "selectors",
  nodes: [
    {
      type: "selector",
      nodes: [
        { type: "element", name: "a" },
        { type: "id", name: "content" },
        { type: "class", name: "active" },
        { type: "operator", operator: ">", before: " ", after: " " },
        { type: "element", name: "div" },
        { type: "pseudo-element", name: "first-line" },
        { type: "spacing", value: " " },
        { type: "attribute", content: "data-content" },
      ]
    },
    {
      type: "selector",
      nodes: [
        { type: "element", name: "a" },
        { type: "nested-pseudo-class", name: "not", nodes: [
          {
            type: "selector",
            nodes: [
              { type: "pseudo-class", name: "visited" }
            ]
          }
        ] }
      ],
      before: " "
    }
  ]
}

Tokenizer.stringify(expected) // === input

// * => { type: "universal" }
// foo|element = { type: "element", name: "element", namespace: "foo" }
// *|* = { type: "universal", namespace: "*" }
// :has(h1, h2) => { type: "nested-pseudo-class", name: "has", nodes: [
//     {
//       type: "selector",
//       nodes: [
//         { type: "element", name: "h1" }
//       ]
//     },
//     {
//       type: "selector",
//       nodes: [
//         { type: "element", name: "h2" }
//       ],
//       before: " "
//     }
//   ] }

Building

npm install
npm test

Development

  • npm test -- -w will watch lib and test for changes and retest

License

MIT

With thanks

  • Mark Dalgleish
  • Glen Maddern
  • Guy Bedford

Tobias Koppers, 2015.

版本列表
0.8.0 2021-06-01
0.7.3 2020-07-21
0.7.2 2020-03-03
0.7.1 2018-10-30
0.7.0 2016-09-05
0.6.0 2016-07-20
0.5.4 2015-07-26
0.5.3 2015-07-18
0.5.2 2015-06-19
0.5.1 2015-06-16
0.5.0 2015-06-16
0.4.1 2015-06-12
0.4.0 2015-06-09
0.3.1 2015-05-29
0.3.0 2015-05-29
0.2.1 2015-05-29
0.2.0 2015-05-29
0.1.0 2015-05-29