Skip to content

Commit

Permalink
Merge pull request #152 from stof/faster_xpath_conversion
Browse files Browse the repository at this point in the history
Reuse the same CssSelectorConverter
  • Loading branch information
tijsverkoyen authored Sep 5, 2016
2 parents b729a9b + ba64b19 commit e4ba269
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions src/CssToInlineStyles.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,15 @@

class CssToInlineStyles
{
private $cssConverter;

public function __construct()
{
if (class_exists('Symfony\Component\CssSelector\CssSelectorConverter')) {
$this->cssConverter = new CssSelectorConverter();
}
}

/**
* Will inline the $css into the given $html
*
Expand Down Expand Up @@ -148,10 +157,10 @@ protected function inline(\DOMDocument $document, array $rules)
$xPath = new \DOMXPath($document);
foreach ($rules as $rule) {
try {
if (class_exists('Symfony\Component\CssSelector\CssSelectorConverter')) {
$converter = new CssSelectorConverter();
$expression = $converter->toXPath($rule->getSelector());
if (null !== $this->cssConverter) {
$expression = $this->cssConverter->toXPath($rule->getSelector());
} else {
// Compatibility layer for Symfony 2.7 and older
$expression = CssSelector::toXPath($rule->getSelector());
}
} catch (ExceptionInterface $e) {
Expand Down

0 comments on commit e4ba269

Please sign in to comment.