1 | <?php |
||
6 | final class AlternativeText |
||
7 | { |
||
8 | /** |
||
9 | * @var string |
||
10 | */ |
||
11 | private $text; |
||
12 | |||
13 | /** |
||
14 | * AlternativeText constructor. |
||
15 | * @param string $text |
||
16 | */ |
||
17 | 5 | public function __construct(string $text) |
|
21 | |||
22 | /** |
||
23 | * @return string |
||
24 | */ |
||
25 | 4 | public function __toString(): string |
|
29 | |||
30 | /** |
||
31 | * @param string $string |
||
32 | * @return string |
||
33 | */ |
||
34 | 4 | private function normalizeSpace(string $string): string |
|
44 | |||
45 | /** |
||
46 | * @param string $html AlternativeText |
||
47 | * @return AlternativeText |
||
48 | */ |
||
49 | 5 | public static function fromHtml(string $html): AlternativeText |
|
77 | |||
78 | /** |
||
79 | * @param \DOMDocument $document |
||
80 | */ |
||
81 | 5 | private function updateParagraphsAndBreaksToNewLine(\DOMDocument $document): void |
|
102 | |||
103 | /** |
||
104 | * @param \DOMDocument $document |
||
105 | */ |
||
106 | 5 | private function wrapSymbols(\DOMDocument $document): void |
|
136 | |||
137 | /** |
||
138 | * @param \DOMDocument $document |
||
139 | */ |
||
140 | 5 | private function updateLists(\DOMDocument $document): void |
|
198 | |||
199 | /** |
||
200 | * @param \DOMDocument $document |
||
201 | */ |
||
202 | 5 | private function updateImages(\DOMDocument $document): void |
|
214 | |||
215 | /** |
||
216 | * @param \DOMDocument $document |
||
217 | */ |
||
218 | 5 | private function updateHorizontalRule(\DOMDocument $document): void |
|
227 | |||
228 | /** |
||
229 | * @param \DOMDocument $document |
||
230 | */ |
||
231 | 5 | private function updateLinks(\DOMDocument $document): void |
|
232 | { |
||
233 | 5 | $xpath = new \DOMXPath($document); |
|
234 | 5 | $item = 1; |
|
235 | $conversion = [ |
||
236 | 5 | '0' => "\u{2070}", |
|
237 | '1' => "\u{2071}", |
||
238 | '2' => "\u{00B2}", |
||
239 | '3' => "\u{00B3}", |
||
240 | '4' => "\u{2074}", |
||
241 | '5' => "\u{2075}", |
||
242 | '6' => "\u{2076}", |
||
243 | '7' => "\u{2077}", |
||
244 | '8' => "\u{2078}", |
||
245 | '9' => "\u{2079}", |
||
246 | ]; |
||
247 | |||
248 | /** @var \DOMElement $element */ |
||
249 | 5 | foreach ($xpath->query('//a[@href and @href != .]') as $element) { |
|
250 | 1 | $itemString = (string) $item; |
|
251 | 1 | $itemUnicode = ''; |
|
252 | 1 | for ($i = 0, $j = strlen($itemString); $i < $j; $i++) { |
|
253 | 1 | $itemUnicode .= $conversion[$itemString[$i]]; |
|
254 | } |
||
255 | |||
256 | 1 | $document->documentElement->appendChild( |
|
257 | 1 | $document->createTextNode( |
|
258 | 1 | sprintf( |
|
259 | 1 | "[%s] %s\n", |
|
260 | 1 | $itemUnicode, |
|
261 | 1 | $element->getAttribute('href') |
|
262 | ) |
||
263 | ) |
||
264 | ); |
||
265 | |||
266 | 1 | $element->appendChild( |
|
267 | 1 | $document->createTextNode($itemUnicode) |
|
268 | ); |
||
269 | |||
270 | 1 | $item++; |
|
271 | } |
||
272 | 5 | } |
|
273 | |||
274 | /** |
||
275 | * @param \DOMDocument $document |
||
276 | */ |
||
277 | 5 | private function removeHead(\DOMDocument $document): void |
|
285 | } |