mirror of
https://github.com/getgrav/grav.git
synced 2025-02-20 19:56:53 +01:00
clean up codebase a little
This commit is contained in:
parent
0e9417ab1b
commit
215c8da542
|
|
@ -13,10 +13,9 @@ define('CSS_ASSET', true);
|
|||
define('JS_ASSET', false);
|
||||
|
||||
/**
|
||||
* The Wrapper object for handling JS, CSS assets
|
||||
*
|
||||
* Based on stolz/assets package modified for use with Grav
|
||||
* Handles Asset management (CSS & JS) and also pipelining (combining into a single file for each asset)
|
||||
*
|
||||
* Based on stolz/assets (https://github.com/Stolz/Assets) package modified for use with Grav
|
||||
*
|
||||
* @author RocketTheme
|
||||
* @license MIT
|
||||
|
|
@ -24,6 +23,9 @@ define('JS_ASSET', false);
|
|||
|
||||
class Assets
|
||||
{
|
||||
/** @const Regex to match grav asset shortcodes */
|
||||
const GRAV_ASSET_REGEX = '/@(plugin|theme)\/(.*?):(.*)/i';
|
||||
|
||||
/** @const Regex to match CSS and JavaScript files */
|
||||
const DEFAULT_REGEX = '/.\.(css|js)$/i';
|
||||
|
||||
|
|
@ -34,11 +36,15 @@ class Assets
|
|||
const JS_REGEX = '/.\.js$/i';
|
||||
|
||||
/** @const Regex to match CSS urls */
|
||||
const CSS_URL_REGEX = '{url\([\'\"]((?!http|//).*?)[\'\"]\)}';
|
||||
const CSS_URL_REGEX = '{url\([\'\"]?((?!http|//).*?)[\'\"]?\)}';
|
||||
|
||||
/** @const Regex to match CSS sourcemap comments */
|
||||
const CSS_SOURCEMAP_REGEX = '{\/\*# (.*) \*\/}';
|
||||
|
||||
/** @const Regex to match CSS import content */
|
||||
const CSS_IMPORT_REGEX = '{@import(.*);}';
|
||||
|
||||
|
||||
/**
|
||||
* Closure used by the pipeline to fetch assets.
|
||||
*
|
||||
|
|
@ -52,21 +58,26 @@ class Assets
|
|||
*/
|
||||
protected $fetch_command;
|
||||
|
||||
// Configuration toggles to enable/disable the pipelining feature
|
||||
protected $css_pipeline = false;
|
||||
protected $js_pipeline = false;
|
||||
|
||||
// The asset holding arrays
|
||||
protected $collections = array();
|
||||
protected $css = array();
|
||||
protected $js = array();
|
||||
|
||||
// Some configuration variables
|
||||
protected $config;
|
||||
protected $theme_url;
|
||||
protected $base_url;
|
||||
|
||||
// Default values for pipeline settings
|
||||
protected $css_minify = true;
|
||||
protected $css_rewrite = true;
|
||||
protected $js_minify = true;
|
||||
|
||||
// Arrays to hold assets that should NOT be pipelined
|
||||
protected $css_no_pipeline = array();
|
||||
protected $js_no_pipeline = array();
|
||||
|
||||
|
|
@ -75,17 +86,21 @@ class Assets
|
|||
{
|
||||
// Forward config options
|
||||
if($options)
|
||||
$this->config($options);
|
||||
$this->config((array)$options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialization called in the Grav lifecycle to initialize the Assets with appropriate configuration
|
||||
*
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function init()
|
||||
{
|
||||
// $this->config = $config;
|
||||
|
||||
$this->config = Registry::get('Config');
|
||||
$base_url = $this->config->get('system.base_url_relative');
|
||||
$theme = $this->config->get('system.pages.theme');
|
||||
$asset_config = (array)$this->config->get('system.assets');
|
||||
$config = Registry::get('Config');
|
||||
$base_url = $config->get('system.base_url_relative');
|
||||
$theme = $config->get('system.pages.theme');
|
||||
$asset_config = (array)$config->get('system.assets');
|
||||
|
||||
$this->config($asset_config);
|
||||
$this->base_url = $base_url;
|
||||
|
|
@ -442,12 +457,13 @@ class Assets
|
|||
}
|
||||
|
||||
$file = ($this->fetch_command instanceof Closure) ? $this->fetch_command->__invoke($link) : file_get_contents($link);
|
||||
$buffer .= $file;
|
||||
}
|
||||
|
||||
// If this is CSS + the file is local + rewrite enabled
|
||||
if ($css && $local && $this->css_rewrite) {
|
||||
$buffer = $this->cssRewrite($buffer, $relative_dir);
|
||||
// If this is CSS + the file is local + rewrite enabled
|
||||
if ($css && $local && $this->css_rewrite) {
|
||||
$file = $this->cssRewrite($file, $relative_dir);
|
||||
}
|
||||
|
||||
$buffer .= $file;
|
||||
}
|
||||
|
||||
// Pull out @imports and move to top
|
||||
|
|
@ -458,11 +474,17 @@ class Assets
|
|||
return $buffer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Moves @import statements to the top of the file per the CSS specification
|
||||
*
|
||||
* @param string $file the file containing the combined CSS files
|
||||
* @return string the modified file with any @imports at the top of the file
|
||||
*/
|
||||
protected function moveImports($file)
|
||||
{
|
||||
$this->imports = array();
|
||||
|
||||
$file = preg_replace_callback('{@import(.*);}',
|
||||
$file = preg_replace_callback(self::CSS_IMPORT_REGEX,
|
||||
function($matches) {
|
||||
$this->imports[] = $matches[0];
|
||||
return '';
|
||||
|
|
@ -481,6 +503,7 @@ class Assets
|
|||
*/
|
||||
protected function cssRewrite($file, $relative_path)
|
||||
{
|
||||
xdebug_break();
|
||||
|
||||
// Strip any sourcemap comments
|
||||
$file = preg_replace(self::CSS_SOURCEMAP_REGEX, '', $file);
|
||||
|
|
@ -512,11 +535,17 @@ class Assets
|
|||
return $file;
|
||||
}
|
||||
|
||||
/**
|
||||
* Build local links including grav asset shortcodes
|
||||
*
|
||||
* @param string $asset the asset string reference
|
||||
* @return string the final link url to the asset
|
||||
*/
|
||||
protected function buildLocalLink($asset)
|
||||
{
|
||||
|
||||
$matches = $this->assetIsGravPackage($asset);
|
||||
$base_url = $this->config->get('system.base_url_relative');
|
||||
$base_url = $this->base_url;
|
||||
|
||||
if($matches === false)
|
||||
return $base_url . '/' . $asset;
|
||||
|
|
@ -531,9 +560,18 @@ class Assets
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if an asset contains a valid grav asset shortcode
|
||||
* Currently supported formats are:
|
||||
* @plugin/plugin_name/directories:assetname.js|css
|
||||
* @theme/directories:assetname.js|css
|
||||
*
|
||||
* @param string $asset the asset string reference
|
||||
* @return matches|false if there are matches, those regex matches are returned, else return false
|
||||
*/
|
||||
protected function assetIsGravPackage($asset)
|
||||
{
|
||||
if(preg_match('{^@([a-z]+)/(.*?):(.*)$}', $asset, $matches))
|
||||
if(preg_match(self::GRAV_ASSET_REGEX, $asset, $matches))
|
||||
return $matches;
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,6 +12,9 @@ use \Grav\Common\Taxonomy;
|
|||
|
||||
/**
|
||||
* GravPages is the class that is the entry point into the hierarchy of pages
|
||||
*
|
||||
* @author RocketTheme
|
||||
* @license MIT
|
||||
*/
|
||||
class Pages
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,6 +1,12 @@
|
|||
<?php
|
||||
namespace Grav\Common;
|
||||
|
||||
/**
|
||||
* The Twig extension adds some filters and functions that are useful for Grav
|
||||
*
|
||||
* @author RocketTheme
|
||||
* @license MIT
|
||||
*/
|
||||
class TwigExtension extends \Twig_Extension
|
||||
{
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,6 +1,12 @@
|
|||
<?php
|
||||
namespace Grav\Common;
|
||||
|
||||
/**
|
||||
* The URI object provides information about the current URL
|
||||
*
|
||||
* @author RocketTheme
|
||||
* @license MIT
|
||||
*/
|
||||
class Uri
|
||||
{
|
||||
protected $base;
|
||||
|
|
|
|||
|
|
@ -8,11 +8,6 @@ use Symfony\Component\Console\Input\InputOption;
|
|||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
use Symfony\Component\Console\Formatter\OutputFormatterStyle;
|
||||
|
||||
//Use the Composer classes
|
||||
// use Composer\Console\Application;
|
||||
// use Composer\Command\UpdateCommand;
|
||||
// use Symfony\Component\Console\Input\ArrayInput;
|
||||
|
||||
class SetupCommand extends Command
|
||||
{
|
||||
protected $directories = array('/cache',
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user