Spade
Mini Shell
| Directory:~$ /home/lmsyaran/public_html/j3/components/com_sppagebuilder/helpers/ |
| [Home] [System Details] [Kill Me] |
<?php
/**
* @package SP Page Builder
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2023 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or later
*/
//no direct access
defined('_JEXEC') or die('Restricted access');
/**
* Assets Css Parser Class
*
* @since 4.0.0
*/
class SppbAssetCssParser
{
private static $instance;
/**
* Get the parsed class list
*
* @param string $css css file for parsing
* @return object
* @since 4.0.0
*/
public static function getClassName($css, $prefix, $force = false)
{
if (empty(trim($css)))
{
return false;
}
if (self::$instance === null)
{
self::$instance = new SppbAssetCssParser();
}
$parsedClassName = self::$instance->parseCssSelectors($css,
$prefix, $force);
return $parsedClassName;
}
/**
* Parse CSS Selectors
*
* @param [type] $css CSS file to parse.
* @param [type] $prefix Prefix.
* @param boolean $force Add extra prefix.
* @return void
*/
private function parseCssSelectors($css, $prefix, $force = false)
{
$result = [];
/**
* Check css comment
* preg_match_all('/([\/][\*]).*./',$css,$match);
*/
preg_match_all('/([^\{\}]+)\{([^\}]*)\}|([\/\*])/ims',
$css, $match);
foreach ($match[0] as $i => $x)
{
$selector = trim($match[1][$i]);
if (preg_match_all("/(^\." . $prefix.
"\-)\w+(\-\w+)?(\-\w+)?(:before)/m", $selector))
{
if ($force)
{
$result[] = $prefix . ' ' .
(explode(':', explode('.', $selector)[1])[0]);
}
else
{
$result[] = explode(':',
explode('.', $selector)[1])[0];
}
}
}
return json_encode($result);
}
}