Use DI to inject csstidy

[MAILPOET-2286]
This commit is contained in:
Amine Ben hammou
2019-11-25 15:20:09 +01:00
committed by Jack Kitterhing
parent 9a8a353095
commit a178b5d1e8
3 changed files with 17 additions and 11 deletions

View File

@@ -247,6 +247,9 @@ class ContainerConfigurator implements IContainerConfigurator {
// WordPress // WordPress
$container->autowire(\MailPoet\WP\Emoji::class)->setPublic(true); $container->autowire(\MailPoet\WP\Emoji::class)->setPublic(true);
$container->autowire(\MailPoet\WP\Functions::class)->setPublic(true); $container->autowire(\MailPoet\WP\Functions::class)->setPublic(true);
// Third party classes
$container->autowire(\csstidy::class);
return $container; return $container;
} }

View File

@@ -10,13 +10,17 @@ use MailPoet\Newsletter\Renderer\Renderer as NewsletterRenderer;
class Renderer { class Renderer {
const CONTENT_CONTAINER_ID = 'mailpoet_woocommerce_container'; const CONTENT_CONTAINER_ID = 'mailpoet_woocommerce_container';
/** @var csstidy */
private $css_parser;
/** @var string */ /** @var string */
private $html_before_content; private $html_before_content;
/** @var string */ /** @var string */
private $html_after_content; private $html_after_content;
function __construct() { function __construct(csstidy $css_parser) {
$this->css_parser = $css_parser;
$this->html_before_content = ''; $this->html_before_content = '';
$this->html_after_content = ''; $this->html_after_content = '';
} }
@@ -44,22 +48,21 @@ class Renderer {
} }
public function prefixCss($css) { public function prefixCss($css) {
$parser = new csstidy(); $this->css_parser->settings['compress_colors'] = false;
$parser->settings['compress_colors'] = false; $this->css_parser->parse($css);
$parser->parse($css); foreach ($this->css_parser->css as $index => $rules) {
foreach ($parser->css as $index => $rules) { $this->css_parser->css[$index] = [];
$parser->css[$index] = [];
foreach ($rules as $selectors => $properties) { foreach ($rules as $selectors => $properties) {
$selectors = explode(',', $selectors); $selectors = explode(',', $selectors);
$selectors = array_map(function($selector) { $selectors = array_map(function($selector) {
return '#' . self::CONTENT_CONTAINER_ID . ' ' . $selector; return '#' . self::CONTENT_CONTAINER_ID . ' ' . $selector;
}, $selectors); }, $selectors);
$selectors = implode(',', $selectors); $selectors = implode(',', $selectors);
$parser->css[$index][$selectors] = $properties; $this->css_parser->css[$index][$selectors] = $properties;
} }
} }
/** @var \csstidy_print */ /** @var \csstidy_print */
$print = $parser->print; $print = $this->css_parser->print;
return $print->plain(); return $print->plain();
} }
} }

View File

@@ -33,7 +33,7 @@ class RendererTest extends \MailPoetTest {
} }
function testGetHTMLBeforeContent() { function testGetHTMLBeforeContent() {
$renderer = new Renderer; $renderer = new Renderer(new \csstidy);
$renderer->render($this->newsletter); $renderer->render($this->newsletter);
$html = $renderer->getHTMLBeforeContent('Heading Text'); $html = $renderer->getHTMLBeforeContent('Heading Text');
expect($html)->contains('Some text before heading'); expect($html)->contains('Some text before heading');
@@ -43,7 +43,7 @@ class RendererTest extends \MailPoetTest {
} }
function testGetHTMLAfterContent() { function testGetHTMLAfterContent() {
$renderer = new Renderer; $renderer = new Renderer(new \csstidy);
$renderer->render($this->newsletter); $renderer->render($this->newsletter);
$html = $renderer->getHTMLAfterContent('Heading Text'); $html = $renderer->getHTMLAfterContent('Heading Text');
expect($html)->notContains('Some text before heading'); expect($html)->notContains('Some text before heading');
@@ -53,7 +53,7 @@ class RendererTest extends \MailPoetTest {
} }
function testPrefixCss() { function testPrefixCss() {
$renderer = new Renderer; $renderer = new Renderer(new \csstidy);
$css = $renderer->prefixCss(' $css = $renderer->prefixCss('
#some_id {color: black} #some_id {color: black}
.some-class {height: 50px; width: 30px} .some-class {height: 50px; width: 30px}