|
1 |
| -'use strict'; |
| 1 | +'use strict' |
2 | 2 |
|
3 |
| -module.exports = match; |
| 3 | +module.exports = match |
4 | 4 |
|
5 |
| -var zwitch = require('zwitch'); |
6 |
| -var needsIndex = require('./pseudo').needsIndex; |
7 |
| -var test = require('./test'); |
8 |
| -var nest = require('./nest'); |
| 5 | +var zwitch = require('zwitch') |
| 6 | +var needsIndex = require('./pseudo').needsIndex |
| 7 | +var test = require('./test') |
| 8 | +var nest = require('./nest') |
9 | 9 |
|
10 |
| -var type = zwitch('type'); |
11 |
| -var handlers = type.handlers; |
| 10 | +var type = zwitch('type') |
| 11 | +var handlers = type.handlers |
12 | 12 |
|
13 |
| -type.unknown = unknownType; |
14 |
| -type.invalid = invalidType; |
15 |
| -handlers.selectors = selectors; |
16 |
| -handlers.ruleSet = ruleSet; |
17 |
| -handlers.rule = rule; |
| 13 | +type.unknown = unknownType |
| 14 | +type.invalid = invalidType |
| 15 | +handlers.selectors = selectors |
| 16 | +handlers.ruleSet = ruleSet |
| 17 | +handlers.rule = rule |
18 | 18 |
|
19 | 19 | function match(query, node, state) {
|
20 |
| - return query && node ? type(query, node, state) : []; |
| 20 | + return query && node ? type(query, node, state) : [] |
21 | 21 | }
|
22 | 22 |
|
23 | 23 | function selectors(query, node, state) {
|
24 |
| - var collect = collector(state.one); |
25 |
| - var ruleSets = query.selectors; |
26 |
| - var length = ruleSets.length; |
27 |
| - var index = -1; |
| 24 | + var collect = collector(state.one) |
| 25 | + var ruleSets = query.selectors |
| 26 | + var length = ruleSets.length |
| 27 | + var index = -1 |
28 | 28 |
|
29 | 29 | while (++index < length) {
|
30 |
| - collect(ruleSet(ruleSets[index], node, state)); |
| 30 | + collect(ruleSet(ruleSets[index], node, state)) |
31 | 31 | }
|
32 | 32 |
|
33 |
| - return collect.result; |
| 33 | + return collect.result |
34 | 34 | }
|
35 | 35 |
|
36 | 36 | function ruleSet(query, node, state) {
|
37 |
| - return rule(query.rule, node, state); |
| 37 | + return rule(query.rule, node, state) |
38 | 38 | }
|
39 | 39 |
|
40 | 40 | function rule(query, tree, state) {
|
41 |
| - var collect = collector(state.one); |
42 |
| - var opts = {iterator: match, one: state.one, shallow: state.shallow}; |
| 41 | + var collect = collector(state.one) |
| 42 | + var opts = {iterator: match, one: state.one, shallow: state.shallow} |
43 | 43 |
|
44 | 44 | if (state.shallow && query.rule) {
|
45 |
| - throw new Error('Expected selector without nesting'); |
| 45 | + throw new Error('Expected selector without nesting') |
46 | 46 | }
|
47 | 47 |
|
48 |
| - nest(query, tree, 0, null, configure(query, opts)); |
| 48 | + nest(query, tree, 0, null, configure(query, opts)) |
49 | 49 |
|
50 |
| - return collect.result; |
| 50 | + return collect.result |
51 | 51 |
|
52 | 52 | function match(query, node, index, parent, state) {
|
53 | 53 | if (test(query, node, index, parent, state)) {
|
54 | 54 | if (query.rule) {
|
55 |
| - nest(query.rule, node, index, parent, configure(query.rule, state)); |
| 55 | + nest(query.rule, node, index, parent, configure(query.rule, state)) |
56 | 56 | } else {
|
57 |
| - collect(node); |
58 |
| - state.found = true; |
| 57 | + collect(node) |
| 58 | + state.found = true |
59 | 59 | }
|
60 | 60 | }
|
61 | 61 | }
|
62 | 62 |
|
63 | 63 | function configure(query, state) {
|
64 |
| - var pseudos = query.pseudos; |
65 |
| - var length = pseudos && pseudos.length; |
66 |
| - var index = -1; |
| 64 | + var pseudos = query.pseudos |
| 65 | + var length = pseudos && pseudos.length |
| 66 | + var index = -1 |
67 | 67 |
|
68 | 68 | while (++index < length) {
|
69 | 69 | if (needsIndex.indexOf(pseudos[index].name) !== -1) {
|
70 |
| - state.index = true; |
71 |
| - break; |
| 70 | + state.index = true |
| 71 | + break |
72 | 72 | }
|
73 | 73 | }
|
74 | 74 |
|
75 |
| - return state; |
| 75 | + return state |
76 | 76 | }
|
77 | 77 | }
|
78 | 78 |
|
79 | 79 | /* istanbul ignore next - Shouldn’t be invoked, all data is handled. */
|
80 | 80 | function unknownType(query) {
|
81 |
| - throw new Error('Unknown type `' + query.type + '`'); |
| 81 | + throw new Error('Unknown type `' + query.type + '`') |
82 | 82 | }
|
83 | 83 |
|
84 | 84 | /* istanbul ignore next - Shouldn’t be invoked, parser gives correct data. */
|
85 | 85 | function invalidType() {
|
86 |
| - throw new Error('Invalid type'); |
| 86 | + throw new Error('Invalid type') |
87 | 87 | }
|
88 | 88 |
|
89 | 89 | function collector(one) {
|
90 |
| - var result = []; |
91 |
| - var found; |
| 90 | + var result = [] |
| 91 | + var found |
92 | 92 |
|
93 |
| - collect.result = result; |
| 93 | + collect.result = result |
94 | 94 |
|
95 |
| - return collect; |
| 95 | + return collect |
96 | 96 |
|
97 | 97 | /* Append elements to array, filtering out duplicates. */
|
98 | 98 | function collect(source) {
|
99 | 99 | if ('length' in source) {
|
100 |
| - collectAll(); |
| 100 | + collectAll() |
101 | 101 | } else {
|
102 |
| - collectOne(source); |
| 102 | + collectOne(source) |
103 | 103 | }
|
104 | 104 |
|
105 | 105 | function collectAll() {
|
106 |
| - var length = source.length; |
107 |
| - var index = -1; |
| 106 | + var length = source.length |
| 107 | + var index = -1 |
108 | 108 |
|
109 | 109 | while (++index < length) {
|
110 |
| - collectOne(source[index]); |
| 110 | + collectOne(source[index]) |
111 | 111 | }
|
112 | 112 | }
|
113 | 113 |
|
114 | 114 | function collectOne(element) {
|
115 | 115 | if (one) {
|
116 | 116 | /* istanbul ignore if - shouldn’t happen, safeguards performance problems. */
|
117 | 117 | if (found) {
|
118 |
| - throw new Error('Cannot collect multiple nodes'); |
| 118 | + throw new Error('Cannot collect multiple nodes') |
119 | 119 | }
|
120 | 120 |
|
121 |
| - found = true; |
| 121 | + found = true |
122 | 122 | }
|
123 | 123 |
|
124 | 124 | if (result.indexOf(element) === -1) {
|
125 |
| - result.push(element); |
| 125 | + result.push(element) |
126 | 126 | }
|
127 | 127 | }
|
128 | 128 | }
|
|
0 commit comments