()
| 167 | } |
| 168 | |
| 169 | @Nullable Evaluator parseSubclass() { |
| 170 | // Subclass: ID | Class | Attribute | Pseudo |
| 171 | if (tq.matchChomp('#')) return byId(); |
| 172 | else if (tq.matchChomp('.')) return byClass(); |
| 173 | else if (tq.matches('[')) return byAttribute(); |
| 174 | else if (tq.matchChomp("::")) return parseNodeSelector(); // ::comment etc |
| 175 | else if (tq.matchChomp(':')) return parsePseudoSelector(); |
| 176 | else return null; |
| 177 | } |
| 178 | |
| 179 | /** Merge two evals into an Or. */ |
| 180 | static Evaluator or(Evaluator left, Evaluator right) { |
no test coverage detected