Files
server/usr/share/psa-pear/pear/php/Horde/Css/Parser.php
2026-01-07 20:52:11 +01:00

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)
);
}
}