84 lines
2.0 KiB
PHP
84 lines
2.0 KiB
PHP
<?php
|
|
/**
|
|
* Copyright 2013-2016 Horde LLC (http://www.horde.org/)
|
|
*
|
|
* See the enclosed file COPYING for license information (LGPL). If you
|
|
* did not receive this file, see http://www.horde.org/licenses/lgpl21.
|
|
*
|
|
* @category Horde
|
|
* @copyright 2013-2016 Horde LLC
|
|
* @license http://www.horde.org/licenses/lgpl21 LGPL 2.1
|
|
* @package Css_Parser
|
|
*/
|
|
|
|
if (file_exists(__DIR__ . '/Parser/vendor/autoload.php')) {
|
|
require_once __DIR__ . '/Parser/vendor/autoload.php';
|
|
} else {
|
|
require_once __DIR__ . '/../../../bundle/vendor/autoload.php';
|
|
}
|
|
|
|
/**
|
|
* Horde interface to the Sabberworm CSS Parser library.
|
|
*
|
|
* Source: https://github.com/sabberworm/PHP-CSS-Parser
|
|
*
|
|
* @author Michael Slusarz <slusarz@horde.org>
|
|
* @category Horde
|
|
* @copyright 2013-2016 Horde LLC
|
|
* @license http://www.horde.org/licenses/lgpl21 LGPL 2.1
|
|
* @package Css_Parser
|
|
*/
|
|
class Horde_Css_Parser
|
|
{
|
|
/**
|
|
* The parsed CSS document object.
|
|
*
|
|
* @var Sabberworm\CSS\CSSList\Document
|
|
*/
|
|
public $doc;
|
|
|
|
/**
|
|
* The parser object.
|
|
*
|
|
* @var Sabberworm\CSS\Parser
|
|
*/
|
|
public $parser;
|
|
|
|
/**
|
|
* Constructor.
|
|
*
|
|
* @param string $css CSS data.
|
|
* @param Sabberworm\CSS\Settings $charset Parser settings.
|
|
*/
|
|
public function __construct($css, Sabberworm\CSS\Settings $settings = null)
|
|
{
|
|
if (!strlen($css)) {
|
|
$this->doc = new Sabberworm\CSS\CSSList\Document();
|
|
return;
|
|
}
|
|
|
|
if (is_null($settings)) {
|
|
$settings = Sabberworm\CSS\Settings::create();
|
|
$settings->withMultibyteSupport(false);
|
|
}
|
|
|
|
$this->parser = new Sabberworm\CSS\Parser($css, $settings);
|
|
$this->doc = $this->parser->parse();
|
|
}
|
|
|
|
/**
|
|
* Returns compressed CSS output.
|
|
*
|
|
* @return string Compressed CSS
|
|
*/
|
|
public function compress()
|
|
{
|
|
return str_replace(
|
|
array("\n", ' {', ': ', ';}', ', '),
|
|
array('', '{', ':', '}', ','),
|
|
strval($this->doc)
|
|
);
|
|
}
|
|
|
|
}
|