1<?php
2
3/*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12namespace Symfony\Component\CssSelector\XPath\Extension;
13
14/**
15 * XPath expression translator extension interface.
16 *
17 * This component is a port of the Python cssselect library,
18 * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect.
19 *
20 * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
21 *
22 * @internal
23 */
24interface ExtensionInterface
25{
26    /**
27     * Returns node translators.
28     *
29     * These callables will receive the node as first argument and the translator as second argument.
30     *
31     * @return callable[]
32     */
33    public function getNodeTranslators(): array;
34
35    /**
36     * Returns combination translators.
37     *
38     * @return callable[]
39     */
40    public function getCombinationTranslators(): array;
41
42    /**
43     * Returns function translators.
44     *
45     * @return callable[]
46     */
47    public function getFunctionTranslators(): array;
48
49    /**
50     * Returns pseudo-class translators.
51     *
52     * @return callable[]
53     */
54    public function getPseudoClassTranslators(): array;
55
56    /**
57     * Returns attribute operation translators.
58     *
59     * @return callable[]
60     */
61    public function getAttributeMatchingTranslators(): array;
62
63    /**
64     * Returns extension name.
65     */
66    public function getName(): string;
67}
68