0.8.0 • Published 3 years ago

css-selector-tokenizer v0.8.0

Weekly downloads
4,475,840
License
MIT
Repository
github
Last release
3 years ago

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.

codelyzer@sooha/clicloud-archive-s3@olivervorasai/sliderasterjs@infinitebrahmanuniverse/nolb-css-s@iuijs/clisuperiorui@everything-registry/sub-chunk-1420p149-tableeasyplayer-myess-compilervue-merge-less@semcore/babel-plugin-stylesp147-tablep148-tablecss-attr-scope-loadercss-attr-scope-loader-mcr-fixcss-specificity-calculatornka-gantt-task-react@mmmcorp/css-loader@kommunicate/kommunicate-chatbot-plugincss-flat-loader@mpxjs/webpack-plugincss-loader-1css-loader-bbqcss-loader-fixercss-loader-jnrdtcss-loader-modify-kstncss-less-loadercss-loader-xcssesc-wbgcsslibifycss-modules-to-tailwindcss-selector-tree@ngxvoice/ngx-voicelistner@nodecraft/css-loader@nodaomg/cssstatsdculus-daisy-uidculus-uidculusuxvision-css-loadernois-react-toast@nice-labs/typed-css-modulesvue-compmentnscss@ersinfotech/antd-pro-merge-lessterra-toolkitterra-dev-sitechanjet-css-loadermodular-css-loaderchain_digger@enirisdev/angular-google-chartscarousel-reactmggauhar@elevenia/edts-ui-core@leiyulf/gantt-task-reactcssstatscriticizer@liip/class-prefixer-core@liip/postcss-class-prefixerdaisyuidaisyui-fork@kristoffertonning/vue-laravel-errors@randomjs/css-loaderplm-webpack-loaderperfect-css-loader@refactorpro/pixi-virtual-joystickvusion-css-loader@sak1sham/react-toc-highlight@sanity/css-loaderpolymer-webpack-loaderpolymer2-webpack-loader-es6ygd-pro-merge-less@stylable/language-servicepostcss-global-importpostcss-modules-resolve-imports@stylable/core@superdesk/build-toolspostcss-reusepostcss-composespostcss-prefixerpostcss-prefixer-eliahpostcss-ast-dependenciespostcss-icss-composespostcss-icss-selectors@the91end/react-auth@snoweast/antd-pro-merge-lesscourse-vue-tplcustom-css-loaderng-search-dropdowndigital-keyboard-demos@hazyflame/vue-jitsi-meetclass-postfixclass-repeat@icestack/postcss-utils@fishx/fishx-merge-lessnativescript-css-loaderconceptlzbtnpackagen9-codelyzer
0.8.0

3 years ago

0.7.3

4 years ago

0.7.2

4 years ago

0.7.1

5 years ago

0.7.0

8 years ago

0.6.0

8 years ago

0.5.4

9 years ago

0.5.3

9 years ago

0.5.2

9 years ago

0.5.1

9 years ago

0.5.0

9 years ago

0.4.1

9 years ago

0.4.0

9 years ago

0.3.1

9 years ago

0.3.0

9 years ago

0.2.1

9 years ago

0.2.0

9 years ago

0.1.0

9 years ago