private static CssSelector<? extends Selector, ? extends XPathComponent> getSelector(Selector selector) { switch (selector.getSelectorType()) { case Selector.SAC_CONDITIONAL_SELECTOR: return conditionalCssSelector; case Selector.SAC_ELEMENT_NODE_SELECTOR: return tagNameSelector; // COMBINATORS case Selector.SAC_DESCENDANT_SELECTOR: return descendantCssSelector; case Selector.SAC_CHILD_SELECTOR: return directDescendantCssSelector; case Selector.SAC_DIRECT_ADJACENT_SELECTOR: // both "E ~ F" and "E + F" return DIRECT_ADJACENT_SELECTOR, so we must resort to instanceof... if (selector instanceof GeneralAdjacentSelectorImpl) { return generalAdjacentCssSelector; } return directAdjacentCssSelector; case Selector.SAC_ANY_NODE_SELECTOR: case Selector.SAC_ROOT_NODE_SELECTOR: case Selector.SAC_NEGATIVE_SELECTOR: case Selector.SAC_TEXT_NODE_SELECTOR: case Selector.SAC_CDATA_SECTION_NODE_SELECTOR: case Selector.SAC_PROCESSING_INSTRUCTION_NODE_SELECTOR: case Selector.SAC_COMMENT_NODE_SELECTOR: case Selector.SAC_PSEUDO_ELEMENT_SELECTOR: default: return new UnknownCssSelector<>(selector.getSelectorType()); } }
private static CssSelector<? extends Selector, ? extends XPathComponent> getSelector(Selector selector) { switch (selector.getSelectorType()) { case Selector.SAC_CONDITIONAL_SELECTOR: return conditionalCssSelector; case Selector.SAC_ELEMENT_NODE_SELECTOR: return tagNameSelector; // COMBINATORS case Selector.SAC_DESCENDANT_SELECTOR: return descendantCssSelector; case Selector.SAC_CHILD_SELECTOR: return directDescendantCssSelector; case Selector.SAC_DIRECT_ADJACENT_SELECTOR: // both "E ~ F" and "E + F" return DIRECT_ADJACENT_SELECTOR, so we must resort to instanceof... if (selector instanceof GeneralAdjacentSelectorImpl) { return generalAdjacentCssSelector; } return directAdjacentCssSelector; case Selector.SAC_ANY_NODE_SELECTOR: case Selector.SAC_ROOT_NODE_SELECTOR: case Selector.SAC_NEGATIVE_SELECTOR: case Selector.SAC_TEXT_NODE_SELECTOR: case Selector.SAC_CDATA_SECTION_NODE_SELECTOR: case Selector.SAC_PROCESSING_INSTRUCTION_NODE_SELECTOR: case Selector.SAC_COMMENT_NODE_SELECTOR: case Selector.SAC_PSEUDO_ELEMENT_SELECTOR: default: return new UnknownCssSelector<>(selector.getSelectorType()); } }