1 | <?php |
||
11 | class Menu extends AbstractExtractor |
||
12 | { |
||
13 | const EXTRACTOR = 'Navigation\Menu'; |
||
14 | |||
15 | protected $translator; |
||
16 | protected $instructionNavigator; |
||
17 | |||
18 | protected $path; |
||
19 | |||
20 | protected $baseXpath; |
||
21 | protected $childXpath; |
||
22 | |||
23 | protected $childNodeSearch = '*[concat(" ", normalize-space(.)," ") = " %s "]'; |
||
24 | |||
25 | protected $childSearchOrder = [ |
||
26 | 'span[concat(" ",normalize-space(.)," ") = " %s "]/ancestor::li[1]', |
||
27 | 'a[concat(" ",normalize-space(.)," ") = " %s "]/ancestor::li[1]', |
||
28 | 'li[concat(" ",normalize-space(.)," ") = " %s "][1]', |
||
29 | '*[concat(" ",normalize-space(.)," ") = " %s "]/ancestor::li[1]', |
||
30 | ]; |
||
31 | |||
32 | protected $baseSearchOrder = [ |
||
33 | 'nav', |
||
34 | 'ul[@class="nav"]', |
||
35 | 'ul[@class="navigation"]', |
||
36 | 'ul[@id="nav"]', |
||
37 | 'ul[contains(concat(" ",normalize-space(@id)," "), " nav ")]', |
||
38 | 'ul[contains(@id, "nav")]', |
||
39 | 'ul[contains(concat(" ",normalize-space(@class)," "), " nav ")]', |
||
40 | 'ul[contains(concat(" ",normalize-space(class)," "), " Nav ")]', |
||
41 | 'ul[contains(concat(" ",normalize-space(@id)," "), " navigation ")]', |
||
42 | 'ul[contains(concat(" ",normalize-space(@class)," "), " navigation ")]', |
||
43 | 'ul[contains(concat(" ",normalize-space(class)," "), " Navigation ")]', |
||
44 | 'ul[contains(@class, "nav")]', |
||
45 | 'ol[@class="nav"]', |
||
46 | 'ol[@class="navigation"]', |
||
47 | 'ol[@id="nav"]', |
||
48 | 'ol[contains(concat(" ",normalize-space(@id)," "), " nav ")]', |
||
49 | 'ol[contains(@id, "nav")]', |
||
50 | 'ol[contains(concat(" ",normalize-space(@class)," "), " nav ")]', |
||
51 | 'ol[contains(concat(" ",normalize-space(class)," "), " Nav ")]', |
||
52 | 'ol[contains(concat(" ",normalize-space(@id)," "), " navigation ")]', |
||
53 | 'ol[contains(concat(" ",normalize-space(@class)," "), " navigation ")]', |
||
54 | 'ol[contains(concat(" ",normalize-space(class)," "), " Navigation ")]', |
||
55 | 'ol[contains(@class, "nav")]', |
||
56 | 'ul', |
||
57 | 'ol' |
||
58 | ]; |
||
59 | |||
60 | public function __construct( |
||
70 | |||
71 | public function setPath($path) |
||
75 | |||
76 | public function getBaseXpath() |
||
80 | |||
81 | public function getChildXpath() |
||
85 | |||
86 | /** |
||
87 | * Attempts to extract an Xpath pattern to use for category navigation. |
||
88 | * |
||
89 | * Because this approach is somewhat manual translation needs to be done prior to executing this method. |
||
90 | * |
||
91 | * @throws MissingNavigationSchemeException |
||
92 | * @throws UnableToExtractMenuXpathException |
||
93 | */ |
||
94 | |||
95 | public function extract() |
||
130 | |||
131 | /** |
||
132 | * @param $baseMatches |
||
133 | * @param $parts |
||
134 | * @return bool|array Boolean if no further processing is needed, array if there is |
||
135 | */ |
||
136 | |||
137 | protected function getFinalMatches($baseMatches, $parts) |
||
176 | |||
177 | |||
178 | protected function getBaseMatches($xpath, $baseChild) |
||
212 | |||
213 | } |