Blame view

node_modules/css-selector-tokenizer/README.md 2.35 KB
ce4c83ff   wxy   初始提交
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
  # CSS Modules: CSS selector Tokenizer
  
  Parses and stringifies CSS selectors.
  
  ``` js
  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
  ```
  
  [![Build Status](https://travis-ci.org/css-modules/css-selector-tokenizer.svg?branch=master)](https://travis-ci.org/css-modules/css-selector-tokenizer)
  
  * Lines: [![Coverage Status](https://coveralls.io/repos/css-modules/css-selector-tokenizer/badge.svg?branch=master)](https://coveralls.io/r/css-modules/css-selector-tokenizer?branch=master)
  * Statements: [![codecov.io](http://codecov.io/github/css-modules/css-selector-tokenizer/coverage.svg?branch=master)](http://codecov.io/github/css-modules/css-selector-tokenizer?branch=master)
  
  ## Development
  
  - `npm autotest` will watch `lib` and `test` for changes and retest
  
  ## License
  
  MIT
  
  ## With thanks
  
  - Mark Dalgleish
  - Glen Maddern
  - Guy Bedford
  
  ---
  Tobias Koppers, 2015.