-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHtml2Text.php
More file actions
135 lines (117 loc) · 3.31 KB
/
Copy pathHtml2Text.php
File metadata and controls
135 lines (117 loc) · 3.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<?php
namespace Fab\Formule\Service;
/*
* This file is part of the Fab/Formule project under GPLv2 or later.
*
* For the full copyright and license information, please read the
* LICENSE.md file that was distributed with this source code.
*/
use Fab\Formule\Html2Text\LynxStrategy;
use Fab\Formule\Html2Text\RegexpStrategy;
use TYPO3\CMS\Core\SingletonInterface;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/**
* @see http://www.chuggnutt.com/html2text
*/
class Html2Text implements SingletonInterface
{
/**
* @var \Fab\Formule\Html2Text\StrategyInterface
*/
protected $converter;
/**
* @var array
*/
protected $possibleConverters;
/**
* Returns a class instance
*
* @return \Fab\Formule\Service\Html2Text
*/
static public function getInstance(): Html2Text
{
return GeneralUtility::makeInstance(self::class);
}
/**
* Constructor
*
* @return \Fab\Formule\Service\Html2Text
*/
public function __construct()
{
$this->possibleConverters[] = GeneralUtility::makeInstance(LynxStrategy::class);
$this->possibleConverters[] = GeneralUtility::makeInstance(RegexpStrategy::class);
}
/**
* Convert HTML using the best strategy
*
* @param string $content to be converted
* @return string
*/
public function convert(string $content): string
{
if (empty($this->converter)) {
$this->converter = $this->findBestConverter();
}
return $this->converter->convert($content);
}
/**
* Find the best suitable converter
*
* @return \Fab\Formule\Html2Text\StrategyInterface
*/
public function findBestConverter(): \Fab\Formule\Html2Text\StrategyInterface
{
if (!empty($this->converter)) {
return $this->converter;
}
// Else find the best suitable converter
$converter = end($this->possibleConverters);
foreach ($this->possibleConverters as $possibleConverter) {
/** @var \Fab\Formule\Html2Text\StrategyInterface $possibleConverter */
if ($possibleConverter->available()) {
$converter = $possibleConverter;
break;
}
}
return $converter;
}
/**
* Set strategy
*
* @param \Fab\Formule\Html2Text\StrategyInterface $converter
* @return void
*/
public function setConverter(\Fab\Formule\Html2Text\StrategyInterface $converter): void
{
$this->converter = $converter;
}
/**
* @return \Fab\Formule\Html2Text\StrategyInterface
*/
public function getConverter(): \Fab\Formule\Html2Text\StrategyInterface
{
return $this->converter;
}
/**
* @return Array
*/
public function getPossibleConverters()
{
return $this->possibleConverters;
}
/**
* @param array $possibleConverters
*/
public function setPossibleConverters(array $possibleConverters): void
{
$this->possibleConverters = $possibleConverters;
}
/**
* @param \Fab\Formule\Html2Text\StrategyInterface $possibleConverter
*/
public function addPossibleConverter(\Fab\Formule\Html2Text\StrategyInterface $possibleConverter): void
{
$this->possibleConverters[] = $possibleConverter;
}
}