From 08a6b2d121ef6358cf00e212c08962ecfce6511e Mon Sep 17 00:00:00 2001 From: John D Wells Date: Wed, 16 Dec 2015 17:06:29 +0000 Subject: [PATCH 01/18] Improve scrutinizer-ci score. --- minimee/MinimeePlugin.php | 6 ++-- minimee/models/Minimee_SettingsModel.php | 33 ++++++++----------- minimee/services/MinimeeService.php | 18 +++++----- .../twigextensions/MinimeeTwigExtension.php | 1 - 4 files changed, 25 insertions(+), 33 deletions(-) diff --git a/minimee/MinimeePlugin.php b/minimee/MinimeePlugin.php index f2a74c7..15fe596 100755 --- a/minimee/MinimeePlugin.php +++ b/minimee/MinimeePlugin.php @@ -196,7 +196,7 @@ public function getResourcePath($path) /** * Register our cache path that can then be deleted from CP */ - function registerCachePaths() + public function registerCachePaths() { if(minimee()->service->settings->useResourceCache()) { @@ -219,7 +219,7 @@ function registerCachePaths() */ protected function _bindEvents() { - craft()->on('minimee.createCache', function(Event $event) { + craft()->on('minimee.createCache', function() { if(craft()->config->get('devMode')) { minimee()->service->deleteExpiredCache(); @@ -263,7 +263,7 @@ protected function _registerMinimeeDI() return new Minimee_RemoteAssetModel($attributes); }); - minimee()->extend('makeClient', function(Zit $zit) { + minimee()->extend('makeClient', function() { return new Client; }); } diff --git a/minimee/models/Minimee_SettingsModel.php b/minimee/models/Minimee_SettingsModel.php index bb89aba..299b93b 100755 --- a/minimee/models/Minimee_SettingsModel.php +++ b/minimee/models/Minimee_SettingsModel.php @@ -63,11 +63,11 @@ public function validate($attributes = null, $clearErrors = true) */ public function validateCachePathAndUrl() { - $cachePath = parent::getAttribute('cachePath'); - $cacheUrl = parent::getAttribute('cacheUrl'); + $cachePath = $this->getCachePath(); + $cacheUrl = $this->getCacheUrl(); - $cachePathEmpty = ! $cachePath; - $cacheUrlEmpty = ! $cacheUrl; + $cachePathEmpty = empty($cachePath); + $cacheUrlEmpty = empty($cacheUrl); if($cachePathEmpty != $cacheUrlEmpty) { @@ -183,11 +183,11 @@ public function getCssPrependUrl() */ public function useResourceCache() { - $cachePath = parent::getAttribute('cachePath'); - $cacheUrl = parent::getAttribute('cacheUrl'); + $cachePath = $this->getCachePath(); + $cacheUrl = $this->getCacheUrl(); - $cachePathEmpty = ! $cachePath; - $cacheUrlEmpty = ! $cacheUrl; + $cachePathEmpty = empty($cachePath); + $cacheUrlEmpty = empty($cacheUrl); return ($cachePathEmpty && $cacheUrlEmpty); } @@ -253,8 +253,8 @@ public function getReturnType() /** * Inject our model attribute accessors. * - * @param String $string - * @return String + * @param String $name + * @return String|Bool */ public function getAttribute($name) { @@ -262,38 +262,31 @@ public function getAttribute($name) case('baseUrl') : return $this->getBaseUrl(); - break; case('cachePath') : return $this->getCachePath(); - break; case('cacheUrl') : return $this->getCacheUrl(); - break; case('cssReturnTemplate') : return $this->getCssReturnTemplate(); - break; case('cssPrependUrl') : return $this->getCssPrependUrl(); - break; case('filesystemPath') : return $this->getFilesystemPath(); - break; case('jsReturnTemplate') : return $this->getJsReturnTemplate(); - break; case('returnType') : return $this->getReturnType(); - break; - endswitch; + default : + return parent::getAttribute($name); - return parent::getAttribute($name); + endswitch; } } diff --git a/minimee/services/MinimeeService.php b/minimee/services/MinimeeService.php index d6adcb3..a48444c 100755 --- a/minimee/services/MinimeeService.php +++ b/minimee/services/MinimeeService.php @@ -78,6 +78,7 @@ public function makeTagsByType($type, $assets = array()) { $assets = ( ! is_array($assets)) ? array($assets) : $assets; $tags = ''; + $settingsName = ''; switch ($type) { @@ -308,7 +309,7 @@ protected function setPluginSettings($settings = array()) */ protected function getPluginSettings() { - if( ! self::$_pluginSettings) + if(empty(self::$_pluginSettings)) { $this->initPluginSettings(); } @@ -352,16 +353,14 @@ protected function initPluginSettings() protected function isCombineEnabled() { switch($this->type) : + case MinimeeType::Css : - $isCombineEnabled = (bool) $this->settings->combineCssEnabled; - break; + return (bool) $this->settings->combineCssEnabled; case MinimeeType::Js : - $isCombineEnabled = (bool) $this->settings->combineJsEnabled; - break; - endswitch; + return (bool) $this->settings->combineJsEnabled; - return $isCombineEnabled; + endswitch; } /** @@ -384,7 +383,7 @@ protected function isUrl($string) */ protected function flightcheck() { - if ( ! self::$_pluginSettings) + if(empty(self::$_pluginSettings)) { throw new Exception(Craft::t('Minimee is not installed.')); } @@ -569,6 +568,7 @@ protected function makeUrlToCacheFilename() $path = '/' . self::ResourceTrigger . '/' . $this->makeCacheFilename(); $dateParam = craft()->resources->dateParam; + $params = array(); $params[$dateParam] = IOHelper::getLastTimeModified($this->makePathToCacheFilename())->getTimestamp(); return UrlHelper::getUrl(craft()->config->getResourceTrigger() . $path, $params); @@ -735,7 +735,7 @@ protected function setCacheBase($name) } /** - * @param String $dateTime + * @param String $timestamp * @return Void */ protected function setCacheTimestamp($timestamp) diff --git a/minimee/twigextensions/MinimeeTwigExtension.php b/minimee/twigextensions/MinimeeTwigExtension.php index 106d792..6b51476 100755 --- a/minimee/twigextensions/MinimeeTwigExtension.php +++ b/minimee/twigextensions/MinimeeTwigExtension.php @@ -119,7 +119,6 @@ protected function pregMatchAssetsByType($type, $haystack) default : return FALSE; - break; endswitch; From 09284c1e41622c40155b7a5bd925c80753c05111 Mon Sep 17 00:00:00 2001 From: Scrutinizer Auto-Fixer Date: Wed, 16 Dec 2015 23:35:03 +0000 Subject: [PATCH 02/18] Scrutinizer Auto-Fixes This commit consists of patches automatically generated for this project on https://scrutinizer-ci.com --- minimee/models/Minimee_RemoteAssetModel.php | 6 +-- minimee/models/Minimee_SettingsModel.php | 8 ++-- minimee/services/MinimeeService.php | 43 ++++++++++----------- 3 files changed, 26 insertions(+), 31 deletions(-) diff --git a/minimee/models/Minimee_RemoteAssetModel.php b/minimee/models/Minimee_RemoteAssetModel.php index f18f512..80e2ab7 100755 --- a/minimee/models/Minimee_RemoteAssetModel.php +++ b/minimee/models/Minimee_RemoteAssetModel.php @@ -44,8 +44,7 @@ public function getContents() if ($response->isSuccessful()) { $this->_contents = $response->getBody(true); - } - else + } else { throw new Exception('Minimee could not get remote asset: ' . $this->filenameUrl); } @@ -68,8 +67,7 @@ public function getFilenameUrlWithProtocol() { $protocol = craft()->request->isSecureConnection() ? 'https:' : 'http:'; return $protocol . $this->filenameUrl; - } - else + } else { return $this->filenameUrl; } diff --git a/minimee/models/Minimee_SettingsModel.php b/minimee/models/Minimee_SettingsModel.php index 299b93b..bb41812 100755 --- a/minimee/models/Minimee_SettingsModel.php +++ b/minimee/models/Minimee_SettingsModel.php @@ -59,7 +59,7 @@ public function validate($attributes = null, $clearErrors = true) /** * Validate that cachePath and cacheUrl are both empty or non-empty. * - * @return Bool + * @return boolean|null */ public function validateCachePathAndUrl() { @@ -128,7 +128,7 @@ public function getFilesystemPath() } /** - * @return String|Bool + * @return false|string */ public function getCachePath() { @@ -145,7 +145,7 @@ public function getCachePath() } /** - * @return String|Bool + * @return false|string */ public function getCacheUrl() { @@ -162,7 +162,7 @@ public function getCacheUrl() } /** - * @return String|Bool + * @return false|string */ public function getCssPrependUrl() { diff --git a/minimee/services/MinimeeService.php b/minimee/services/MinimeeService.php index a48444c..5ec5bed 100755 --- a/minimee/services/MinimeeService.php +++ b/minimee/services/MinimeeService.php @@ -43,7 +43,9 @@ public function deleteExpiredCache() foreach($files as $file) { // skip self - if ($file === $this->makePathToCacheFilename()) continue; + if ($file === $this->makePathToCacheFilename()) { + continue; + } if (strpos($file, $this->makePathToHashOfCacheBase()) === 0) { @@ -144,8 +146,7 @@ public function run($type, $assets, $settings = array()) { $return[] = $this->ensureCacheExists() ->makeReturn(); - } - else + } else { foreach($assets as $asset) { @@ -157,8 +158,7 @@ public function run($type, $assets, $settings = array()) ->makeReturn(); } } - } - catch (Exception $e) + } catch (Exception $e) { return $this->abort($e); } @@ -204,7 +204,7 @@ protected function appendToCacheBase($name) /** * Fetch or creates cache. * - * @return String + * @return MinimeeService */ protected function ensureCacheExists() { @@ -271,7 +271,7 @@ protected function checkHeaders() /** * Creates cache of assets. * - * @return Void + * @return boolean */ protected function createCache() { @@ -348,7 +348,7 @@ protected function initPluginSettings() /** * Return whether we should combine our cache or not * - * @return Bool + * @return boolean|null */ protected function isCombineEnabled() { @@ -407,8 +407,7 @@ protected function flightcheck() if($this->settings->useResourceCache()) { IOHelper::ensureFolderExists($this->makePathToStorageFolder()); - } - else + } else { if( ! IOHelper::folderExists($this->settings->cachePath)) { @@ -443,7 +442,7 @@ protected function getAssets() } /** - * @return Array + * @return string */ protected function getCacheBase() { @@ -551,8 +550,7 @@ protected function makeReturn() if($this->settings->getReturnType() == 'contents') { return IOHelper::getFileContents($this->makePathToCacheFilename()); - } - else + } else { return $this->makeUrlToCacheFilename(); } @@ -611,7 +609,7 @@ protected function minifyAsset($asset) /** * Method to (maybe) minify CSS asset * - * @param Array $asset + * @param Minimee_BaseAssetModel $asset * @return String */ protected function minifyCssAsset($asset) @@ -641,7 +639,7 @@ protected function minifyCssAsset($asset) /** * Method to (maybe) minify JS asset * - * @param $asset + * @param Minimee_BaseAssetModel $asset * @return String */ protected function minifyJsAsset($asset) @@ -707,8 +705,7 @@ protected function setAssets($assets) ); $this->_assets[] = minimee()->makeRemoteAssetModel($model); - } - else + } else { $model = array( 'filename' => $asset, @@ -725,7 +722,7 @@ protected function setAssets($assets) /** * @param String $name - * @return Void + * @return MinimeeService */ protected function setCacheBase($name) { @@ -736,7 +733,7 @@ protected function setCacheBase($name) /** * @param String $timestamp - * @return Void + * @return MinimeeService */ protected function setCacheTimestamp($timestamp) { @@ -747,7 +744,7 @@ protected function setCacheTimestamp($timestamp) /** * @param DateTime $lastTimeModified - * @return Void + * @return MinimeeService */ protected function setMaxCacheTimestamp(DateTime $lastTimeModified) { @@ -762,7 +759,7 @@ protected function setMaxCacheTimestamp(DateTime $lastTimeModified) * allowing plugin settings to be overridden at runtime. * * @param Array $settingsOverrides - * @return void + * @return MinimeeService */ protected function setRuntimeSettings($settingsOverrides) { @@ -780,8 +777,8 @@ protected function setRuntimeSettings($settingsOverrides) /** * Manually pass in an instance of Minimee_ISettingsModel. * - * @param Craft\Minimee_ISettingsModel $settings - * @return void + * @param Minimee_ISettingsModel $settings + * @return MinimeeService */ protected function setSettings(Minimee_ISettingsModel $settings) { From e2d2554c649b5a36374bb3c772015d049ec233bb Mon Sep 17 00:00:00 2001 From: Scrutinizer Auto-Fixer Date: Wed, 16 Dec 2015 23:47:54 +0000 Subject: [PATCH 03/18] Scrutinizer Auto-Fixes This commit consists of patches automatically generated for this project on https://scrutinizer-ci.com --- minimee/MinimeePlugin.php | 8 ++--- minimee/enums/MinimeeType.php | 4 +-- ...ee_ChangeTagToReturnSettingsFieldNames.php | 6 ++-- minimee/models/Minimee_BaseAssetModel.php | 8 ++--- minimee/models/Minimee_LocalAssetModel.php | 14 ++++---- minimee/models/Minimee_SettingsModel.php | 34 +++++++++---------- .../twigextensions/MinimeeTwigExtension.php | 12 +++---- 7 files changed, 43 insertions(+), 43 deletions(-) diff --git a/minimee/MinimeePlugin.php b/minimee/MinimeePlugin.php index 15fe596..71e9088 100755 --- a/minimee/MinimeePlugin.php +++ b/minimee/MinimeePlugin.php @@ -118,7 +118,7 @@ public function init() */ public static function log($msg, $level = LogLevel::Info, $force = false) { - if(version_compare('2.0', craft()->getVersion(), '>')) + if (version_compare('2.0', craft()->getVersion(), '>')) { Craft::log($msg, $level, $force); } @@ -153,7 +153,7 @@ public function getSettingsHtml() return craft()->templates->render('minimee/settings', array( 'settings' => $this->getSettings(), - 'filesystemConfigExists' => (bool) IOHelper::fileExists($filesystemConfigPath) + 'filesystemConfigExists' => (bool)IOHelper::fileExists($filesystemConfigPath) )); } @@ -189,7 +189,7 @@ public function getResourcePath($path) { if (strncmp($path, 'minimee/', 8) === 0) { - return craft()->path->getStoragePath().'minimee/'.substr($path, 8); + return craft()->path->getStoragePath() . 'minimee/' . substr($path, 8); } } @@ -198,7 +198,7 @@ public function getResourcePath($path) */ public function registerCachePaths() { - if(minimee()->service->settings->useResourceCache()) + if (minimee()->service->settings->useResourceCache()) { return array( minimee()->service->makePathToStorageFolder() => Craft::t('Minimee caches') diff --git a/minimee/enums/MinimeeType.php b/minimee/enums/MinimeeType.php index 826cb97..876dcf8 100755 --- a/minimee/enums/MinimeeType.php +++ b/minimee/enums/MinimeeType.php @@ -3,6 +3,6 @@ class MinimeeType { - const Css = 'css'; - const Js = 'js'; + const Css = 'css'; + const Js = 'js'; } \ No newline at end of file diff --git a/minimee/migrations/m140713_000000_minimee_ChangeTagToReturnSettingsFieldNames.php b/minimee/migrations/m140713_000000_minimee_ChangeTagToReturnSettingsFieldNames.php index 70e67e9..66c4776 100644 --- a/minimee/migrations/m140713_000000_minimee_ChangeTagToReturnSettingsFieldNames.php +++ b/minimee/migrations/m140713_000000_minimee_ChangeTagToReturnSettingsFieldNames.php @@ -23,15 +23,15 @@ public function safeUp() $settings = json_decode($oldSettings['settings'], true); // Change setting names - if(is_array($settings)) + if (is_array($settings)) { - if(array_key_exists('cssTagTemplate', $settings)) + if (array_key_exists('cssTagTemplate', $settings)) { $settings['cssReturnTemplate'] = $settings['cssTagTemplate']; unset($settings['cssTagTemplate']); } - if(array_key_exists('jsTagTemplate', $settings)) + if (array_key_exists('jsTagTemplate', $settings)) { $settings['jsReturnTemplate'] = $settings['jsTagTemplate']; unset($settings['jsTagTemplate']); diff --git a/minimee/models/Minimee_BaseAssetModel.php b/minimee/models/Minimee_BaseAssetModel.php index ac372d5..f58901a 100755 --- a/minimee/models/Minimee_BaseAssetModel.php +++ b/minimee/models/Minimee_BaseAssetModel.php @@ -32,7 +32,7 @@ class Minimee_BaseAssetModel extends BaseModel implements Minimee_IAssetModel */ public function __toString() { - return (string) $this->filename; + return (string)$this->filename; } /** @@ -52,7 +52,7 @@ public function defineAttributes() */ public function getContents() { - if($this->_contents === null) + if ($this->_contents === null) { $this->_contents = ''; } @@ -65,7 +65,7 @@ public function getContents() */ public function getLastTimeModified() { - if($this->_lastTimeModified === null) + if ($this->_lastTimeModified === null) { $this->_lastTimeModified = DateTime::createFromString(self::TimestampZero); } @@ -78,7 +78,7 @@ public function getLastTimeModified() */ public function exists() { - if($this->_exists === null) + if ($this->_exists === null) { $this->_exists = false; } diff --git a/minimee/models/Minimee_LocalAssetModel.php b/minimee/models/Minimee_LocalAssetModel.php index 3f75f47..e4bf557 100755 --- a/minimee/models/Minimee_LocalAssetModel.php +++ b/minimee/models/Minimee_LocalAssetModel.php @@ -23,11 +23,11 @@ class Minimee_LocalAssetModel extends Minimee_BaseAssetModel */ public function getContents() { - if($this->_contents === null) + if ($this->_contents === null) { $this->_contents = IOHelper::getFileContents($this->filenamePath); - if($this->_contents === false) + if ($this->_contents === false) { throw new Exception('Minimee could not get local asset: ' . $this->filenamePath); } @@ -43,11 +43,11 @@ public function getContents() */ public function getLastTimeModified() { - if($this->_lastTimeModified === null) + if ($this->_lastTimeModified === null) { $this->_lastTimeModified = IOHelper::getLastTimeModified($this->filenamePath); - if($this->_lastTimeModified === false) + if ($this->_lastTimeModified === false) { throw new Exception('Minimee could not determine modification time of local asset: ' . $this->filenamePath); } @@ -61,16 +61,16 @@ public function getLastTimeModified() */ public function exists() { - if($this->_exists === null) + if ($this->_exists === null) { $realPath = IOHelper::fileExists($this->filenamePath); - if($realPath && $realPath !== $this->filenamePath) + if ($realPath && $realPath !== $this->filenamePath) { $this->filenamePath = $realPath; } - $this->_exists = (bool) $realPath; + $this->_exists = (bool)$realPath; } return $this->_exists; diff --git a/minimee/models/Minimee_SettingsModel.php b/minimee/models/Minimee_SettingsModel.php index bb41812..a29a096 100755 --- a/minimee/models/Minimee_SettingsModel.php +++ b/minimee/models/Minimee_SettingsModel.php @@ -27,12 +27,12 @@ public function __toString() public function prepSettings($settings) { // cast any booleans - $settings['enabled'] = (bool) $settings['enabled']; - $settings['combineCssEnabled'] = (bool) $settings['combineCssEnabled']; - $settings['combineJsEnabled'] = (bool) $settings['combineJsEnabled']; - $settings['minifyCssEnabled'] = (bool) $settings['minifyCssEnabled']; - $settings['minifyJsEnabled'] = (bool) $settings['minifyJsEnabled']; - $settings['cssPrependUrlEnabled'] = (bool) $settings['cssPrependUrlEnabled']; + $settings['enabled'] = (bool)$settings['enabled']; + $settings['combineCssEnabled'] = (bool)$settings['combineCssEnabled']; + $settings['combineJsEnabled'] = (bool)$settings['combineJsEnabled']; + $settings['minifyCssEnabled'] = (bool)$settings['minifyCssEnabled']; + $settings['minifyJsEnabled'] = (bool)$settings['minifyJsEnabled']; + $settings['cssPrependUrlEnabled'] = (bool)$settings['cssPrependUrlEnabled']; return $settings; } @@ -46,7 +46,7 @@ public function prepSettings($settings) */ public function validate($attributes = null, $clearErrors = true) { - if($clearErrors) + if ($clearErrors) { $this->clearErrors(); } @@ -69,7 +69,7 @@ public function validateCachePathAndUrl() $cachePathEmpty = empty($cachePath); $cacheUrlEmpty = empty($cacheUrl); - if($cachePathEmpty != $cacheUrlEmpty) + if ($cachePathEmpty != $cacheUrlEmpty) { $this->addError('cachePath', Craft::t('Minimee\'s cachePath and cacheUrl must both either be empty or non-empty.')); $this->addError('cacheUrl', Craft::t('Minimee\'s cachePath and cacheUrl must both either be empty or non-empty.')); @@ -115,7 +115,7 @@ public function getFilesystemPath() { $value = parent::getAttribute('filesystemPath'); - if($value) + if ($value) { $filesystemPath = craft()->config->parseEnvironmentString($value); } @@ -134,7 +134,7 @@ public function getCachePath() { $value = parent::getAttribute('cachePath'); - if( ! $value) + if (!$value) { return false; } @@ -151,7 +151,7 @@ public function getCacheUrl() { $value = parent::getAttribute('cacheUrl'); - if( ! $value) + if (!$value) { return false; } @@ -168,7 +168,7 @@ public function getCssPrependUrl() { $value = parent::getAttribute('cssPrependUrl'); - if( ! $value) + if (!$value) { return false; } @@ -199,7 +199,7 @@ public function getBaseUrl() { $value = parent::getAttribute('baseUrl'); - if($value) + if ($value) { $baseUrl = craft()->config->parseEnvironmentString($value); } @@ -215,7 +215,7 @@ public function getCssReturnTemplate() { $value = parent::getAttribute('cssReturnTemplate'); - if( ! $value) + if (!$value) { $attributes = $this->defineAttributes(); return $attributes['cssReturnTemplate']['default']; @@ -228,7 +228,7 @@ public function getJsReturnTemplate() { $value = parent::getAttribute('jsReturnTemplate'); - if( ! $value) + if (!$value) { $attributes = $this->defineAttributes(); return $attributes['jsReturnTemplate']['default']; @@ -241,7 +241,7 @@ public function getReturnType() { $value = parent::getAttribute('returnType'); - if( ! $value) + if (!$value) { $attributes = $this->defineAttributes(); return $attributes['returnType']['default']; @@ -258,7 +258,7 @@ public function getReturnType() */ public function getAttribute($name) { - switch($name) : + switch ($name) : case('baseUrl') : return $this->getBaseUrl(); diff --git a/minimee/twigextensions/MinimeeTwigExtension.php b/minimee/twigextensions/MinimeeTwigExtension.php index 6b51476..80733b8 100755 --- a/minimee/twigextensions/MinimeeTwigExtension.php +++ b/minimee/twigextensions/MinimeeTwigExtension.php @@ -47,7 +47,7 @@ public function minimeeFilter($html, $settings = array()) { // we need a type to continue $type = $this->detectType($html); - if( ! $type) + if (!$type) { MinimeePlugin::log('Could not determine the type of asset to process.', LogLevel::Warning); return minimee()->service->makeTwigMarkupFromHtml($html); @@ -55,7 +55,7 @@ public function minimeeFilter($html, $settings = array()) // we need to find some assets in the HTML $assets = $this->pregMatchAssetsByType($type, $html); - if( ! $assets) + if (!$assets) { MinimeePlugin::log('No assets of type ' . $type . ' could be found.', LogLevel::Warning); return minimee()->service->makeTwigMarkupFromHtml($html); @@ -65,7 +65,7 @@ public function minimeeFilter($html, $settings = array()) $minified = minimee()->service->run($type, $assets, $settings); // false means we failed, so return original markup - if( ! $minified) + if (!$minified) { return minimee()->service->makeTwigMarkupFromHtml($html); } @@ -84,12 +84,12 @@ public function minimeeFilter($html, $settings = array()) */ protected function detectType($html = '') { - if(strpos($html, ' Date: Wed, 16 Dec 2015 23:48:13 +0000 Subject: [PATCH 04/18] Add doc comment return value. --- minimee/services/MinimeeService.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/minimee/services/MinimeeService.php b/minimee/services/MinimeeService.php index 5ec5bed..d4f874f 100755 --- a/minimee/services/MinimeeService.php +++ b/minimee/services/MinimeeService.php @@ -33,6 +33,8 @@ class MinimeeService extends BaseApplicationComponent /** * Based on the cache's hashed base, attempts to delete any older versions of same name. + * + * @return void */ public function deleteExpiredCache() { @@ -60,7 +62,7 @@ public function deleteExpiredCache() /** * During startup, fetch settings from our plugin / config * - * @return Void + * @return void */ public function init() { From 22f62dc893fd651f738d758e145ca2f3fcbd85b8 Mon Sep 17 00:00:00 2001 From: John D Wells Date: Mon, 21 Mar 2016 23:21:20 +0000 Subject: [PATCH 05/18] Inject into the template scope a read-only copy of Minimee's runtime settings. --- minimee/twigextensions/MinimeeTwigExtension.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/minimee/twigextensions/MinimeeTwigExtension.php b/minimee/twigextensions/MinimeeTwigExtension.php index 80733b8..1c39a0a 100755 --- a/minimee/twigextensions/MinimeeTwigExtension.php +++ b/minimee/twigextensions/MinimeeTwigExtension.php @@ -36,6 +36,18 @@ public function getFilters() return array('minimee' => new \Twig_Filter_Method($this, 'minimeeFilter')); } + /** + * Inject into the template scope a read-only copy of Minimee's runtime settings + * + * @return Array + */ + public function getGlobals() + { + return array( + 'minimee' => minimee()->service->pluginSettings + ); + } + /** * Define our filter * From 8b9ba1253d7c8dfe968cb6a7d8d69f299bb3f703 Mon Sep 17 00:00:00 2001 From: John D Wells Date: Mon, 21 Mar 2016 23:28:56 +0000 Subject: [PATCH 06/18] Introduce plugin-specific Exceptions representing the different levels we might throw. --- minimee/MinimeePlugin.php | 6 ++++++ minimee/components/Minimee_ErrorException.php | 17 +++++++++++++++++ minimee/components/Minimee_Exception.php | 17 +++++++++++++++++ minimee/components/Minimee_InfoException.php | 17 +++++++++++++++++ minimee/components/Minimee_WarningException.php | 17 +++++++++++++++++ 5 files changed, 74 insertions(+) create mode 100644 minimee/components/Minimee_ErrorException.php create mode 100644 minimee/components/Minimee_Exception.php create mode 100644 minimee/components/Minimee_InfoException.php create mode 100644 minimee/components/Minimee_WarningException.php diff --git a/minimee/MinimeePlugin.php b/minimee/MinimeePlugin.php index 71e9088..8797f98 100755 --- a/minimee/MinimeePlugin.php +++ b/minimee/MinimeePlugin.php @@ -236,7 +236,13 @@ protected function _autoload() { require_once craft()->path->getPluginsPath() . 'minimee/library/vendor/autoload.php'; + Craft::import('plugins.minimee.components.Minimee_Exception'); + Craft::import('plugins.minimee.components.Minimee_InfoException'); + Craft::import('plugins.minimee.components.Minimee_WarningException'); + Craft::import('plugins.minimee.components.Minimee_ErrorException'); + Craft::import('plugins.minimee.enums.MinimeeType'); + Craft::import('plugins.minimee.models.Minimee_ISettingsModel'); Craft::import('plugins.minimee.models.Minimee_SettingsModel'); } diff --git a/minimee/components/Minimee_ErrorException.php b/minimee/components/Minimee_ErrorException.php new file mode 100644 index 0000000..112f3c7 --- /dev/null +++ b/minimee/components/Minimee_ErrorException.php @@ -0,0 +1,17 @@ + + * @package Minimee + * @since Craft 1.3 + * @copyright Copyright (c) 2014, John D Wells + * @license http://opensource.org/licenses/mit-license.php MIT License + * @link http://github.com/johndwells/Minimee-Craft + */ + +/** + * + */ +class Minimee_ErrorException extends Minimee_Exception {} diff --git a/minimee/components/Minimee_Exception.php b/minimee/components/Minimee_Exception.php new file mode 100644 index 0000000..3beb4e0 --- /dev/null +++ b/minimee/components/Minimee_Exception.php @@ -0,0 +1,17 @@ + + * @package Minimee + * @since Craft 1.3 + * @copyright Copyright (c) 2014, John D Wells + * @license http://opensource.org/licenses/mit-license.php MIT License + * @link http://github.com/johndwells/Minimee-Craft + */ + +/** + * + */ +class Minimee_Exception extends Exception {} diff --git a/minimee/components/Minimee_InfoException.php b/minimee/components/Minimee_InfoException.php new file mode 100644 index 0000000..3ccd439 --- /dev/null +++ b/minimee/components/Minimee_InfoException.php @@ -0,0 +1,17 @@ + + * @package Minimee + * @since Craft 1.3 + * @copyright Copyright (c) 2014, John D Wells + * @license http://opensource.org/licenses/mit-license.php MIT License + * @link http://github.com/johndwells/Minimee-Craft + */ + +/** + * + */ +class Minimee_InfoException extends Minimee_Exception {} diff --git a/minimee/components/Minimee_WarningException.php b/minimee/components/Minimee_WarningException.php new file mode 100644 index 0000000..93fd7e6 --- /dev/null +++ b/minimee/components/Minimee_WarningException.php @@ -0,0 +1,17 @@ + + * @package Minimee + * @since Craft 1.3 + * @copyright Copyright (c) 2014, John D Wells + * @license http://opensource.org/licenses/mit-license.php MIT License + * @link http://github.com/johndwells/Minimee-Craft + */ + +/** + * + */ +class Minimee_WarningException extends Minimee_Exception {} From ecdb95a96dac040140be3fa6622416cf3a548004 Mon Sep 17 00:00:00 2001 From: John D Wells Date: Mon, 21 Mar 2016 23:29:26 +0000 Subject: [PATCH 07/18] Prepare to catch any Minimee_* exception we might throw. --- minimee/services/MinimeeService.php | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/minimee/services/MinimeeService.php b/minimee/services/MinimeeService.php index d4f874f..2d9b194 100755 --- a/minimee/services/MinimeeService.php +++ b/minimee/services/MinimeeService.php @@ -160,7 +160,24 @@ public function run($type, $assets, $settings = array()) ->makeReturn(); } } - } catch (Exception $e) + } + catch (Minimee_InfoException $e) + { + return $this->abort($e, LogLevel::Info); + } + catch (Minimee_WarningException $e) + { + return $this->abort($e, LogLevel::Warning); + } + catch (Minimee_ErrorException $e) + { + return $this->abort($e, LogLevel::Error); + } + catch (Minimee_Exception $e) + { + return $this->abort($e); + } + catch (Exception $e) { return $this->abort($e); } From b1476d73b0bd8d6c12c62e193ef217093cfb25cd Mon Sep 17 00:00:00 2001 From: John D Wells Date: Mon, 21 Mar 2016 23:30:23 +0000 Subject: [PATCH 08/18] Throw different levels of exceptions based on severity of the event. --- minimee/services/MinimeeService.php | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/minimee/services/MinimeeService.php b/minimee/services/MinimeeService.php index 2d9b194..8501178 100755 --- a/minimee/services/MinimeeService.php +++ b/minimee/services/MinimeeService.php @@ -231,7 +231,7 @@ protected function ensureCacheExists() { if( ! $this->createCache()) { - throw new Exception(Craft::t('Minimee could not find asset ' . $asset->filenamePath . '.')); + throw new Minimee_ErrorException(Craft::t('Minimee could not write to cache ' . $this->makePathToCacheFilename() . '.')); } } @@ -280,7 +280,7 @@ protected function checkHeaders() { if( ! $asset->exists()) { - throw new Exception(Craft::t('Minimee could not find asset ' . $asset->filenamePath . '.')); + throw new Minimee_ErrorException(Craft::t('Minimee could not find asset ' . $asset->filenamePath . '.')); } } @@ -401,15 +401,15 @@ protected function isUrl($string) * @return this */ protected function flightcheck() - { + { if(empty(self::$_pluginSettings)) { - throw new Exception(Craft::t('Minimee is not installed.')); + throw new Minimee_InfoException(Craft::t('Minimee is not installed.')); } if( ! $this->settings->enabled) { - throw new Exception(Craft::t('Minimee has been disabled via settings.')); + throw new Minimee_InfoException(Craft::t('Minimee has been disabled via settings.')); } if( ! $this->settings->validate()) @@ -420,7 +420,7 @@ protected function flightcheck() $exceptionErrors .= implode('. ', $error); } - throw new Exception(Craft::t('Minimee has detected invalid plugin settings: ') . $exceptionErrors); + throw new Minimee_WarningException(Craft::t('Minimee has detected invalid plugin settings: ') . $exceptionErrors); } if($this->settings->useResourceCache()) @@ -430,23 +430,23 @@ protected function flightcheck() { if( ! IOHelper::folderExists($this->settings->cachePath)) { - throw new Exception(Craft::t('Minimee\'s Cache Folder does not exist: ' . $this->settings->cachePath)); + throw new Minimee_WarningException(Craft::t('Minimee\'s Cache Folder does not exist: ' . $this->settings->cachePath)); } if( ! IOHelper::isWritable($this->settings->cachePath)) { - throw new Exception(Craft::t('Minimee\'s Cache Folder is not writable: ' . $this->settings->cachePath)); + throw new Minimee_WarningException(Craft::t('Minimee\'s Cache Folder is not writable: ' . $this->settings->cachePath)); } } if( ! $this->assets) { - throw new Exception(Craft::t('Minimee has no assets to operate upon.')); + throw new Minimee_InfoException(Craft::t('Minimee has no assets to operate upon.')); } if( ! $this->type) { - throw new Exception(Craft::t('Minimee has no value for `type`.')); + throw new Minimee_WarningException(Craft::t('Minimee has no value for `type`.')); } return $this; @@ -814,7 +814,7 @@ protected function setType($type) { if($type !== MinimeeType::Css && $type !== MinimeeType::Js) { - throw new Exception(Craft::t('Attempting to set an unknown type `' . $type . '`.')); + throw new Minimee_WarningException(Craft::t('Attempting to set an unknown type `' . $type . '`.')); } $this->_type = $type; From f61a89b6d6112c9e12bbbfe224982f482ba2fc3c Mon Sep 17 00:00:00 2001 From: John D Wells Date: Mon, 21 Mar 2016 23:30:40 +0000 Subject: [PATCH 09/18] Re-throw original exception rather than throwing a new one. --- minimee/services/MinimeeService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/minimee/services/MinimeeService.php b/minimee/services/MinimeeService.php index 8501178..94242b8 100755 --- a/minimee/services/MinimeeService.php +++ b/minimee/services/MinimeeService.php @@ -204,7 +204,7 @@ protected function abort($e, $level = LogLevel::Error) && $this->settings->enabled && ($level == LogLevel::Warning || $level == LogLevel::Error)) { - throw new Exception($e); + throw $e; } return false; From 560d7575b44243b2b4d255086f1e32f08cbebaeb Mon Sep 17 00:00:00 2001 From: John D Wells Date: Mon, 21 Mar 2016 23:31:21 +0000 Subject: [PATCH 10/18] Refactor our legacy setting checks (catching a bug along the way). --- minimee/services/MinimeeService.php | 36 ++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/minimee/services/MinimeeService.php b/minimee/services/MinimeeService.php index 94242b8..5717a4d 100755 --- a/minimee/services/MinimeeService.php +++ b/minimee/services/MinimeeService.php @@ -27,6 +27,11 @@ class MinimeeService extends BaseApplicationComponent protected static $_pluginSettings = array(); // static array of settings, a merge of DB and filesystem settings + protected $_deprecatedSettingsMap = array( // map of old-to-new configuration setting names + 'cssTagTemplate' => 'cssReturnTemplate', + 'jsTagTemplate' => 'jsReturnTemplate'); + + /*================= PUBLIC METHODS ================= */ @@ -831,15 +836,20 @@ protected function setType($type) */ protected function supportLegacyNamesFromConfig($settings = array()) { - $settingNameMap = array( - 'cssTagTemplate' => 'cssReturnTemplate', - 'jsTagTemplate' => 'jsReturnTemplate'); - - foreach($settingNameMap as $oldAttributeName => $newAttributeName) + foreach($this->_deprecatedSettingsMap as $oldAttributeName => $newAttributeName) { if(craft()->config->exists($oldAttributeName, 'minimee')) { + $message = Craft::t('Deprecated configuration setting name: change {oldAttributeName} to {newAttributeName}.', + array( + 'oldAttributeName' => $oldAttributeName, + 'newAttributeName' => $newAttributeName)); + + MinimeePlugin::log($message, LogLevel::Info); + $settings[$newAttributeName] = craft()->config->get($oldAttributeName, 'minimee'); + + unset($settings[$oldAttributeName]); } } @@ -855,16 +865,20 @@ protected function supportLegacyNamesFromConfig($settings = array()) */ protected function supportLegacyNamesAtRuntime($runtimeSettings = array()) { - $settingNameMap = array( - 'cssTagTemplate' => 'cssReturnTemplate', - 'jsTagTemplate' => 'jsReturnTemplate'); - - foreach($settingNameMap as $oldAttributeName => $newAttributeName) + foreach($this->_deprecatedSettingsMap as $oldAttributeName => $newAttributeName) { if(array_key_exists($oldAttributeName, $runtimeSettings)) { + $message = Craft::t('Deprecated runtime setting name: change {oldAttributeName} to {runtimeSettings}.', + array( + 'oldAttributeName' => $oldAttributeName, + 'runtimeSettings' => $runtimeSettings)); + + MinimeePlugin::log($message, LogLevel::Info); + $runtimeSettings[$newAttributeName] = $runtimeSettings[$oldAttributeName]; - unset($runtimeSettings[oldAttributeName]); + + unset($runtimeSettings[$oldAttributeName]); } } From 9fd147ea2b29e4732c3f10ad53e9c46886629f5f Mon Sep 17 00:00:00 2001 From: John D Wells Date: Mon, 21 Mar 2016 23:37:11 +0000 Subject: [PATCH 11/18] Version bump. --- minimee/MinimeePlugin.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/minimee/MinimeePlugin.php b/minimee/MinimeePlugin.php index 8797f98..4a0e42b 100755 --- a/minimee/MinimeePlugin.php +++ b/minimee/MinimeePlugin.php @@ -34,7 +34,7 @@ public function getName() */ public function getVersion() { - return '0.9.6'; + return '0.9.7'; } /** From a673f192966c07df7c1615b8135ac2f2b036d4da Mon Sep 17 00:00:00 2001 From: John D Wells Date: Tue, 22 Mar 2016 00:10:37 +0000 Subject: [PATCH 12/18] Update project dependencies. --- minimee/library/composer.json | 7 +- minimee/library/composer.lock | 110 +- minimee/library/composer.phar | Bin 0 -> 1580193 bytes .../library/vendor/composer/ClassLoader.php | 51 +- minimee/library/vendor/composer/LICENSE | 21 + .../vendor/composer/autoload_classmap.php | 1 + .../vendor/composer/autoload_namespaces.php | 1 + .../library/vendor/composer/autoload_real.php | 8 - .../library/vendor/composer/installed.json | 113 +- .../{minify => jsmin-php}/.editorconfig | 0 .../vendor/mrclay/jsmin-php/.gitignore | 5 + .../vendor/mrclay/jsmin-php/HISTORY.txt | 24 + .../vendor/mrclay/jsmin-php/LICENSE.txt | 26 + .../vendor/mrclay/jsmin-php/composer.json | 34 + .../vendor/mrclay/jsmin-php/phpunit.xml.dist | 27 + .../mrclay/jsmin-php/src/JSMin/JSMin.php | 454 +++ .../JSMin/UnterminatedCommentException.php | 6 + .../src/JSMin/UnterminatedRegExpException.php | 6 + .../src/JSMin/UnterminatedStringException.php | 6 + .../Resources/minify/expected/before.js} | 0 .../Resources/minify/expected/condcomm.js | 6 + .../Resources/minify/expected/issue144.js} | 0 .../Resources/minify/expected/issue256.js} | 0 .../minify/expected/keyword-regex.js | 1 + .../Resources/minify/expected/not-regexp.js | 1 + .../Resources/minify/expected/regexes.js | 2 + .../Resources/minify/expected/starts-regex.js | 1 + .../Resources/minify/expected/token-regexp.js | 1 + .../tests/Resources/minify/input}/before.js | 0 .../tests/Resources/minify/input}/condcomm.js | 0 .../tests/Resources/minify/input}/issue144.js | 16 +- .../tests/Resources/minify/input}/issue256.js | 0 .../Resources/minify/input/keyword-regex.js | 3 + .../Resources/minify/input/not-regexp.js | 3 + .../tests/Resources/minify/input}/regexes.js | 0 .../Resources/minify/input/starts-regex.js | 3 + .../Resources/minify/input/token-regexp.js | 3 + .../jsmin-php/tests/Tests/JSMin/JSMinTest.php | 168 + .../mrclay/jsmin-php/tests/bootstrap.php | 1 + .../vendor/mrclay/jsmin-php/web/README.txt | 2 + .../vendor/mrclay/jsmin-php/web/index.php | 92 + .../library/vendor/mrclay/minify/HISTORY.txt | 31 +- minimee/library/vendor/mrclay/minify/MIN.txt | 5 + .../library/vendor/mrclay/minify/README.md | 79 + .../library/vendor/mrclay/minify/README.txt | 68 - .../vendor/mrclay/minify/composer.json | 10 +- .../minify/docs/AlternateFileLayouts.wiki.md | 29 + .../mrclay/minify/docs/BuilderApp.wiki.md | 9 + .../mrclay/minify/docs/CommonProblems.wiki.md | 129 + .../minify/docs/ComponentClasses.wiki.md | 14 + .../mrclay/minify/docs/CookBook.wiki.md | 157 + .../mrclay/minify/docs/CustomServer.wiki.md | 153 + .../mrclay/minify/docs/CustomSource.wiki.md | 138 + .../mrclay/minify/docs/Debugging.wiki.md | 80 + .../vendor/mrclay/minify/docs/FAQ.wiki.md | 79 + .../vendor/mrclay/minify/docs/MinApp.wiki.md | 14 + .../mrclay/minify/docs/TestingMinify.wiki.md | 19 + .../mrclay/minify/docs/UriRewriting.wiki.md | 73 + .../mrclay/minify/docs/UserGuide.wiki.md | 48 + .../mrclay/minify/docs/old/History.wiki.md | 92 + .../mrclay/minify/docs/old/HowItWorks.wiki.md | 31 + .../minify/docs/old/HttpCaching.wiki.md | 63 + .../minify/docs/old/ProjectGoals.wiki.md | 13 + .../mrclay/minify/docs/old/Security.wiki.md | 15 + .../mrclay/minify/docs/old/VersionTwo.wiki.md | 35 + .../mrclay/minify/min/builder/ocCheck.php | 8 +- .../vendor/mrclay/minify/min/builder/test.php | 4 +- .../vendor/mrclay/minify/min/config.php | 8 + .../vendor/mrclay/minify/min/index.php | 14 +- .../vendor/mrclay/minify/min/lib/CSSmin.php | 16 +- .../mrclay/minify/min/lib/DooDigestAuth.php | 2 + .../vendor/mrclay/minify/min/lib/FirePHP.php | 2981 ++++++++------ .../mrclay/minify/min/lib/JSMinPlus.php | 6 +- .../vendor/mrclay/minify/min/lib/Minify.php | 27 +- .../minify/min/lib/Minify/Cache/WinCache.php | 130 + .../minify/min/lib/Minify/Controller/Base.php | 5 +- .../min/lib/Minify/Controller/MinApp.php | 1 - .../mrclay/minify/min/lib/Minify/Loader.php | 5 + .../mrclay/minify/min/lib/Minify/Logger.php | 2 +- .../vendor/mrclay/minify/min/server-info.php | 25 + .../mrclay/minify/min_extras/README.txt | 11 - .../mrclay/minify/min_extras/cli/minify.php | 82 - .../minify/min_extras/cli/rewrite-uris.php | 63 - .../mrclay/minify/min_extras/config.php | 12 - .../min_extras/tools/minifyTextarea.php | 175 - .../minify/min_extras/tools/minifyUrl.php | 164 - .../min_extras/tools/testRewriteUri.php | 58 - .../mrclay/minify/min_unit_tests/.htaccess | 4 - .../min_unit_tests/HTTP_ConditionalGet/2.php | 44 - .../min_unit_tests/HTTP_ConditionalGet/3.php | 40 - .../min_unit_tests/HTTP_ConditionalGet/4.php | 49 - .../min_unit_tests/HTTP_ConditionalGet/5.php | 27 - .../HTTP_ConditionalGet/_include.php | 64 - .../HTTP_ConditionalGet/index.php | 36 - .../min_unit_tests/HTTP_Encoder/green.png | Bin 202 -> 0 bytes .../min_unit_tests/HTTP_Encoder/index.php | 60 - .../mrclay/minify/min_unit_tests/_inc.php | 62 - .../_test_files/css/comments.css | 9 - .../_test_files/css/comments.min.css | 3 - .../min_unit_tests/_test_files/css/hacks.css | 66 - .../_test_files/css/hacks.min.css | 4 - .../_test_files/css/issue210.css | 1 - .../_test_files/css/issue210.min.css | 1 - .../_test_files/css/issue62.css | 890 ----- .../_test_files/css/issue62.min.css | 25 - .../_test_files/css/paths_prepend.css | 12 - .../_test_files/css/paths_prepend.min.css | 1 - .../_test_files/css/paths_rewrite.css | 14 - .../_test_files/css/paths_rewrite.min.css | 1 - .../min_unit_tests/_test_files/css/readme.txt | 1 - .../_test_files/css/selectors.css | 42 - .../_test_files/css/selectors.min.css | 37 - .../min_unit_tests/_test_files/css/styles.css | 33 - .../_test_files/css/styles.min.css | 3 - .../_test_files/css/subsilver.css | 434 --- .../_test_files/css/subsilver.min.css | 18 - .../_test_files/css/unusual_strings.css | 10 - .../_test_files/css/unusual_strings.min.css | 2 - .../_test_files/css/vladmirated.css | 658 ---- .../_test_files/css/vladmirated.min.css | 79 - .../_test_files/css_uriRewriter/exp.css | 17 - .../css_uriRewriter/exp_prepend.css | 17 - .../css_uriRewriter/exp_prepend2.css | 17 - .../_test_files/css_uriRewriter/in.css | 17 - .../_test_files/html/before.html | 96 - .../_test_files/html/before.min.html | 38 - .../_test_files/html/before2.html | 95 - .../_test_files/html/before2.min.html | 38 - .../_test_files/htmlHelper_groupsConfig.php | 8 - .../importProcessor/css/1/adjacent.css | 3 - .../_test_files/importProcessor/css/1/tv.css | 4 - .../importProcessor/css/adjacent.css | 4 - .../_test_files/importProcessor/css/input.css | 5 - .../importProcessor/css/output.css | 52 - .../importProcessor/lib/css/example.css | 1 - .../_test_files/js/before.min_plus.js | 22 - .../_test_files/js/condcomm.min_plus.js | 13 - .../min_unit_tests/_test_files/js/issue132.js | 7 - .../_test_files/js/issue132.min.js | 1 - .../_test_files/js/issue141.min.js | 3 - .../_test_files/js/jquery-1.2.3.js | 3408 ----------------- .../_test_files/js/regexes.min.js | 3 - .../_test_files/minify/QueryString.js | 168 - .../_test_files/minify/email.js | 24 - .../_test_files/minify/issue143.js | 6 - .../_test_files/minify/issue73_1.js | 2 - .../_test_files/minify/issue73_2.js | 3 - .../_test_files/minify/issue89_1.css | 7 - .../_test_files/minify/issue89_2.css | 7 - .../_test_files/minify/issue89_out.min.css | 1 - .../_test_files/minify/lines_bugs.js | 10 - .../_test_files/minify/lines_output.js | 72 - .../_test_files/minify/minified.css | 5 - .../_test_files/minify/minified.js | 12 - .../test_HTTP_ConditionalGet.php | 135 - .../min_unit_tests/test_HTTP_Encoder.php | 314 -- .../minify/min_unit_tests/test_JSMin.php | 108 - .../minify/min_unit_tests/test_JSMinPlus.php | 49 - .../minify/min_unit_tests/test_Minify.php | 222 -- .../min_unit_tests/test_Minify_Build.php | 33 - .../minify/min_unit_tests/test_Minify_CSS.php | 51 - .../test_Minify_CSS_UriRewriter.php | 93 - .../min_unit_tests/test_Minify_Cache_APC.php | 31 - .../min_unit_tests/test_Minify_Cache_File.php | 50 - .../test_Minify_Cache_Memcache.php | 50 - .../test_Minify_Cache_ZendPlatform.php | 31 - .../test_Minify_ClosureCompiler.php | 75 - .../test_Minify_CommentPreserver.php | 35 - .../min_unit_tests/test_Minify_HTML.php | 55 - .../test_Minify_HTML_Helper.php | 66 - .../test_Minify_ImportProcessor.php | 37 - .../test_Minify_JS_ClosureCompiler.php | 125 - .../min_unit_tests/test_Minify_Lines.php | 32 - .../min_unit_tests/test_Minify_YuiCSS.php | 56 - .../mrclay/minify/min_unit_tests/test_all.php | 22 - .../min_unit_tests/test_environment.php | 138 - .../min_unit_tests/test_js_in_browser.html | 4 - .../library/vendor/selvinortiz/zit/.gitignore | 2 + .../library/vendor/selvinortiz/zit/README.md | 5 + .../vendor/selvinortiz/zit/composer.json | 2 +- .../zit/src/SelvinOrtiz/Zit/Zit.php | 25 +- .../vendor/selvinortiz/zit/tests/ZitTest.php | 13 + 182 files changed, 4403 insertions(+), 10758 deletions(-) create mode 100755 minimee/library/composer.phar create mode 100644 minimee/library/vendor/composer/LICENSE rename minimee/library/vendor/mrclay/{minify => jsmin-php}/.editorconfig (100%) create mode 100644 minimee/library/vendor/mrclay/jsmin-php/.gitignore create mode 100644 minimee/library/vendor/mrclay/jsmin-php/HISTORY.txt create mode 100644 minimee/library/vendor/mrclay/jsmin-php/LICENSE.txt create mode 100644 minimee/library/vendor/mrclay/jsmin-php/composer.json create mode 100644 minimee/library/vendor/mrclay/jsmin-php/phpunit.xml.dist create mode 100644 minimee/library/vendor/mrclay/jsmin-php/src/JSMin/JSMin.php create mode 100644 minimee/library/vendor/mrclay/jsmin-php/src/JSMin/UnterminatedCommentException.php create mode 100644 minimee/library/vendor/mrclay/jsmin-php/src/JSMin/UnterminatedRegExpException.php create mode 100644 minimee/library/vendor/mrclay/jsmin-php/src/JSMin/UnterminatedStringException.php rename minimee/library/vendor/mrclay/{minify/min_unit_tests/_test_files/js/before.min.js => jsmin-php/tests/Resources/minify/expected/before.js} (100%) create mode 100644 minimee/library/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/condcomm.js rename minimee/library/vendor/mrclay/{minify/min_unit_tests/_test_files/js/issue144.min.js => jsmin-php/tests/Resources/minify/expected/issue144.js} (100%) rename minimee/library/vendor/mrclay/{minify/min_unit_tests/_test_files/js/issue256.min.js => jsmin-php/tests/Resources/minify/expected/issue256.js} (100%) create mode 100644 minimee/library/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/keyword-regex.js create mode 100644 minimee/library/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/not-regexp.js create mode 100644 minimee/library/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/regexes.js create mode 100644 minimee/library/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/starts-regex.js create mode 100644 minimee/library/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/token-regexp.js rename minimee/library/vendor/mrclay/{minify/min_unit_tests/_test_files/js => jsmin-php/tests/Resources/minify/input}/before.js (100%) rename minimee/library/vendor/mrclay/{minify/min_unit_tests/_test_files/js => jsmin-php/tests/Resources/minify/input}/condcomm.js (100%) rename minimee/library/vendor/mrclay/{minify/min_unit_tests/_test_files/js => jsmin-php/tests/Resources/minify/input}/issue144.js (93%) rename minimee/library/vendor/mrclay/{minify/min_unit_tests/_test_files/js => jsmin-php/tests/Resources/minify/input}/issue256.js (100%) create mode 100644 minimee/library/vendor/mrclay/jsmin-php/tests/Resources/minify/input/keyword-regex.js create mode 100644 minimee/library/vendor/mrclay/jsmin-php/tests/Resources/minify/input/not-regexp.js rename minimee/library/vendor/mrclay/{minify/min_unit_tests/_test_files/js => jsmin-php/tests/Resources/minify/input}/regexes.js (100%) create mode 100644 minimee/library/vendor/mrclay/jsmin-php/tests/Resources/minify/input/starts-regex.js create mode 100644 minimee/library/vendor/mrclay/jsmin-php/tests/Resources/minify/input/token-regexp.js create mode 100644 minimee/library/vendor/mrclay/jsmin-php/tests/Tests/JSMin/JSMinTest.php create mode 100644 minimee/library/vendor/mrclay/jsmin-php/tests/bootstrap.php create mode 100644 minimee/library/vendor/mrclay/jsmin-php/web/README.txt create mode 100644 minimee/library/vendor/mrclay/jsmin-php/web/index.php create mode 100644 minimee/library/vendor/mrclay/minify/README.md delete mode 100644 minimee/library/vendor/mrclay/minify/README.txt create mode 100644 minimee/library/vendor/mrclay/minify/docs/AlternateFileLayouts.wiki.md create mode 100644 minimee/library/vendor/mrclay/minify/docs/BuilderApp.wiki.md create mode 100644 minimee/library/vendor/mrclay/minify/docs/CommonProblems.wiki.md create mode 100644 minimee/library/vendor/mrclay/minify/docs/ComponentClasses.wiki.md create mode 100644 minimee/library/vendor/mrclay/minify/docs/CookBook.wiki.md create mode 100644 minimee/library/vendor/mrclay/minify/docs/CustomServer.wiki.md create mode 100644 minimee/library/vendor/mrclay/minify/docs/CustomSource.wiki.md create mode 100644 minimee/library/vendor/mrclay/minify/docs/Debugging.wiki.md create mode 100644 minimee/library/vendor/mrclay/minify/docs/FAQ.wiki.md create mode 100644 minimee/library/vendor/mrclay/minify/docs/MinApp.wiki.md create mode 100644 minimee/library/vendor/mrclay/minify/docs/TestingMinify.wiki.md create mode 100644 minimee/library/vendor/mrclay/minify/docs/UriRewriting.wiki.md create mode 100644 minimee/library/vendor/mrclay/minify/docs/UserGuide.wiki.md create mode 100644 minimee/library/vendor/mrclay/minify/docs/old/History.wiki.md create mode 100644 minimee/library/vendor/mrclay/minify/docs/old/HowItWorks.wiki.md create mode 100644 minimee/library/vendor/mrclay/minify/docs/old/HttpCaching.wiki.md create mode 100644 minimee/library/vendor/mrclay/minify/docs/old/ProjectGoals.wiki.md create mode 100644 minimee/library/vendor/mrclay/minify/docs/old/Security.wiki.md create mode 100644 minimee/library/vendor/mrclay/minify/docs/old/VersionTwo.wiki.md create mode 100644 minimee/library/vendor/mrclay/minify/min/lib/Minify/Cache/WinCache.php create mode 100644 minimee/library/vendor/mrclay/minify/min/server-info.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_extras/README.txt delete mode 100755 minimee/library/vendor/mrclay/minify/min_extras/cli/minify.php delete mode 100755 minimee/library/vendor/mrclay/minify/min_extras/cli/rewrite-uris.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_extras/config.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_extras/tools/minifyTextarea.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_extras/tools/minifyUrl.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_extras/tools/testRewriteUri.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/.htaccess delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/HTTP_ConditionalGet/2.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/HTTP_ConditionalGet/3.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/HTTP_ConditionalGet/4.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/HTTP_ConditionalGet/5.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/HTTP_ConditionalGet/_include.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/HTTP_ConditionalGet/index.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/HTTP_Encoder/green.png delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/HTTP_Encoder/index.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_inc.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/comments.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/comments.min.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/hacks.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/hacks.min.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/issue210.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/issue210.min.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/issue62.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/issue62.min.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/paths_prepend.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/paths_prepend.min.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/paths_rewrite.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/paths_rewrite.min.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/readme.txt delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/selectors.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/selectors.min.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/styles.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/styles.min.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/subsilver.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/subsilver.min.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/unusual_strings.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/unusual_strings.min.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/vladmirated.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/vladmirated.min.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css_uriRewriter/exp.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css_uriRewriter/exp_prepend.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css_uriRewriter/exp_prepend2.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css_uriRewriter/in.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/html/before.html delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/html/before.min.html delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/html/before2.html delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/html/before2.min.html delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/htmlHelper_groupsConfig.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/importProcessor/css/1/adjacent.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/importProcessor/css/1/tv.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/importProcessor/css/adjacent.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/importProcessor/css/input.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/importProcessor/css/output.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/importProcessor/lib/css/example.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/js/before.min_plus.js delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/js/condcomm.min_plus.js delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/js/issue132.js delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/js/issue132.min.js delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/js/issue141.min.js delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/js/jquery-1.2.3.js delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/js/regexes.min.js delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/minify/QueryString.js delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/minify/email.js delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/minify/issue143.js delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/minify/issue73_1.js delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/minify/issue73_2.js delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/minify/issue89_1.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/minify/issue89_2.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/minify/issue89_out.min.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/minify/lines_bugs.js delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/minify/lines_output.js delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/minify/minified.css delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/minify/minified.js delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/test_HTTP_ConditionalGet.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/test_HTTP_Encoder.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/test_JSMin.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/test_JSMinPlus.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/test_Minify.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/test_Minify_Build.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/test_Minify_CSS.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/test_Minify_CSS_UriRewriter.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/test_Minify_Cache_APC.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/test_Minify_Cache_File.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/test_Minify_Cache_Memcache.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/test_Minify_Cache_ZendPlatform.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/test_Minify_ClosureCompiler.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/test_Minify_CommentPreserver.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/test_Minify_HTML.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/test_Minify_HTML_Helper.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/test_Minify_ImportProcessor.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/test_Minify_JS_ClosureCompiler.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/test_Minify_Lines.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/test_Minify_YuiCSS.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/test_all.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/test_environment.php delete mode 100644 minimee/library/vendor/mrclay/minify/min_unit_tests/test_js_in_browser.html create mode 100644 minimee/library/vendor/selvinortiz/zit/.gitignore diff --git a/minimee/library/composer.json b/minimee/library/composer.json index dc284cd..abb53f3 100755 --- a/minimee/library/composer.json +++ b/minimee/library/composer.json @@ -5,7 +5,8 @@ } }, "require": { - "selvinortiz/zit": "dev-master", - "mrclay/minify" : "dev-master" + "mrclay/jsmin-php": "^2.3", + "mrclay/minify": "^2.3", + "selvinortiz/zit": "^0.5.2" } -} \ No newline at end of file +} diff --git a/minimee/library/composer.lock b/minimee/library/composer.lock index 71c3b43..abee3fa 100644 --- a/minimee/library/composer.lock +++ b/minimee/library/composer.lock @@ -1,28 +1,88 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file" + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" ], - "hash": "3cab57ffe0ae86239e50be3f8d8e8e3f", + "hash": "673b62552d017c69f8a574c7f3dc3ee8", + "content-hash": "fd8ce211ce33af5cd6cbfde69238fc90", "packages": [ + { + "name": "mrclay/jsmin-php", + "version": "2.3.2", + "source": { + "type": "git", + "url": "https://github.com/mrclay/jsmin-php.git", + "reference": "932c9633c35b390beb2cfdea69a41ea7dbc8d759" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mrclay/jsmin-php/zipball/932c9633c35b390beb2cfdea69a41ea7dbc8d759", + "reference": "932c9633c35b390beb2cfdea69a41ea7dbc8d759", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "4.2" + }, + "type": "library", + "autoload": { + "psr-0": { + "JSMin\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Stephen Clay", + "email": "steve@mrclay.org", + "role": "Developer" + }, + { + "name": "Ryan Grove", + "email": "ryan@wonko.com", + "role": "Developer" + } + ], + "description": "Provides a modified port of Douglas Crockford's jsmin.c, which removes unnecessary whitespace from JavaScript files.", + "homepage": "https://github.com/mrclay/jsmin-php/", + "keywords": [ + "compress", + "jsmin", + "minify" + ], + "time": "2015-03-30 15:04:42" + }, { "name": "mrclay/minify", - "version": "dev-master", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/mrclay/minify.git", - "reference": "fb3931f8cd54a637b2a42170c3a9a1c4da9e69a9" + "reference": "f4cb31135d288f951bb0af1f23a03d4c00ba9446" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mrclay/minify/zipball/fb3931f8cd54a637b2a42170c3a9a1c4da9e69a9", - "reference": "fb3931f8cd54a637b2a42170c3a9a1c4da9e69a9", + "url": "https://api.github.com/repos/mrclay/minify/zipball/f4cb31135d288f951bb0af1f23a03d4c00ba9446", + "reference": "f4cb31135d288f951bb0af1f23a03d4c00ba9446", "shasum": "" }, "require": { "ext-pcre": "*", "php": ">=5.2.1" }, + "require-dev": { + "tubalmartin/cssmin": "~2.4.8" + }, + "suggest": { + "tubalmartin/cssmin": "Support minify with CSSMin (YUI PHP port)" + }, "type": "library", "autoload": { "classmap": [ @@ -37,26 +97,25 @@ { "name": "Stephen Clay", "email": "steve@mrclay.org", - "homepage": "http://www.mrclay.org/", "role": "Developer" } ], "description": "Minify is a PHP5 app that helps you follow several rules for client-side performance. It combines multiple CSS or Javascript files, removes unnecessary whitespace and comments, and serves them with gzip encoding and optimal client-side cache headers", "homepage": "http://code.google.com/p/minify/", - "time": "2014-04-03 23:53:48" + "time": "2016-03-08 11:49:57" }, { "name": "selvinortiz/zit", - "version": "dev-master", + "version": "v0.5.2", "source": { "type": "git", "url": "https://github.com/selvinortiz/zit.git", - "reference": "3382b3800db783841134106509ccf3e8f8d01e5c" + "reference": "352382b74ecc82b39e3e7e16511d009c795ab918" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/selvinortiz/zit/zipball/3382b3800db783841134106509ccf3e8f8d01e5c", - "reference": "3382b3800db783841134106509ccf3e8f8d01e5c", + "url": "https://api.github.com/repos/selvinortiz/zit/zipball/352382b74ecc82b39e3e7e16511d009c795ab918", + "reference": "352382b74ecc82b39e3e7e16511d009c795ab918", "shasum": "" }, "require": { @@ -76,7 +135,7 @@ { "name": "Selvin Ortiz", "email": "selvin@selvin.co", - "homepage": "http://twitter.com/selvinortiz", + "homepage": "http://selv.in", "role": "Developer" } ], @@ -87,24 +146,15 @@ "injection", "zit" ], - "time": "2014-03-26 06:18:29" + "time": "2015-02-21 18:52:11" } ], - "packages-dev": [ - - ], - "aliases": [ - - ], + "packages-dev": [], + "aliases": [], "minimum-stability": "stable", - "stability-flags": { - "selvinortiz/zit": 20, - "mrclay/minify": 20 - }, - "platform": [ - - ], - "platform-dev": [ - - ] + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] } diff --git a/minimee/library/composer.phar b/minimee/library/composer.phar new file mode 100755 index 0000000000000000000000000000000000000000..be54aa749fcb846d3606ea1323be24172d1c23de GIT binary patch literal 1580193 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

KT8cbVLjGRN=!fy_Z+ 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

AL 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%0D+!md*~ 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%0DCIJ=s#Si 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%0DI|Hz74p0WF--j%(%ITUz; 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 y2Y2&7{ty4}fAhcn-#`3U|K * @author Jordi Boggiano + * @see http://www.php-fig.org/psr/psr-0/ + * @see http://www.php-fig.org/psr/psr-4/ */ class ClassLoader { @@ -54,9 +54,15 @@ class ClassLoader private $useIncludePath = false; private $classMap = array(); + private $classMapAuthoritative = false; + public function getPrefixes() { - return call_user_func_array('array_merge', $this->prefixesPsr0); + if (!empty($this->prefixesPsr0)) { + return call_user_func_array('array_merge', $this->prefixesPsr0); + } + + return array(); } public function getPrefixesPsr4() @@ -141,8 +147,10 @@ public function add($prefix, $paths, $prepend = false) * appending or prepending to the ones previously set for this namespace. * * @param string $prefix The prefix/namespace, with trailing '\\' - * @param array|string $paths The PSR-0 base directories + * @param array|string $paths The PSR-4 base directories * @param bool $prepend Whether to prepend the directories + * + * @throws \InvalidArgumentException */ public function addPsr4($prefix, $paths, $prepend = false) { @@ -202,10 +210,13 @@ public function set($prefix, $paths) * Registers a set of PSR-4 directories for a given namespace, * replacing any others previously set for this namespace. * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param array|string $paths The PSR-4 base directories + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param array|string $paths The PSR-4 base directories + * + * @throws \InvalidArgumentException */ - public function setPsr4($prefix, $paths) { + public function setPsr4($prefix, $paths) + { if (!$prefix) { $this->fallbackDirsPsr4 = (array) $paths; } else { @@ -239,6 +250,27 @@ public function getUseIncludePath() return $this->useIncludePath; } + /** + * Turns off searching the prefix and fallback directories for classes + * that have not been registered with the class map. + * + * @param bool $classMapAuthoritative + */ + public function setClassMapAuthoritative($classMapAuthoritative) + { + $this->classMapAuthoritative = $classMapAuthoritative; + } + + /** + * Should class lookup fail if not found in the current class map? + * + * @return bool + */ + public function isClassMapAuthoritative() + { + return $this->classMapAuthoritative; + } + /** * Registers this instance as an autoloader. * @@ -290,6 +322,9 @@ public function findFile($class) if (isset($this->classMap[$class])) { return $this->classMap[$class]; } + if ($this->classMapAuthoritative) { + return false; + } $file = $this->findFileWithExtension($class, '.php'); diff --git a/minimee/library/vendor/composer/LICENSE b/minimee/library/vendor/composer/LICENSE new file mode 100644 index 0000000..1a28124 --- /dev/null +++ b/minimee/library/vendor/composer/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) 2016 Nils Adermann, Jordi Boggiano + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/minimee/library/vendor/composer/autoload_classmap.php b/minimee/library/vendor/composer/autoload_classmap.php index 781c86a..aa15e59 100644 --- a/minimee/library/vendor/composer/autoload_classmap.php +++ b/minimee/library/vendor/composer/autoload_classmap.php @@ -30,6 +30,7 @@ 'Minify_Cache_APC' => $vendorDir . '/mrclay/minify/min/lib/Minify/Cache/APC.php', 'Minify_Cache_File' => $vendorDir . '/mrclay/minify/min/lib/Minify/Cache/File.php', 'Minify_Cache_Memcache' => $vendorDir . '/mrclay/minify/min/lib/Minify/Cache/Memcache.php', + 'Minify_Cache_WinCache' => $vendorDir . '/mrclay/minify/min/lib/Minify/Cache/WinCache.php', 'Minify_Cache_XCache' => $vendorDir . '/mrclay/minify/min/lib/Minify/Cache/XCache.php', 'Minify_Cache_ZendPlatform' => $vendorDir . '/mrclay/minify/min/lib/Minify/Cache/ZendPlatform.php', 'Minify_ClosureCompiler' => $vendorDir . '/mrclay/minify/min/lib/Minify/ClosureCompiler.php', diff --git a/minimee/library/vendor/composer/autoload_namespaces.php b/minimee/library/vendor/composer/autoload_namespaces.php index 8bac50d..0409697 100644 --- a/minimee/library/vendor/composer/autoload_namespaces.php +++ b/minimee/library/vendor/composer/autoload_namespaces.php @@ -8,4 +8,5 @@ return array( 'SelvinOrtiz\\Zit' => array($vendorDir . '/selvinortiz/zit/src'), 'SelvinOrtiz' => array($baseDir . '/src'), + 'JSMin\\' => array($vendorDir . '/mrclay/jsmin-php/src'), ); diff --git a/minimee/library/vendor/composer/autoload_real.php b/minimee/library/vendor/composer/autoload_real.php index deb7f81..8452878 100644 --- a/minimee/library/vendor/composer/autoload_real.php +++ b/minimee/library/vendor/composer/autoload_real.php @@ -23,9 +23,6 @@ public static function getLoader() self::$loader = $loader = new \Composer\Autoload\ClassLoader(); spl_autoload_unregister(array('ComposerAutoloaderInit4012557f94c48546ecea7f830d9594cb', 'loadClassLoader')); - $vendorDir = dirname(__DIR__); - $baseDir = dirname($vendorDir); - $map = require __DIR__ . '/autoload_namespaces.php'; foreach ($map as $namespace => $path) { $loader->set($namespace, $path); @@ -46,8 +43,3 @@ public static function getLoader() return $loader; } } - -function composerRequire4012557f94c48546ecea7f830d9594cb($file) -{ - require $file; -} diff --git a/minimee/library/vendor/composer/installed.json b/minimee/library/vendor/composer/installed.json index 6992385..70fdb09 100644 --- a/minimee/library/vendor/composer/installed.json +++ b/minimee/library/vendor/composer/installed.json @@ -1,28 +1,32 @@ [ { - "name": "selvinortiz/zit", - "version": "dev-master", - "version_normalized": "9999999-dev", + "name": "mrclay/jsmin-php", + "version": "2.3.2", + "version_normalized": "2.3.2.0", "source": { "type": "git", - "url": "https://github.com/selvinortiz/zit.git", - "reference": "3382b3800db783841134106509ccf3e8f8d01e5c" + "url": "https://github.com/mrclay/jsmin-php.git", + "reference": "932c9633c35b390beb2cfdea69a41ea7dbc8d759" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/selvinortiz/zit/zipball/3382b3800db783841134106509ccf3e8f8d01e5c", - "reference": "3382b3800db783841134106509ccf3e8f8d01e5c", + "url": "https://api.github.com/repos/mrclay/jsmin-php/zipball/932c9633c35b390beb2cfdea69a41ea7dbc8d759", + "reference": "932c9633c35b390beb2cfdea69a41ea7dbc8d759", "shasum": "" }, "require": { - "php": ">=5.3.2" + "ext-pcre": "*", + "php": ">=5.3.0" }, - "time": "2014-03-26 06:18:29", + "require-dev": { + "phpunit/phpunit": "4.2" + }, + "time": "2015-03-30 15:04:42", "type": "library", - "installation-source": "source", + "installation-source": "dist", "autoload": { "psr-0": { - "SelvinOrtiz\\Zit": "src" + "JSMin\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -31,42 +35,52 @@ ], "authors": [ { - "name": "Selvin Ortiz", - "email": "selvin@selvin.co", - "homepage": "http://twitter.com/selvinortiz", + "name": "Stephen Clay", + "email": "steve@mrclay.org", + "role": "Developer" + }, + { + "name": "Ryan Grove", + "email": "ryan@wonko.com", "role": "Developer" } ], - "description": "Tiny dependency management library for PHP 5.3", - "homepage": "https://github.com/selvinortiz/zit", + "description": "Provides a modified port of Douglas Crockford's jsmin.c, which removes unnecessary whitespace from JavaScript files.", + "homepage": "https://github.com/mrclay/jsmin-php/", "keywords": [ - "dependency", - "injection", - "zit" + "compress", + "jsmin", + "minify" ] }, { "name": "mrclay/minify", - "version": "dev-master", - "version_normalized": "9999999-dev", + "version": "2.3.0", + "version_normalized": "2.3.0.0", "source": { "type": "git", "url": "https://github.com/mrclay/minify.git", - "reference": "fb3931f8cd54a637b2a42170c3a9a1c4da9e69a9" + "reference": "f4cb31135d288f951bb0af1f23a03d4c00ba9446" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mrclay/minify/zipball/fb3931f8cd54a637b2a42170c3a9a1c4da9e69a9", - "reference": "fb3931f8cd54a637b2a42170c3a9a1c4da9e69a9", + "url": "https://api.github.com/repos/mrclay/minify/zipball/f4cb31135d288f951bb0af1f23a03d4c00ba9446", + "reference": "f4cb31135d288f951bb0af1f23a03d4c00ba9446", "shasum": "" }, "require": { "ext-pcre": "*", "php": ">=5.2.1" }, - "time": "2014-04-03 23:53:48", + "require-dev": { + "tubalmartin/cssmin": "~2.4.8" + }, + "suggest": { + "tubalmartin/cssmin": "Support minify with CSSMin (YUI PHP port)" + }, + "time": "2016-03-08 11:49:57", "type": "library", - "installation-source": "source", + "installation-source": "dist", "autoload": { "classmap": [ "min/lib/" @@ -80,11 +94,56 @@ { "name": "Stephen Clay", "email": "steve@mrclay.org", - "homepage": "http://www.mrclay.org/", "role": "Developer" } ], "description": "Minify is a PHP5 app that helps you follow several rules for client-side performance. It combines multiple CSS or Javascript files, removes unnecessary whitespace and comments, and serves them with gzip encoding and optimal client-side cache headers", "homepage": "http://code.google.com/p/minify/" + }, + { + "name": "selvinortiz/zit", + "version": "v0.5.2", + "version_normalized": "0.5.2.0", + "source": { + "type": "git", + "url": "https://github.com/selvinortiz/zit.git", + "reference": "352382b74ecc82b39e3e7e16511d009c795ab918" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/selvinortiz/zit/zipball/352382b74ecc82b39e3e7e16511d009c795ab918", + "reference": "352382b74ecc82b39e3e7e16511d009c795ab918", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "time": "2015-02-21 18:52:11", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-0": { + "SelvinOrtiz\\Zit": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Selvin Ortiz", + "email": "selvin@selvin.co", + "homepage": "http://selv.in", + "role": "Developer" + } + ], + "description": "Tiny dependency management library for PHP 5.3", + "homepage": "https://github.com/selvinortiz/zit", + "keywords": [ + "dependency", + "injection", + "zit" + ] } ] diff --git a/minimee/library/vendor/mrclay/minify/.editorconfig b/minimee/library/vendor/mrclay/jsmin-php/.editorconfig similarity index 100% rename from minimee/library/vendor/mrclay/minify/.editorconfig rename to minimee/library/vendor/mrclay/jsmin-php/.editorconfig diff --git a/minimee/library/vendor/mrclay/jsmin-php/.gitignore b/minimee/library/vendor/mrclay/jsmin-php/.gitignore new file mode 100644 index 0000000..8f56454 --- /dev/null +++ b/minimee/library/vendor/mrclay/jsmin-php/.gitignore @@ -0,0 +1,5 @@ +.idea/ +.DS_Store +/vendor +/composer.lock +/tests/Resources/*/actual/* \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/jsmin-php/HISTORY.txt b/minimee/library/vendor/mrclay/jsmin-php/HISTORY.txt new file mode 100644 index 0000000..ece7196 --- /dev/null +++ b/minimee/library/vendor/mrclay/jsmin-php/HISTORY.txt @@ -0,0 +1,24 @@ +JSMin fixes (from Minify) + +Version 2.3.0 + * Removes leading UTF-8 BOM + +Version 2.2.0 + * Fix handling of RegEx in certain situations in JSMin + * Fix bug in JSMin exceptions + +Version 2.1.6 + * JSMin fixes + +Version 2.1.4 + * JSMin won't choke on common Closure compiler syntaxes (i+ ++j) + * mbstring.func_overload usage is safer + +Version 2.1.2 + * quote characters inside RegExp literals no longer cause exception + +Version 2.1.0 + * JS: preserves IE conditional comments + +Version 1.0.1 (2007-05-05) + * Replaced old JSMin library with a much faster custom implementation. diff --git a/minimee/library/vendor/mrclay/jsmin-php/LICENSE.txt b/minimee/library/vendor/mrclay/jsmin-php/LICENSE.txt new file mode 100644 index 0000000..8f008ad --- /dev/null +++ b/minimee/library/vendor/mrclay/jsmin-php/LICENSE.txt @@ -0,0 +1,26 @@ +Copyright (c) 2008 Ryan Grove +Copyright (c) 2008 Steve Clay +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of this project nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/minimee/library/vendor/mrclay/jsmin-php/composer.json b/minimee/library/vendor/mrclay/jsmin-php/composer.json new file mode 100644 index 0000000..fb00b97 --- /dev/null +++ b/minimee/library/vendor/mrclay/jsmin-php/composer.json @@ -0,0 +1,34 @@ +{ + "name": "mrclay/jsmin-php", + "type": "library", + "description": "Provides a modified port of Douglas Crockford's jsmin.c, which removes unnecessary whitespace from JavaScript files.", + "keywords": ["jsmin", "minify", "compress"], + "homepage": "https://github.com/mrclay/jsmin-php/", + "license": "MIT", + "authors": [ + { + "name": "Stephen Clay", + "email": "steve@mrclay.org", + "role": "Developer" + }, + { + "name": "Ryan Grove", + "email": "ryan@wonko.com", + "role": "Developer" + } + ], + "support": { + "email": "minify@googlegroups.com", + "issues": "https://github.com/mrclay/jsmin-php/issues" + }, + "require": { + "php": ">=5.3.0", + "ext-pcre": "*" + }, + "require-dev": { + "phpunit/phpunit": "4.2" + }, + "autoload": { + "psr-0": {"JSMin\\": "src/"} + } +} diff --git a/minimee/library/vendor/mrclay/jsmin-php/phpunit.xml.dist b/minimee/library/vendor/mrclay/jsmin-php/phpunit.xml.dist new file mode 100644 index 0000000..37f3bad --- /dev/null +++ b/minimee/library/vendor/mrclay/jsmin-php/phpunit.xml.dist @@ -0,0 +1,27 @@ + + + + + + ./tests/ + + + + + + ./ + + ./tests + ./vendor + + + + \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/jsmin-php/src/JSMin/JSMin.php b/minimee/library/vendor/mrclay/jsmin-php/src/JSMin/JSMin.php new file mode 100644 index 0000000..4fc320b --- /dev/null +++ b/minimee/library/vendor/mrclay/jsmin-php/src/JSMin/JSMin.php @@ -0,0 +1,454 @@ + + * $minifiedJs = JSMin::minify($js); + * + * + * This is a modified port of jsmin.c. Improvements: + * + * Does not choke on some regexp literals containing quote characters. E.g. /'/ + * + * Spaces are preserved after some add/sub operators, so they are not mistakenly + * converted to post-inc/dec. E.g. a + ++b -> a+ ++b + * + * Preserves multi-line comments that begin with /*! + * + * PHP 5 or higher is required. + * + * Permission is hereby granted to use this version of the library under the + * same terms as jsmin.c, which has the following license: + * + * -- + * Copyright (c) 2002 Douglas Crockford (www.crockford.com) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * The Software shall be used for Good, not Evil. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * -- + * + * @package JSMin + * @author Ryan Grove (PHP port) + * @author Steve Clay (modifications + cleanup) + * @author Andrea Giammarchi (spaceBeforeRegExp) + * @copyright 2002 Douglas Crockford (jsmin.c) + * @copyright 2008 Ryan Grove (PHP port) + * @license http://opensource.org/licenses/mit-license.php MIT License + * @link http://code.google.com/p/jsmin-php/ + */ +class JSMin { + const ORD_LF = 10; + const ORD_SPACE = 32; + const ACTION_KEEP_A = 1; + const ACTION_DELETE_A = 2; + const ACTION_DELETE_A_B = 3; + + protected $a = "\n"; + protected $b = ''; + protected $input = ''; + protected $inputIndex = 0; + protected $inputLength = 0; + protected $lookAhead = null; + protected $output = ''; + protected $lastByteOut = ''; + protected $keptComment = ''; + + /** + * Minify Javascript. + * + * @param string $js Javascript to be minified + * + * @return string + */ + public static function minify($js) + { + $jsmin = new JSMin($js); + return $jsmin->min(); + } + + /** + * @param string $input + */ + public function __construct($input) + { + $this->input = $input; + } + + /** + * Perform minification, return result + * + * @return string + */ + public function min() + { + if ($this->output !== '') { // min already run + return $this->output; + } + + $mbIntEnc = null; + if (function_exists('mb_strlen') && ((int)ini_get('mbstring.func_overload') & 2)) { + $mbIntEnc = mb_internal_encoding(); + mb_internal_encoding('8bit'); + } + + if (isset($this->input[0]) && $this->input[0] === "\xef") { + $this->input = substr($this->input, 3); + } + + $this->input = str_replace("\r\n", "\n", $this->input); + $this->inputLength = strlen($this->input); + + $this->action(self::ACTION_DELETE_A_B); + + while ($this->a !== null) { + // determine next command + $command = self::ACTION_KEEP_A; // default + if ($this->a === ' ') { + if (($this->lastByteOut === '+' || $this->lastByteOut === '-') + && ($this->b === $this->lastByteOut)) { + // Don't delete this space. If we do, the addition/subtraction + // could be parsed as a post-increment + } elseif (! $this->isAlphaNum($this->b)) { + $command = self::ACTION_DELETE_A; + } + } elseif ($this->a === "\n") { + if ($this->b === ' ') { + $command = self::ACTION_DELETE_A_B; + + // in case of mbstring.func_overload & 2, must check for null b, + // otherwise mb_strpos will give WARNING + } elseif ($this->b === null + || (false === strpos('{[(+-!~', $this->b) + && ! $this->isAlphaNum($this->b))) { + $command = self::ACTION_DELETE_A; + } + } elseif (! $this->isAlphaNum($this->a)) { + if ($this->b === ' ' + || ($this->b === "\n" + && (false === strpos('}])+-"\'', $this->a)))) { + $command = self::ACTION_DELETE_A_B; + } + } + $this->action($command); + } + $this->output = trim($this->output); + + if ($mbIntEnc !== null) { + mb_internal_encoding($mbIntEnc); + } + return $this->output; + } + + /** + * ACTION_KEEP_A = Output A. Copy B to A. Get the next B. + * ACTION_DELETE_A = Copy B to A. Get the next B. + * ACTION_DELETE_A_B = Get the next B. + * + * @param int $command + * @throws UnterminatedRegExpException|UnterminatedStringException + */ + protected function action($command) + { + // make sure we don't compress "a + ++b" to "a+++b", etc. + if ($command === self::ACTION_DELETE_A_B + && $this->b === ' ' + && ($this->a === '+' || $this->a === '-')) { + // Note: we're at an addition/substraction operator; the inputIndex + // will certainly be a valid index + if ($this->input[$this->inputIndex] === $this->a) { + // This is "+ +" or "- -". Don't delete the space. + $command = self::ACTION_KEEP_A; + } + } + + switch ($command) { + case self::ACTION_KEEP_A: // 1 + $this->output .= $this->a; + + if ($this->keptComment) { + $this->output = rtrim($this->output, "\n"); + $this->output .= $this->keptComment; + $this->keptComment = ''; + } + + $this->lastByteOut = $this->a; + + // fallthrough intentional + case self::ACTION_DELETE_A: // 2 + $this->a = $this->b; + if ($this->a === "'" || $this->a === '"') { // string literal + $str = $this->a; // in case needed for exception + for(;;) { + $this->output .= $this->a; + $this->lastByteOut = $this->a; + + $this->a = $this->get(); + if ($this->a === $this->b) { // end quote + break; + } + if ($this->isEOF($this->a)) { + $byte = $this->inputIndex - 1; + throw new UnterminatedStringException( + "JSMin: Unterminated String at byte {$byte}: {$str}"); + } + $str .= $this->a; + if ($this->a === '\\') { + $this->output .= $this->a; + $this->lastByteOut = $this->a; + + $this->a = $this->get(); + $str .= $this->a; + } + } + } + + // fallthrough intentional + case self::ACTION_DELETE_A_B: // 3 + $this->b = $this->next(); + if ($this->b === '/' && $this->isRegexpLiteral()) { + $this->output .= $this->a . $this->b; + $pattern = '/'; // keep entire pattern in case we need to report it in the exception + for(;;) { + $this->a = $this->get(); + $pattern .= $this->a; + if ($this->a === '[') { + for(;;) { + $this->output .= $this->a; + $this->a = $this->get(); + $pattern .= $this->a; + if ($this->a === ']') { + break; + } + if ($this->a === '\\') { + $this->output .= $this->a; + $this->a = $this->get(); + $pattern .= $this->a; + } + if ($this->isEOF($this->a)) { + throw new UnterminatedRegExpException( + "JSMin: Unterminated set in RegExp at byte " + . $this->inputIndex .": {$pattern}"); + } + } + } + + if ($this->a === '/') { // end pattern + break; // while (true) + } elseif ($this->a === '\\') { + $this->output .= $this->a; + $this->a = $this->get(); + $pattern .= $this->a; + } elseif ($this->isEOF($this->a)) { + $byte = $this->inputIndex - 1; + throw new UnterminatedRegExpException( + "JSMin: Unterminated RegExp at byte {$byte}: {$pattern}"); + } + $this->output .= $this->a; + $this->lastByteOut = $this->a; + } + $this->b = $this->next(); + } + // end case ACTION_DELETE_A_B + } + } + + /** + * @return bool + */ + protected function isRegexpLiteral() + { + if (false !== strpos("(,=:[!&|?+-~*{;", $this->a)) { + // we can't divide after these tokens + return true; + } + + // check if first non-ws token is "/" (see starts-regex.js) + $length = strlen($this->output); + if ($this->a === ' ' || $this->a === "\n") { + if ($length < 2) { // weird edge case + return true; + } + } + + // if the "/" follows a keyword, it must be a regexp, otherwise it's best to assume division + + $subject = $this->output . trim($this->a); + if (!preg_match('/(?:case|else|in|return|typeof)$/', $subject, $m)) { + // not a keyword + return false; + } + + // can't be sure it's a keyword yet (see not-regexp.js) + $charBeforeKeyword = substr($subject, 0 - strlen($m[0]) - 1, 1); + if ($this->isAlphaNum($charBeforeKeyword)) { + // this is really an identifier ending in a keyword, e.g. "xreturn" + return false; + } + + // it's a regexp. Remove unneeded whitespace after keyword + if ($this->a === ' ' || $this->a === "\n") { + $this->a = ''; + } + + return true; + } + + /** + * Return the next character from stdin. Watch out for lookahead. If the character is a control character, + * translate it to a space or linefeed. + * + * @return string + */ + protected function get() + { + $c = $this->lookAhead; + $this->lookAhead = null; + if ($c === null) { + // getc(stdin) + if ($this->inputIndex < $this->inputLength) { + $c = $this->input[$this->inputIndex]; + $this->inputIndex += 1; + } else { + $c = null; + } + } + if (ord($c) >= self::ORD_SPACE || $c === "\n" || $c === null) { + return $c; + } + if ($c === "\r") { + return "\n"; + } + return ' '; + } + + /** + * Does $a indicate end of input? + * + * @param string $a + * @return bool + */ + protected function isEOF($a) + { + return ord($a) <= self::ORD_LF; + } + + /** + * Get next char (without getting it). If is ctrl character, translate to a space or newline. + * + * @return string + */ + protected function peek() + { + $this->lookAhead = $this->get(); + return $this->lookAhead; + } + + /** + * Return true if the character is a letter, digit, underscore, dollar sign, or non-ASCII character. + * + * @param string $c + * + * @return bool + */ + protected function isAlphaNum($c) + { + return (preg_match('/^[a-z0-9A-Z_\\$\\\\]$/', $c) || ord($c) > 126); + } + + /** + * Consume a single line comment from input (possibly retaining it) + */ + protected function consumeSingleLineComment() + { + $comment = ''; + while (true) { + $get = $this->get(); + $comment .= $get; + if (ord($get) <= self::ORD_LF) { // end of line reached + // if IE conditional comment + if (preg_match('/^\\/@(?:cc_on|if|elif|else|end)\\b/', $comment)) { + $this->keptComment .= "/{$comment}"; + } + return; + } + } + } + + /** + * Consume a multiple line comment from input (possibly retaining it) + * + * @throws UnterminatedCommentException + */ + protected function consumeMultipleLineComment() + { + $this->get(); + $comment = ''; + for(;;) { + $get = $this->get(); + if ($get === '*') { + if ($this->peek() === '/') { // end of comment reached + $this->get(); + if (0 === strpos($comment, '!')) { + // preserved by YUI Compressor + if (!$this->keptComment) { + // don't prepend a newline if two comments right after one another + $this->keptComment = "\n"; + } + $this->keptComment .= "/*!" . substr($comment, 1) . "*/\n"; + } else if (preg_match('/^@(?:cc_on|if|elif|else|end)\\b/', $comment)) { + // IE conditional + $this->keptComment .= "/*{$comment}*/"; + } + return; + } + } elseif ($get === null) { + throw new UnterminatedCommentException( + "JSMin: Unterminated comment at byte {$this->inputIndex}: /*{$comment}"); + } + $comment .= $get; + } + } + + /** + * Get the next character, skipping over comments. Some comments may be preserved. + * + * @return string + */ + protected function next() + { + $get = $this->get(); + if ($get === '/') { + switch ($this->peek()) { + case '/': + $this->consumeSingleLineComment(); + $get = "\n"; + break; + case '*': + $this->consumeMultipleLineComment(); + $get = ' '; + break; + } + } + return $get; + } +} diff --git a/minimee/library/vendor/mrclay/jsmin-php/src/JSMin/UnterminatedCommentException.php b/minimee/library/vendor/mrclay/jsmin-php/src/JSMin/UnterminatedCommentException.php new file mode 100644 index 0000000..c0bd2f7 --- /dev/null +++ b/minimee/library/vendor/mrclay/jsmin-php/src/JSMin/UnterminatedCommentException.php @@ -0,0 +1,6 @@ +assertEquals($expected, $actual, 'Running Minify Test: ' . $testName); + } + + public function testWhitespace() { + $this->assertEquals("hello;", JSMin::minify("\r\n\r\nhello;\r\n")); + } + + public function testBomRemoval() { + $this->assertEquals("hello;", JSMin::minify("\xEF\xBB\xBFhello;")); + } + + public function testFuncOverload() { + if (!function_exists('mb_strlen') || !((int)ini_get('mbstring.func_overload') & 2)) { + $this->markTestIncomplete('Cannot be tested unless mbstring.func_overload is used'); + return; + } + + $input = 'function(s) { return /^[£$€?.]/.test(s); }'; + $expected = 'function(s){return/^[£$€?.]/.test(s);}'; + $this->assertEquals($expected, JSMin::minify($input)); + } + + /** + * @dataProvider exceptionProvider + */ + public function testExpections($input, $label, $expClass, $expMessage) { + $eClass = $eMsg = ''; + try { + JSMin::minify($input); + } catch (\Exception $e) { + $eClass = get_class($e); + $eMsg = $e->getMessage(); + } + $this->assertTrue( + $eClass === $expClass && $eMsg === $expMessage, + 'JSMin : throw on ' . $label + ); + } + + public function exceptionProvider() { + return array( + array( + '"Hello' + ,'Unterminated String' + ,'JSMin\\UnterminatedStringException' + ,"JSMin: Unterminated String at byte 5: \"Hello"), + array( + "return /regexp\n}" + ,'Unterminated RegExp' + ,'JSMin\\UnterminatedRegExpException' + ,"JSMin: Unterminated RegExp at byte 14: /regexp\n"), + array( + "return/regexp\n}" + ,'Unterminated RegExp' + ,'JSMin\\UnterminatedRegExpException' + ,"JSMin: Unterminated RegExp at byte 13: /regexp\n"), + array( + ";return/regexp\n}" + ,'Unterminated RegExp' + ,'JSMin\\UnterminatedRegExpException' + ,"JSMin: Unterminated RegExp at byte 14: /regexp\n"), + array( + ";return /regexp\n}" + ,'Unterminated RegExp' + ,'JSMin\\UnterminatedRegExpException' + ,"JSMin: Unterminated RegExp at byte 15: /regexp\n"), + array( + "typeof/regexp\n}" + ,'Unterminated RegExp' + ,'JSMin\\UnterminatedRegExpException' + ,"JSMin: Unterminated RegExp at byte 13: /regexp\n"), + array( + "/* Comment " + ,'Unterminated Comment' + ,'JSMin\\UnterminatedCommentException' + ,"JSMin: Unterminated comment at byte 11: /* Comment "), + ); + } + + /** + * This function loads all of the test cases from the specified group. + * Groups are created simply by populating the appropriate directories: + * + * /tests/Resources/GROUPNAME/input/ + * /tests/Resources/GROUPNAME/output/ + * + * Each test case should have two identically named files, with the raw + * javascript going in the test folder and the expected results to be in + * the output folder. + * + * @param $group string + * @return array + */ + public function getTestFiles($group) + { + $baseDir = __DIR__ . '/../../Resources/' . $group . '/'; + $testDir = $baseDir . 'input/'; + $expectDir = $baseDir . 'expected/'; + $actualDir = $baseDir . 'actual/'; + + $returnData = array(); + + $testFiles = scandir($testDir); + foreach ($testFiles as $testFile) { + if (substr($testFile, -3) !== '.js' || !file_exists(($expectDir . $testFile))) { + continue; + } + + $testInput = file_get_contents($testDir . $testFile); + $expectedOutput = file_get_contents($expectDir . $testFile); + $actualFile = $actualDir . $testFile; + + $returnData[] = array($testFile, $testInput, $expectedOutput, $actualFile); + } + + return $returnData; + } + + public function minifyProvider() + { + return $this->getTestFiles('minify'); + } +} diff --git a/minimee/library/vendor/mrclay/jsmin-php/tests/bootstrap.php b/minimee/library/vendor/mrclay/jsmin-php/tests/bootstrap.php new file mode 100644 index 0000000..b3d9bbc --- /dev/null +++ b/minimee/library/vendor/mrclay/jsmin-php/tests/bootstrap.php @@ -0,0 +1 @@ +" . h($e->getMessage()) . "

"; + + if (0 !== strpos(get_class($e), 'JSMin\\Unterminated') + || !preg_match('~byte (\d+)~', $e->getMessage(), $m)) { + return $msg; + } + + $msg .= "
";
+    if ($m[1] > 200) {
+        $msg .= h(substr($input, ($m[1] - 200), 200));
+    } else {
+        $msg .= h(substr($input, 0, $m[1]));
+    }
+    $highlighted = isset($input[$m[1]]) ? h($input[$m[1]]) : '␄';
+    if ($highlighted === "\n") {
+        $highlighted = "⏎\n";
+    }
+    $msg .= "$highlighted";
+    $msg .= h(substr($input, $m[1] + 1, 200)) . "
"; + + return $msg; +} + +/** + * Draw page + * + * @param array $vars + */ +function sendPage($vars) { + header('Content-Type: text/html; charset=utf-8'); + + ?> + JSMin + + Bytes in{$vars['inBytes']} (after line endings normalized to \\n) + Bytes out{$vars['outBytes']} (reduced " . round(100 - (100 * $vars['outBytes'] / $vars['inBytes'])) . "%) + Time (s)" . round($vars['time'], 5) . " + + "; + } + ?> +
+

+

+
=5.2.1", "ext-pcre": "*" }, - "autoload": { - "classmap": ["min/lib/"] + "require-dev": { + "tubalmartin/cssmin": "~2.4.8" + }, + "suggest": { + "tubalmartin/cssmin": "Support minify with CSSMin (YUI PHP port)" } } diff --git a/minimee/library/vendor/mrclay/minify/docs/AlternateFileLayouts.wiki.md b/minimee/library/vendor/mrclay/minify/docs/AlternateFileLayouts.wiki.md new file mode 100644 index 0000000..0f76a46 --- /dev/null +++ b/minimee/library/vendor/mrclay/minify/docs/AlternateFileLayouts.wiki.md @@ -0,0 +1,29 @@ +If you test sites in a subdirectory (e.g. `http://localhost/testSite/`) rather than a virtualhost, then you'll need to adjust the way you use Minify to rewrite CSS correctly. + +1. Place the following in `min/config.php`: +``` +// Set the document root to be the path of the "site root" +$min_documentRoot = substr(__FILE__, 0, -15); + +// Set $sitePrefix to the path of the site from the webserver's real docroot +list($sitePrefix) = explode('/min/index.php', $_SERVER['SCRIPT_NAME'], 2); + +// Prepend $sitePrefix to the rewritten URIs in CSS files +$min_symlinks['//' . ltrim($sitePrefix, '/')] = $min_documentRoot; +``` + +2. In the HTML, make your Minify URIs document-relative (e.g. `min/f=js/file.js` and `../min/f=js/file.js`), not root-relative. + +Now the `min` application should operate correctly from a subdirectory and will serve files relative to your "site" root rather than the document root. E.g. + +| **environment** | production | testing | +|:----------------|:-----------|:--------| +| **server document root** | `/home/mysite_com/www` | `/var/www` | +| **`$min_documentRoot` ("site root")** | `/home/mysite_com/www` | `/var/www/testSite` | +| **`$sitePrefix`** | (empty) | `/testSite` | +| **Minify URL** | `http://mysite.com/min/f=js/file1.js` | `http://localhost/testSite/min/f=js/file1.js` | +| **file served** | `/home/mysite_com/www/js/file1.js` | `/var/www/testSite/js/file1.js` | + +Caveats: + * This configuration may break the Builder application (located at `/min/builder/`) used to create Minify URIs, but you can still [create them by hand](http://code.google.com/p/minify/source/browse/tags/release_2.1.3/min/README.txt#18). + * Make sure you don't reset `$min_symlinks` to a different value lower in your config file. \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/docs/BuilderApp.wiki.md b/minimee/library/vendor/mrclay/minify/docs/BuilderApp.wiki.md new file mode 100644 index 0000000..00370c9 --- /dev/null +++ b/minimee/library/vendor/mrclay/minify/docs/BuilderApp.wiki.md @@ -0,0 +1,9 @@ +Minify ships with "Builder", a simple Javascript app for constructing URIs to use with Minify. ([screenshots of the 2.1.0 version](http://www.mrclay.org/index.php/2008/09/19/minify-21-on-mrclayorg/)) + +It also does some run-time checks of your PHP and Minify configuration to look for problematic settings like [auto-encoding](http://code.google.com/p/minify/wiki/CommonProblems#Output_is_distorted/random_chars). + +After installation, this is found at **`http://example.com/min/builder/`** + +You must enable it by editing `min/config.php` and setting `$min_enableBuilder = true;` + +After use, you should disable it by resetting `$min_enableBuilder = false;` \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/docs/CommonProblems.wiki.md b/minimee/library/vendor/mrclay/minify/docs/CommonProblems.wiki.md new file mode 100644 index 0000000..c8b8c71 --- /dev/null +++ b/minimee/library/vendor/mrclay/minify/docs/CommonProblems.wiki.md @@ -0,0 +1,129 @@ +If this page doesn't help, please post a question on our [Google group](http://groups.google.com/group/minify). + +## URIs are re-written incorrectly in CSS output + +See UriRewriting. + +## Files aren't cached in IE6 + +**Use Minify 2.1.4+**. + +For Minify 2.1.3 and below: + + 1. Open `/min/lib/HTTP/Encoder.php` + 1. On line [62](http://code.google.com/p/minify/source/browse/tags/release_2.1.3/min/lib/HTTP/Encoder.php#62), change `false` to `true`. + +## Builder Fails / 400 Errors + +**Use Minify 2.1.4+**, and you can see the cause of 400 responses using FirePHP (See [Debugging](Debugging.md)). + +## PHP/Apache crashes + +[PCRE (which provides regular expressions) commonly crashes PHP](https://www.google.com/search?q=pcre+php+crash) and this is nearly impossible to solve in PHP code. Things to try: + + * Raise Apache's [ThreadStackSize](http://stackoverflow.com/a/7597506/3779) + * In [php.ini](http://php.net/manual/en/pcre.configuration.php) raise `pcre.backtrack_limit` and `pcre.recursion_limit` to 1000000. These will allow processing longer strings, but also require a larger stack size. + * Try [this CSSmin configuration](http://code.google.com/p/minify/wiki/CookBook#CSSmin_PHP_port) + +## Dealing with Javascript errors + +Short answer: **use Minify 2.1.4+, use a pre-compressed version of your file, and rename it `*.min.js` or `*-min.js`**. By default Minify won't try to minify these files (but will still gzip them). The [Compressor Rater](http://compressorrater.thruhere.net/) is handy for compressing files individually. + +If the error is in your code, enable [debug mode](Debugging.md) while debugging your code in Firebug or your favorite browser's Javascript debugger. This will insert comments to allow you to keep track of the individual source locations in the combined file. + +If you have Java on your web host, you can use the [wrapper for YUI Compressor](http://code.google.com/p/minify/source/browse/min/lib/Minify/YUICompressor.php) instead of JSMin. [This thread](http://groups.google.com/group/minify/browse_thread/thread/f12f25f27e1256fe) shows how a user has done this. + +## Javascript isn't being minified + +If the filename ends with **`-min.js`** or **`.min.js`**, Minify will assume the file is already compressed and just combine it with any other files. + +### Scriptaculous + +Scriptaculous 1.8.2 (and probably all 1.x) has an [autoloader script](http://github.com/madrobby/scriptaculous/blob/4b49fd8884920d4ee760b0194431f4f433f878df/src/scriptaculous.js#L54) that requires files to be in a particular place on disk. To serve Scriptaculous modules with Minify, just serve `prototype.js` and the individual support files (e.g. `dragdrop.js`, `effects.js`) and the library should work fine. E.g.: + +``` + + + +``` + +## Server cache files won't update + +If you upload files using [Coda or Transmit](http://groups.google.com/group/coda-users/browse_thread/thread/572d2dc315ec02e7/) or from a Windows PC to a non-Windows server, your new files may end up with the wrong `mtime` (timestamp) on the server, confusing the cache system. + +Setting the [$min\_uploaderHoursBehind option](https://github.com/mrclay/minify/blob/master/min/config.php#L171) in `config.php` can compensate for this. + +WinSCP has a [Daylight Saving Time option](http://winscp.net/eng/docs/ui_login_environment#daylight_saving_time) that can prevent this issue. + +This can also occur if your files are changed, and the `mtime` is set in the past (e.g. via a `git checkout` operation). If so you'll have to `touch` the changed files or use some other method to make the `mtime` current. + +## Can't see changes in browser + +Generally changes aren't seen because a) the browser is refusing to send a new request, or b) the server doesn't recognize that your source files have been modified after the server cache was created. + +First, place the Minify URL directly in the address bar and refresh. + +If a change is not seen, verify that the server cache file is being updated. + +## Disable Caching + +If you'd like to temporarily disable the cache without using [debug mode](Debugging.md), place these settings at the end of `config.php`: +``` +// disable server caching +$min_cachePath = null; +// prevent client caching +$min_serveOptions['maxAge'] = 0; +$min_serveOptions['lastModifiedTime'] = $_SERVER['REQUEST_TIME']; +``` +**Don't do this on a production server!** Minify will have to combine, minify, and gzencode on every request. + +## Character Encodings + +_Please_ use UTF-8. The string processing may work on encodings like Windows-1251 but will certainly fail on radically different ones like UTF-16. + +If you consistently use a different encoding, in `config.php` set `$min_serveOptions['contentTypeCharset']` to this encoding to send it in the Content-Type header. + +Otherwise, set it to `false` to remove it altogether. You can still, in CSS, use the [@charset](http://www.w3.org/TR/CSS2/syndata.html#x50) directive to tell the browser the encoding, but (a) it must appear first and (b) shouldn't appear later in the output (and Minify won't enforce this). + +Moral? To minimize problems, use UTF-8 and remove any `@charset` directives from your CSS. + +## @imports can appear in invalid locations in combined CSS files + +If you combine CSS files, @import declarations can appear after CSS rules, invalidating the stylesheet. As of version 2.1.2, if Minify detects this, it will prepend a warning to the output CSS file. To resolve this, you can either move your @import statements within your files, or enable the option 'bubbleCssImports'. + +## Debug mode can cause a Javascript error + +This issue was resolved in version 2.1.2. + +Debug mode adds line numbers in comments. Unfortunately, in versions <= 2.1.1, if the source file had a string or regex containing (what looks like) a C-style comment token, the algorithm was confused and the injected comments caused a syntax error. + +## Minification can cause a Javascript error + +This issue was resolved in version 2.1.2. + +In rare instances the [JSMin](http://code.google.com/p/minify/source/browse/tags/release_2.1.1/min/lib/JSMin.php#14) algorithm in versions <= 2.1.1 could be confused by regexes in certain contexts and throw an exception. The workaround was to simply wrap the expression in parenthesis. E.g. +``` +// in 2.1.1 and previous +return /'/; // JSMin throws error +return (/'/); // no error +``` + +## Output is distorted/random chars + +What you're seeing is a mismatch between the content encoding the browser expects and what it receives. + +The usual problem is that a global PHP or web server configuration is causing the output of PHP scripts to be automatically gzipped. Since Minify already outputs gzipped content, the browser receives "double encoded" content which it interprets as noise. The Builder app in 2.1.4 sometimes can tell you which component is causing the auto-encoding. + +## Can't specify more than 10 files via URL + +Use Minify 2.1.4+. Before there was a setting to adjust the maximum allowed. + +## Directory Listing Denied + +This may also appear as "Virtual Directory does not allow contents to be listed". Minify requires that the URI `/min/` (a request for a directory listing) result in the execution of `/min/index.php`. On Apache, you would make sure `index.php` is listed in the [DirectoryIndex directive](http://httpd.apache.org/docs/2.0/mod/mod_dir.html#directoryindex). IIS calls this the [Default Document](http://www.iis.net/ConfigReference/system.webServer/defaultDocument). + +## See Also + + * [Debugging](Debugging.md) diff --git a/minimee/library/vendor/mrclay/minify/docs/ComponentClasses.wiki.md b/minimee/library/vendor/mrclay/minify/docs/ComponentClasses.wiki.md new file mode 100644 index 0000000..4325405 --- /dev/null +++ b/minimee/library/vendor/mrclay/minify/docs/ComponentClasses.wiki.md @@ -0,0 +1,14 @@ +# PHP5 Component Classes + +| **Class** | **Functionality** | +|:----------|:------------------| +| [Minify](http://code.google.com/p/minify/source/browse/min/lib/Minify.php) | Combine, process, and serve pieces of content (usually CSS/JS files). Almost all behavior is configurable including request handling (via [controllers](http://code.google.com/p/minify/source/browse/min/lib/Minify/Controller/)), HTTP headers & encoding, caching ([file/APC/memcached](http://code.google.com/p/minify/source/browse/min/lib/Minify/Cache/)), and compression functions (by default, the classes below) | +| [JSMin](http://code.google.com/p/minify/source/browse/min/lib/JSMin.php) | A port of [jsmin.c](http://www.crockford.com/javascript/jsmin.html), extended to preserve some multi-line comments and IE conditional comments (since these occasionally have their [uses](http://dean.edwards.name/weblog/2007/03/sniff/)). | +| [Minify\_CSS](http://code.google.com/p/minify/source/browse/min/lib/Minify/CSS.php) | Uses the two classes below to minify CSS and optionally rewrite URIs. | +| [Minify\_CSS\_Compressor](http://code.google.com/p/minify/source/browse/min/lib/Minify/CSS/Compressor.php) | Agressively minifies CSS. Includes a thorough [test suite](http://code.google.com/p/minify/source/browse/min_unit_tests/_test_files/css/) to make sure most common [hacks](http://code.google.com/p/minify/source/browse/min_unit_tests/_test_files/css/hacks.css) and [unusual syntaxes](http://code.google.com/p/minify/source/browse/min_unit_tests/_test_files/css/unusual_strings.css) are preserved. | +| [Minify\_CSS\_UriRewriter](http://code.google.com/p/minify/source/browse/min/lib/Minify/CSS/UriRewriter.php) | In CSS files, rewrites file-relative URIs as root-relative. With [test suite](http://code.google.com/p/minify/source/browse/min_unit_tests/_test_files/css_uriRewriter/) | +| [Minify\_HTML](http://code.google.com/p/minify/source/browse/min/lib/Minify/HTML.php) | Agressively minifies (X)HTML markup. Preserves TEXTAREA/PRE contents, can invoke minifiers on STYLE and SCRIPT blocks, and wraps content in CDATA blocks in XHTML when necessary. Includes [test suite](http://code.google.com/p/minify/source/browse/min_unit_tests/_test_files/html/). | +| [Minify\_YUICompressor](http://code.google.com/p/minify/source/browse/min/lib/Minify/YUICompressor.php) | (Experimental) PHP wrapper for invoking the Java-based [YUI Compressor](http://developer.yahoo.com/yui/compressor/) | +| [Minify\_ImportProcessor](http://code.google.com/p/minify/source/browse/min/lib/Minify/ImportProcessor.php) | Linearize a CSS/JS file by including content specified by CSS import declarations. In CSS files, relative URIs are fixed. This has a test suite but should be considered "experimental". | +| [HTTP\_Encoder](http://code.google.com/p/minify/source/browse/min/lib/HTTP/Encoder.php) | Applies HTTP encoding to content. Can serve content with conditional encoding based on Accept-Encoding headers (parsed according to [HTTP spec](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html)) and known browser bugs. | +| [HTTP\_ConditionalGet](http://code.google.com/p/minify/source/browse/min/lib/HTTP/ConditionalGet.php) | Implements HTTP conditional GETs via a simple, flexible API. | \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/docs/CookBook.wiki.md b/minimee/library/vendor/mrclay/minify/docs/CookBook.wiki.md new file mode 100644 index 0000000..975ddfc --- /dev/null +++ b/minimee/library/vendor/mrclay/minify/docs/CookBook.wiki.md @@ -0,0 +1,157 @@ +Unless mentioned, all the following snippets go in `min/config.php`. + +## Faster Cache Performance + +By default, Minify uses [Minify\_Cache\_File](http://code.google.com/p/minify/source/browse/tags/release_2.1.3/min/lib/Minify/Cache/File.php). It uses `readfile`/`fpassthru` to improve performance over most file-based systems, but it's still file IO. I haven't done comparative benchmarks on all three, but APC/Memcache _should_ be faster. In all cases, Minify cache ids begin with `"minify_"`. + +### APC + +``` +require 'lib/Minify/Cache/APC.php'; +$min_cachePath = new Minify_Cache_APC(); +``` + +### Memcache + +You must create and connect your Memcache object then pass it to `Minify_Cache_Memcache`'s constructor. +``` +require 'lib/Minify/Cache/Memcache.php'; +$memcache = new Memcache; +$memcache->connect('localhost', 11211); +$min_cachePath = new Minify_Cache_Memcache($memcache); +``` + +### Zend Platform + +Patrick van Dissel has contributed a [cache adapter for Zend Platform](http://code.google.com/p/minify/issues/detail?id=167). + +## Closure Compiler API Wrapper + +An [experimental wrapper for Google's closure compiler API](https://github.com/mrclay/minify/blob/master/min/lib/Minify/JS/ClosureCompiler.php) is available for compressing Javascript. If the API fails for any reason, JSMin is used as the default backup minifier. +``` +$min_serveOptions['minifiers']['application/x-javascript'] = array('Minify_JS_ClosureCompiler', 'minify'); +``` + +## YUICompressor + +If your host can execute Java, you can use Minify's YUI Compressor wrapper. You'll need the latest [yuicompressor-x.x.x.jar](http://yuilibrary.com/downloads/#yuicompressor) and a temp directory. Place the .jar in `min/lib`, then: +``` +function yuiJs($js) { + Minify_YUICompressor::$jarFile = __DIR__ . '/lib/yuicompressor-x.x.x.jar'; + Minify_YUICompressor::$tempDir = '/tmp'; + return Minify_YUICompressor::minifyJs($js); +} +$min_serveOptions['minifiers']['application/x-javascript'] = 'yuiJs'; +``` + +To use YUIC for CSS with fixed URIs: + +``` +function yuiCss($css, $options) { + Minify_YUICompressor::$jarFile = __DIR__ . '/lib/yuicompressor-x.x.x.jar'; + Minify_YUICompressor::$tempDir = '/tmp'; + $css = Minify_YUICompressor::minifyCss($css); + + $css = Minify_CSS_UriRewriter::rewrite( + $css + ,$options['currentDir'] + ,isset($options['docRoot']) ? $options['docRoot'] : $_SERVER['DOCUMENT_ROOT'] + ,isset($options['symlinks']) ? $options['symlinks'] : array() + ); + return $css; +} +$min_serveOptions['minifiers']['text/css'] = 'yuiCss'; +``` + +### CSSmin PHP port + +Minify has added Túbal Martín's [PHP port](https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port/blob/master/cssmin.php) of the YUI Compressor's CSSmin. While it is not completely integrated yet, you may try it out: + +``` +function yuiCssPort($css, $options) { + $compressor = new CSSmin(); + $css = $compressor->run($css, 9999999); + + $css = Minify_CSS_UriRewriter::rewrite( + $css, + $options['currentDir'], + isset($options['docRoot']) ? $options['docRoot'] : $_SERVER['DOCUMENT_ROOT'], + isset($options['symlinks']) ? $options['symlinks'] : array() + ); + return $css; +} +$min_serveOptions['minifiers']['text/css'] = 'yuiCssPort'; +``` + +As of commit [218f37](https://github.com/mrclay/minify/commit/218f37fb44f9be2ea138cf9efb8b7f6dc84bad7f), this is easier: + +``` +$min_serveOptions['minifiers']['text/css'] = array('Minify_CSSmin', 'minify'); +``` + +## JSMin+ + +Tino Zijdel's [JSMin+](http://crisp.tweakblogs.net/blog/6861/jsmin%2B-version-14.html) has resulted in memory usage problems for many users and will be removed from the Minify codebase in 3.0. If you wish to use it, you should download it outside the Minify directory and link to it: + +``` +require '/path/to/jsminplus.php'; +$min_serveOptions['minifiers']['application/x-javascript'] = array('JSMinPlus', 'minify'); +``` + +## Server-specific Options + +You may need to have different options depending on what server you're on. You can do this just how you'd expect: +``` +if ($_SERVER['SERVER_NAME'] == 'myTestingWorkstation') { + // testing + $min_allowDebugFlag = true; + $min_errorLogger = true; + $min_enableBuilder = true; + $min_cachePath = 'c:\\WINDOWS\\Temp'; + $min_serveOptions['maxAge'] = 0; // see changes immediately +} else { + // production + $min_allowDebugFlag = false; + $min_errorLogger = false; + $min_enableBuilder = false; + $min_cachePath = '/tmp'; + $min_serveOptions['maxAge'] = 86400; +} +``` + +## Site in a Subdirectory + +If you test/develop sites in a subdirectory (e.g. `http://localhost/siteA/`), see AlternateFileLayouts. + +## Group-specific Options + +In "group" requests, `$_GET['g']` holds the group key, so you can code based on it: +``` +if (isset($_GET['g'])) { + switch ($_GET['g']) { + case 'js' : $min_serveOptions['maxAge'] = 86400 * 7; + break; + case 'css': $min_serveOptions['contentTypeCharset'] = 'iso-8859-1'; + break; + } +} +``` + +## File/Source-specific Options + +See CustomSource. + +## Processing Output After Minification + +If `$min_serveOptions['postprocessor']` is set to a callback, Minify will pass the minified content to this function with type as the second argument. This allows you to apply changes to your minified content without making your own custom minifier. E.g.: +``` +function postProcess($content, $type) { + if ($type === Minify::TYPE_CSS) { + require_once 'CssColorReplacer.php'; + return CssColorReplacer::process($content); + } + return $content; +} +$min_serveOptions['postprocessor'] = 'postProcess'; +``` +This function is only called once immediately after minification and its output is stored in the cache. \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/docs/CustomServer.wiki.md b/minimee/library/vendor/mrclay/minify/docs/CustomServer.wiki.md new file mode 100644 index 0000000..38dc10b --- /dev/null +++ b/minimee/library/vendor/mrclay/minify/docs/CustomServer.wiki.md @@ -0,0 +1,153 @@ +Please see the UserGuide if you're just getting started with Minify. This guide is for more advanced users who wish to implement an HTTP server in PHP using the [Minify](http://code.google.com/p/minify/source/browse/tags/release_2.1.3/min/lib/Minify.php) class. + +The basic steps are: + + 1. Set up the include\_path + 1. Set up caching + 1. Choose a Minify controller + 1. Set up service and controller options + 1. Handle the request + +## Set up the include\_path + +``` +set_include_path('/path/to/min/lib' . PATH_SEPARATOR . get_include_path()); +``` + +## Set up caching + +Minify ships with [cache classes](http://code.google.com/p/minify/source/browse/tags/release_2.1.3/min/lib/Minify/Cache/) for files, APC, and memcache. Choose one, instantiate it, and pass it to Minify: +``` +require 'Minify.php'; +require 'Minify/Cache/File.php'; + +Minify::setCache(new Minify_Cache_File()); // files in directory chosen by Solar_Dir +``` + +## Choose a Minify controller + +Minify uses controller classes to analyze HTTP requests and determine which sources will make up the response. (The content isn't always returned; if the browser's cache is valid, Minify can return a 304 header instead). + +The [Files](http://code.google.com/p/minify/source/browse/tags/release_2.1.3/min/lib/Minify/Controller/Files.php#9) controller doesn't care about the HTTP request. It just specifies a given array of sources (file paths or [source objects](CustomSource.md)). + +The [Groups](http://code.google.com/p/minify/source/browse/tags/release_2.1.3/min/lib/Minify/Controller/Groups.php) controller uses `$_SERVER['PATH_INFO']` to choose from an array of source lists. There's an example at the end of this page. + +The Files controller is simple, so we'll use it here. + +## Set up service and controller options + +A single array is used for configuration, and is passed to the `Minify::serve` method. `serve` passes it to the controller, which picks off the keys it needs and returns it to `serve` for Minify's own built-in [options](http://code.google.com/p/minify/source/browse/tags/release_2.1.3/min/lib/Minify.php#88). This architecture allows the controller to set defaults for `serve`. + +The Files controller only needs one key: `files`: the array of sources to be combined and served. + +The only `serve` option we'll set is `maxAge` (the default is a measly 1800 seconds). + +``` +$options = array( + // options for the controller + 'files' => array('//js/file1.js', '//js/file2.js', $src), + // options for Minify::serve + 'maxAge' => 86400 +); +``` +(In the above $src is a [Minify\_Source object](CustomSource.md), which allows you to serve non-file content, and/or apply settings to individual sources.) + +## Handle the request + +``` +Minify::serve('Files', $options); +``` + +That's it... + +Minify's default application (sometimes referred to as "min") is implemented this way, in the file [min/index.php](http://code.google.com/p/minify/source/browse/tags/release_2.1.3/min/index.php). Most of its request handling is encapsulated in its own [MinApp](http://code.google.com/p/minify/source/browse/tags/release_2.1.3/min/lib/Minify/Controller/MinApp.php#15) controller. + +# The Request Cycle + +In handling a request, `Minify::serve` does a number of operations: + + 1. creates a controller object, unless you pass it a readymade object (let's call this `$ctrl`). + 1. calls `$ctrl->setupSources($options)`, which analyzes the request and sets `$ctrl->sources` accordingly to an array of Minify\_Source objects. + 1. calls `$ctrl->analyzeSources($options)`, which set `$options` keys for `contentType` and `lastModifiedTime`, based on the sources. + 1. calls `$ctrl->mixInDefaultOptions($options)`, to mix the controller's default options with the user's. + 1. determines if the browser accepts gzip + 1. validates the browser cache (optionally responding with a 304) + 1. validates the server cache. If it needs refreshing, `Minify::_combineMinify` is called, which... + * calls `$source->getContent` on each source + * the content is combined before or after minification (depending on individual source options) + 1. sets up headers to be sent + 1. either returns the headers and content in an array (if `quiet` is set), or sends it to the browser. + +# Using the Groups controller + +``` +$options = array( + 'groups' => array( + 'js' => array('//js/file1.js', '//js/file2.js'), + 'css' => array('//css/file1.css', '//css/file2.css'), + ), +); +Minify::serve('Groups', $options); +``` + +With the above, if you request `http://example.org/myServer.php/css`, Apache will set `$_SERVER['PATH_INFO'] = '/css'` and the sources in `$options['groups']['css']` will be served. + +
\ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/docs/CustomSource.wiki.md b/minimee/library/vendor/mrclay/minify/docs/CustomSource.wiki.md new file mode 100644 index 0000000..c593c32 --- /dev/null +++ b/minimee/library/vendor/mrclay/minify/docs/CustomSource.wiki.md @@ -0,0 +1,138 @@ +In `groupsConfig.php`, usually you specify source file paths using strings like `/path/to/file.js` or `//js/file1.js` (Minify expands this to `"{$_SERVER['DOCUMENT_ROOT']}/js/file1.js"` ). + +Instead of a string, you may substitute a "source object" (an instance of class [Minify\_Source](http://code.google.com/p/minify/source/browse/tags/release_2.1.3/min/lib/Minify/Source.php)). This allows you to customize how minification is applied, and/or pull content from a non-file location (e.g. a URL). + +### Example: filepath + +In the `$spec` array, set the key `filepath` to produce a source based on a file path: +``` +$src1 = new Minify_Source(array( + 'filepath' => '//js/file1.js', +)); +$src2 = new Minify_Source(array( + 'filepath' => '//js/file2.js', +)); + +return array( + 'js' => array($src1, $src2) +); +``` +Note the above is functionally identical to: +``` +return array( + 'js' => array('//js/file1.js', '//js/file2.js') +); +``` + +### Example: Specify a different minifier or none at all + +To change minifier, set `minifier` to a [callback](http://php.net/manual/en/language.pseudo-types.php)`*` or the empty string (for none): + +**`*`Prepare for `groupsConfig.php` to be executed more than once.** (This is likely if you're using the functions in `/min/utils.php`.) In practice this just means making sure functions are conditionally defined if they don't already exist, etc. + +``` +if (! function_exists('myMin')) { + function myMin($js) { + require_once '/path/to/jsminplus.php'; + return JSMinPlus::minify($js); + } +} + +$src1 = new Minify_Source(array( + 'filepath' => '//js/file1.js', + 'minifier' => 'myMin', +)); +$src2 = new Minify_Source(array( + 'filepath' => '//js/file2.js', + 'minifier' => '', // don't compress +)); +``` +In the above, `myMin()` is only called when rebuilding the cache. This way `JSMinPlus.php` is only loaded when needed. + +**`*`Do _not_ use [create\_function](http://php.net/manual/en/function.create-function.php) or anonymous functions for the minifier.** The internal names of these function tend to vary, causing Minify to create lots of [duplicate cache files](http://code.google.com/p/minify/issues/detail?id=138) (and perform poorly). + +## Non-File Sources + +You're not limited to flat js/css files, but without `filepath`, the `$spec` array must contain these keys: + + * **`id `** a unique string id for this source. (e.g. `'my source'`) + * **`getContentFunc `** a [callback](http://php.net/manual/en/language.pseudo-types.php) that returns the content. The function is only called when the cache is rebuilt. + * **`contentType `** `Minify::TYPE_JS` or `Minify::TYPE_CSS` + * **`lastModified `** a timestamp indicating when the content last changed. (If you can't determine this quickly, you can "fake" it using a step function, causing the cache to be periodically rebuilt.) + +### Example: Content from a URL + +Here we want to fetch javascript from a URL. We don't know when it will change, so we use a stepping expression to re-fetch it every midnight: +``` +if (! function_exists('src1_fetch')) { + function src1_fetch() { + return file_get_contents('http://example.org/javascript.php'); + } +} +$src1 = new Minify_Source(array( + 'id' => 'source1', + 'getContentFunc' => 'src1_fetch', + 'contentType' => Minify::TYPE_JS, + 'lastModified' => ($_SERVER['REQUEST_TIME'] - $_SERVER['REQUEST_TIME'] % 86400), +)); +``` + +If you know that the URL content only depends on a few local files, you can use the maximum of their `mtime`s as the `lastModified` key: +``` +... +$src1 = new Minify_Source(array( + 'id' => 'source1', + 'getContentFunc' => 'src1_fetch', + 'contentType' => Minify::TYPE_JS, + 'lastModified' => max( + filemtime('/path/to/javascript.php') + ,filemtime('/path/to/javascript_input.css') + ), +)); +``` + +## Performance Considerations + +Be aware that all the code you put in groupsConfig.php will be evaluated upon every request like `/min/g=...`, so make it as light as possible. + +If you wish to keep groupsConfig.php "clean", you can alternately create a separate PHP script that manually sets up sources, caching, options, and calls Minify::serve(). +``` + 'source1' + ,'getContentFunc' => 'src1_fetch' + ,'contentType' => Minify::TYPE_JS + ,'lastModified' => max( + filemtime('/path/to/javascript.php') + ,filemtime('/path/to/javascript_input.js') + ) +)); +$sources[] = '//file2.js'; +$sources[] = '//file3.js'; + +// setup serve options +$options = array( + 'files' => $sources, + 'maxAge' => 86400, +); + +// handle request +Minify::serve('Files', $options); +``` \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/docs/Debugging.wiki.md b/minimee/library/vendor/mrclay/minify/docs/Debugging.wiki.md new file mode 100644 index 0000000..f6ba50d --- /dev/null +++ b/minimee/library/vendor/mrclay/minify/docs/Debugging.wiki.md @@ -0,0 +1,80 @@ +# Server Errors + +| **Code** | **Most likely cause** | +|:---------|:----------------------| +| 400 | Controller failed to return valid set of sources to serve | +| 500 | Minifier threw exception (e.g. JSMin choked on syntax) | + +You can find details by enabling FirePHP logging: + + 1. Install/enable [FirePHP](https://addons.mozilla.org/en-US/firefox/addon/6149). + 1. Open Firebug's console + 1. Set `$min_errorLogger = true;` in min/config.php + 1. Reload the Minify URL + +Hopefully you'll see the error appear: + +``` +Minify: Something bad happened! +``` + +# Javascript/CSS Problems + +When Javascript errors occur, or URIs in CSS files are incorrectly rewritten, enable "debug mode" to ease debugging combined files: + + 1. Set `$min_allowDebugFlag = 'true'` in min/config.php + 1. Append `&debug` to the Minify URI. E.g. `/min/?f=script1.js,script2.js&debug` (or use the bookmarklet provided by /min/builder/) + +In "debug mode": + + * comments are inserted into the output showing you line numbers in the original file(s) + * no minification is performed + * In CSS, URI rewriting _is_ performed + * In CSS, a leading comment shows how URIs were rewritten. + +Example: a combination of two Javascript files in debug mode + +``` +/* firstFile.js */ + +/* 1 */ (function () { +/* 2 */ if (window.foo) { +... +/* 11 */ })(); + +; +/* secondFile.js */ + +/* 1 */ var Foo = window.Foo || {}; +/* 2 */ +... +``` + +Example: Top of CSS output in debug mode + +``` +docRoot : M:\home\foo\www +currentDir : M:\home\foo\www\css + +file-relative URI : typography.css +path prepended : M:\home\foo\www\css\typography.css +docroot stripped : \css\typography.css +traversals removed : /css/typography.css + +file-relative URI : ../images/bg.jpg +path prepended : M:\home\foo\www\css\..\images\bg.jpg +docroot stripped : \css\..\images\bg.jpg +traversals removed : /images/bg.jpg +``` + +### Tips for handling Javascript errors + + * Use the latest version (2.1.4 beta as of Dec 2010) + * Try [debug mode](#Javascript/CSS_Problems.md) to make the combined file more readable (and error locations findable) + * Find out if other browsers have the same error + * For pre-minified files, make the filenames end in `.min.js` or `-min.js`, which will prevent Minify from altering them + * Test your scripts in [JSLint](http://www.jslint.com/). + +## See Also + + * CommonProblems \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/docs/FAQ.wiki.md b/minimee/library/vendor/mrclay/minify/docs/FAQ.wiki.md new file mode 100644 index 0000000..1b0edb0 --- /dev/null +++ b/minimee/library/vendor/mrclay/minify/docs/FAQ.wiki.md @@ -0,0 +1,79 @@ +## Why do the CSS & HTML minifiers add so many line breaks? + +TL;DR: Ignore them. They don't add to the output size and if you absolutely want all content on one line you will have to use another tool. + +It's [rumored](https://github.com/yui/yuicompressor/blob/master/doc/README#L43) that some source control tools and old browsers don't like very long lines. Compressed files with shorter lines are also easier to diff. + +Since both Minify classes are regex-based, it would be very difficult/error-prone to count characters then try to re-establish context to add line breaks. Instead, both classes trade 1 space for 1 line break (`\n`) wherever possible, adding breaks but without adding bytes. + +If you can think of another safe & efficient way to limit lines in these two tools without adding bytes, please submit a patch, but this is not something anyone should be worrying about. + +## Minify doesn't compress as much as product XYZ. Why not? + +Out of the box, Minify uses algorithms available in PHP, which frankly aren't as solid as competing products, but I consider them _good enough_. At this point I don't have time to work on further tweaking, so if you must have _perfect_ minification you can explore the CookBook to plug in other minifiers. If you'd like to propose specific tweaks in the algorithm (and don't have a patch), please propose these in the Google Group, not the issue tracker. + +## How fast is it? + +With Minify you will ideally serve _fewer_ requests, but Minify can be slower than your HTTPd serving flat files. If you have a high-traffic site with hundreds of simultaneous requests from new users, you should probably: + + * Use the [APC/Memcache adapters](CookBook.md). + * Revision your Minify URIs (so far-off Expires headers will be sent). One way to do this is using [predefined groups](http://code.google.com/p/minify/source/browse/tags/release_2.1.3/min/README.txt#69) and the [Minify\_groupUri()](http://code.google.com/p/minify/source/browse/tags/release_2.1.3/min/utils.php#13) utility function. + * Place your HTTPd behind a [reverse proxy](http://www.squid-cache.org/Intro/why.dyn) to cache the Minify URLs. + * Benchmark Minify on your development server before rolling out to production. + +### Will it get faster? + +Ideally, but a couple [other goals](ProjectGoals.md) come first. For Apache users we're designing a feature to enable [minified and pre-encoded files to be served directly from the HTTPd](http://mrclay.org/index.php/2008/05/25/apache-http-encoding-negotiation-notes/). Requests will not execute PHP at all and be blazingly fast (for varying definitions of "blazingly"). + +## How does it compare with other services? + +Yahoo's [Combo Handler](http://yuiblog.com/blog/2008/07/16/combohandler/) and Google's [AJAX Libraries API](http://code.google.com/apis/ajaxlibs/) both serve content from their heavy-duty [CDN](http://en.wikipedia.org/wiki/Content_Delivery_Network)s and _potentially_ increase the chance that your visitor will already have a file in her browser cache. Neither service serves custom content that you provide. You may wish to use these services to serve popular libraries and Minify to serve your code. + +## Is this where I get support for... + +If you get a link to this page in response to a request for help, please make sure that you're using the software downloaded from [this project](http://code.google.com/p/minify/) (or [on github](https://github.com/mrclay/minify)), and have followed the [directions](UserGuide.md). + +There are many projects with "minify" in the title/description but don't have anything to do with this project, or which many only use a few [components](ComponentClasses.md) from this project. + +Although you may be able to get support for usage of the components, the [Google Group](http://groups.google.com/group/minify) members/project owners may not be able to offer any helpful advice with unrelated projects. + +## Does it support gzip compression? + +Yes. Based on the browser's Accept-Encoding header, Minify will serve content encoded with deflate or gzip. + +## Does it work with PHP opcode caches like APC and eAccelerator? + +Of course, and you can also use [APC for content caching](CookBook.md). + +## Can it minify remote files/the output of dynamic scripts? + +[Yes](http://code.google.com/p/minify/wiki/CustomSource#Non-File_Sources), but it's not a straightforward setup, and probably best avoided. + +## Is there a minifier for HTML? + +Yes, but only in the form of a PHP class: [Minify\_HTML](http://code.google.com/p/minify/source/browse/min/lib/Minify/HTML.php). +It also can accept callbacks to minify embedded STYLE and SCRIPT elements. + +Since Minify\_HTML is not fast, there's no _easy way_ to integrate it into dynamic pages, and you'll have to search the archives for ideas of how to use it. One opportunity would be when storing HTML (assuming writes are infrequent); e.g., in a DB keep one copy for editing and one minified for serving. + +Minify is not suited for _serving_ HTML pages on a site, though it can be done for small numbers of static pages. Look the the [Page controller](http://code.google.com/p/minify/source/browse/min/lib/Minify/Controller/Page.php). + +## How does it ensure that the client can't request files it shouldn't have access to? + +In 2.1, by default, Minify allows files to be specified using the URI, or using pre-configured sets of files. With URI-specified files, Minify is [very careful](Security.md) to serve only JS/CSS files that are already public on your server, but if you hide public directories--with .htaccess, e.g.--Minify can't know that. Obvious Tip: don't put sensitive info in JS/CSS files inside DOC\_ROOT :) + +An included option can disable URI-specified files so Minify will serve only the pre-configured file sets. + +## Is it used in production by any large-scale websites? + +I'd love to know. 2.1.1 had 54K downloads and I know the library is powering several [plugins](http://mrclay.org/index.php/2009/01/10/minify-getting-out-there/) these days, at least 3 for WordPress. + +## Can I use it with my commercial website or product? + +Yes. Minify is distributed under the [New BSD License](http://www.opensource.org/licenses/bsd-license.php), which means that you're free to use, modify, and redistribute Minify or derivative works thereof, even for commercial purposes, as long as you comply with a few simple requirements. See the [LICENSE.txt](http://code.google.com/p/minify/source/browse/LICENSE.txt) file for details. + +## How can I tell if my server cache is working? + +The easiest way is to place a Minify URL directly in your browser's address bar and refresh (F5), which should override the client-side caching that Minify specifies and force Minify to send you a complete response. With cache working, this response should take 100ms or so. Without cache, multiple seconds. (You can get accurate response times using an HTTP inspector like Firebug.) + +If you have file access to the server you can check your cache path directly for filenames beginning with "minify \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/docs/MinApp.wiki.md b/minimee/library/vendor/mrclay/minify/docs/MinApp.wiki.md new file mode 100644 index 0000000..1f30036 --- /dev/null +++ b/minimee/library/vendor/mrclay/minify/docs/MinApp.wiki.md @@ -0,0 +1,14 @@ +"Min" is the application included in Minify that handles requests to `http://example.com/min/` and responds with compressed/combined content. + +When the documentation refers to "Minify" it usually means this application, but sometimes refers to the ComponentClasses. + +User-configurable files: + + * `/min/config.php`: general configuration + * `/min/groupsConfig.php`: configuration of pre-defined groups of files + +Other files of interest: + + * `/min/.htaccess`: rewrites URLs for the front controller + * `/min/index.php`: front controller + * `/min/lib/Minify/Controller/MinApp.php`: determines which files are combined based on `$_GET`, sets some default options \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/docs/TestingMinify.wiki.md b/minimee/library/vendor/mrclay/minify/docs/TestingMinify.wiki.md new file mode 100644 index 0000000..0ba2d72 --- /dev/null +++ b/minimee/library/vendor/mrclay/minify/docs/TestingMinify.wiki.md @@ -0,0 +1,19 @@ +# Unit Testing + +0. If you haven't already, install Minify using the UserGuide. + +1. Copy the "min\_unit\_tests" directory directly into your DOCUMENT\_ROOT. + +2. Browse to http://example.com/min_unit_tests/test_all.php + +You should see a list of "PASS"es. You can run the individual test PHP files in http://example.com/min_unit_tests/ for more verbose output. + +## Common Problems + +### !WARN: environment : Local HTTP request failed. Testing cannot continue. + +[test\_environment.php](http://code.google.com/p/minify/source/browse/min_unit_tests/test_environment.php) makes a few local HTTP requests to sniff for `zlib.output_compression` and other auto-encoding behavior, which may break Minify's output. This warning will appear if `allow_url_fopen` is disabled in php.ini, but **does not** necessarily mean there is a problem. + +If Minify seems to work fine, ignore the warning. If Minify produces garbled output, enable `allow_url_fopen` in php.ini and re-run the tests. The tests may be able to tell you if PHP or your server is automatically encoding output. + +Unless you need it in other scripts, disable `allow_url_fopen` once the issue is resolved. Minify does not need it. \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/docs/UriRewriting.wiki.md b/minimee/library/vendor/mrclay/minify/docs/UriRewriting.wiki.md new file mode 100644 index 0000000..3554252 --- /dev/null +++ b/minimee/library/vendor/mrclay/minify/docs/UriRewriting.wiki.md @@ -0,0 +1,73 @@ +## Default operation + +Minify uses an algorithm to rewrite relative URIs in CSS output to root-relative URIs so that each link points to the same location it did in its original file. + +Say your style sheet `http://example.org/theme/fashion/style.css` contains: +``` +body { background: url(bg.jpg); } +``` + +When Minify serves this content (from `http://example.org/min/f=theme/fashion/style.css` or `http://example.org/min/g=css`) it re-writes the URI so the image is correctly linked: +``` +body{background:url(/theme/fashion/bg.jpg)} +``` + +You can see the steps used to rewrite your URIs by enabling [debug mode](Debugging.md). + +## Disable Rewriting + +You can disable the automatic rewriting by setting this in min/config.php: +``` +$min_serveOptions['rewriteCssUris'] = false; +``` + +## Manual Rewriting + +You can manually rewrite relative URIs in CSS in a couple ways. The simplest is to prepend a string to each relative URI: +``` +$min_serveOptions['rewriteCssUris'] = false; +$min_serveOptions['minifierOptions']['text/css']['prependRelativePath'] = '/css/'; +``` + +Or you can run the minified output through a custom [post-processor](CookBook#Processing_Output_After_Minification.md) function. + +## Document Root Confusion + +Out-of-the-box, Minify gets confused when `min` is placed in a subdirectory of the real document root. There's now a [simple workaround](AlternateFileLayouts.md) for this, making `min` more portable. + +## Aliases / Symlinks / Virtual Directories + +Whether you use [aliases](http://httpd.apache.org/docs/2.2/mod/mod_alias.html), [symlinks](http://en.wikipedia.org/wiki/Symbolic_link), or [virtual directories](http://msdn.microsoft.com/en-us/library/zwk103ab.aspx), if you make content outside of the DOC\_ROOT available at public URLs, Minify may need manual configuration of the `$min_symlinks` option to rewrite some URIs correctly. Consider this scenario, where `http://example.org/static/style.css` will serve `/etc/static_content/style.css`: + +| document root | `/var/www` | +|:------------------|:--------------------------------------------| +| Apache mod\_alias | `Alias /static /etc/static_content` | +| ...or symlink | `ln -s /etc/static_content /var/www/static` | + +In `/min/config.php` you'll need the following: +``` +// map URL path to file path +$min_symlinks = array( + '//static' => '/etc/static_content' +); +``` +This lets Minify know during the rewriting process that an internal file path starting with `/etc/static_content` should be rewritten as a public URI beginning with `/static`. + +If your alias target directory is outside of DOC\_ROOT, you'll also need to explicitly allow Minify to serve files from it: +``` +$min_serveOptions['minApp']['allowDirs'] = array( + '//', // allow from the normal DOC_ROOT + '/etc/static_content' // allow from our alias target +); +``` + +### What's my document root? + +You can enable the script `min/server-info.php` and open http://example.org/min/server-info.php to find useful `$_SERVER` values. People in the [Google Group](https://groups.google.com/forum/#!forum/minify) might need these to help you. + +## It's still not working + + 1. Make sure you have the [latest version](http://code.google.com/p/minify/downloads/list). + 1. Enable [debug mode](Debugging.md), which will show you the URI transformation process. + 1. Check that `$_SERVER['DOCUMENT_ROOT']` is a real directory path. If not, URI rewriting will fail. If you cannot fix this in httpd.conf, etc., use the [configuration option](http://code.google.com/p/minify/source/browse/min/config.php?r=292#47). + 1. Paste your [debug mode](Debugging.md) comment block into a new post on the [minify mailing list](http://groups.google.com/group/minify). diff --git a/minimee/library/vendor/mrclay/minify/docs/UserGuide.wiki.md b/minimee/library/vendor/mrclay/minify/docs/UserGuide.wiki.md new file mode 100644 index 0000000..d413e9b --- /dev/null +++ b/minimee/library/vendor/mrclay/minify/docs/UserGuide.wiki.md @@ -0,0 +1,48 @@ +If this page doesn't help, please post a question on our [Google group](http://groups.google.com/group/minify). + +# Installing Minify for the first time + + 1. Clone the [minify git repository](https://github.com/mrclay/minify). + 1. The distribution contains a folder "min". Copy this into your DOCUMENT\_ROOT so it is a **direct child** of DOCUMENT\_ROOT (e.g. `http://example.com/min/`). Document roots are usually named `htdocs`, `public_html`, or `www`. + 1. Test it can serve content: http://example.com/min/?f=min/quick-test.js and http://example.com/min/?f=min/quick-test.css + 1. If you want to use the BuilderApp, you must enable it in `min/config.php`. + +Note: The BuilderApp will not function properly in subdirectories, but it's not necessary for Minify's functionality. + +Done! + +(Optional) See TestingMinify if you'd like to run unit tests. + +### Hosting on Lighttpd + +Minify comes with Apache mod\_rewrite rules, but this does the same for Lighttpd: + +``` +url.rewrite-once = ( "^/min/([a-z]=.*)" => "/min/index.php?$1" ) +``` + +# Usage + +Enable the BuilderApp via your [config file](https://github.com/mrclay/minify/blob/master/min/config.php#L10). The default password is "admin", but even if no password is used there's very little server information disclosed. + +Browse to http://example.com/min/ + +The Minify URI Builder will help you create URIs you can use to minify existing files on your site. You can see screenshots and get a feel for this process from this [walkthrough on mrclay.org](http://mrclay.org/index.php/2008/09/19/minify-21-on-mrclayorg/) + +More info here: https://github.com/mrclay/minify/blob/master/MIN.txt + +You may want to disable the BuilderApp when not in use. + +# Configuration + +[min/config.php](https://github.com/mrclay/minify/blob/master/min/config.php) holds general config options. + +[min/groupsConfig.php](https://github.com/mrclay/minify/blob/master/min/groupsConfig.php) holds preset groups of files to minify. (The builder application can help with this). + +CookBook shows how to customize settings between production/development environments, and between groups. + +CustomSource shows how to set some file/source-specific options, or serve content from a PHP script or URL. + +# Problems? + +See [CommonProblems](https://github.com/mrclay/minify/blob/master/docs/CommonProblems.wiki.md) and [Debugging](https://github.com/mrclay/minify/blob/master/docs/Debugging.wiki.md). You might also try [TestingMinify](https://github.com/mrclay/minify/blob/master/docs/TestingMinify.wiki.md) (running `test_environment.php` in particular). \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/docs/old/History.wiki.md b/minimee/library/vendor/mrclay/minify/docs/old/History.wiki.md new file mode 100644 index 0000000..492ced2 --- /dev/null +++ b/minimee/library/vendor/mrclay/minify/docs/old/History.wiki.md @@ -0,0 +1,92 @@ +## Version 2.1.5 (2012-03-10) + * Removed XSS vulnerability + * Disabled builder by default + * command line tools to minify and rewrite URIs in CSS + * upgrade (optional) JSMin+ library + * more efficient JS minification when using CC/YUIC + * Closure Compiler uses cURL when allow\_url\_fopen is off + * Missing file notices when using groups + +## Version 2.1.4b (2010-07-10) + * Option to minify JS with Closure Compiler API w/ JSMin failover + * Cookie/bookmarklet-based debug mode. No HTML editing! + * Allows 1 file to be missing w/o complete failure + * Combine multiple groups and files in single URI + * More useful HTML helpers for writing versioned URIs + * More detailed error logging, including minifier exceptions + * Builder offers more helpful messages/PHP environment warnings + * Bypass minification based on filename pattern. e.g. foo.min.js / foo-min.css + * JSMin won't choke on common Closure compiler syntaxes (`i+ ++j`) + * Better caching in IE6 + * Cache ids are influenced by group/file names + * Debug mode for Javascript doesn't break on common XPath strings (Prototype 1.6) + * Removed annoying maxFiles limit + * mbstring.func\_overload usage is safer + +## Version 2.1.3 (2009-06-30) + * CSS fixes + * A few URI rewriting bugs fixed + * comment/whitespace removal no longer breaks some values + * IE6 [pseudo-element selector bug](http://www.crankygeek.com/ie6pebug/) no longer triggered + * HTTP fixes + * Proper Expires handling in webkit (dropped "must-revalidate", which triggered a [webkit bug](http://mrclay.org/index.php/2009/02/24/safari-4-beta-cache-controlmust-revalidate-bug/)) + * ETag generation now valid ([must be unique when gzipped](https://issues.apache.org/bugzilla/show_bug.cgi?id=39727)) + * Vary header always sent when Accept-Encoding is sniffed + * Dropped deflate encoding, since browser and proxy support [could be buggy](http://stackoverflow.com/questions/883841/). + * File cache now works w/o setting `$min_cachePath` + * No more 5.3 deprecation warnings: `split()` removed + * API: Can set contentType Minify\_Source objects (fixes an annoying [caveat](http://groups.google.com/group/minify/msg/8446d32ee99a4961)) + * [Resolved Issue list](http://code.google.com/p/minify/issues/list?can=1&q=label%3ARelease-2.1.2%20status%3AVerified) + +## Version 2.1.2 (2009-03-04) + * Javascript fixes + * Debug mode no longer confused by `*/*` in strings/RegExps (jQuery) + * quote characters inside RegExp literals no longer cause exception + * files ending in single-line comments no longer cause code loss + * CSS: data: URLs no longer mangled + * Optional error logging to Firefox's FirePHP extension + * Unit tests to check for common DOCUMENT\_ROOT problems + * DOCUMENT\_ROOT no longer overwritten on IIS servers + * Builder app doesn't fail on systems without gzdeflate() + * APC caching class included + +## Version 2.1.1 (2008-10-19) + * Bug fix release + * Detection and workarounds for zlib.output\_compression and non-PHP encoding modules + * Zlib not required (mod\_rewrite, et.al., can still be used for encoding) + * HTML : More IE conditional comments preserved + * Minify\_groupUri() utility fixed + +## Version 2.1.0 (2008-09-18) + * "min" default application for quick deployment + * Minify URI Builder app & bookmarklet for quickly creating minify URIs + * Relative URIs in CSS file are fixed automatically by default + * "debug" mode for revealing original line #s in combined files + * Better IIS support + * Improved minifier classes: + * JS: preserves IE conditional comments + * CSS: smaller output, preserves more hacks and valid CSS syntax, shorter line lengths, other bug fixes + * HTML: smaller output, shorter line lengths, other bug fixes + * Default Cache-Control: max-age of 30 minutes + * Conditional GETs supported even when max-age sent + * Experimental memcache cache class (default is files) + * Minify\_Cache\_File has flock()s (by default) + * Workaround for Windows mtime reporting bug + + +## Version 2.0.0 (2008-05-22) + * Complete code overhaul. Minify is now a PEAR-style class and toolkit for building customized minifying file servers. + * Content-Encoding: deflate/gzip/compress, based on request headers + * Expanded CSS and HTML minifiers with test cases + * Easily plug-in 3rd-party minifiers (like Packer) + * Plug-able front end controller allows changing the way files are chosen + * Compression & encoding modules lazy-loaded as needed (304 responses use minimal code) + * Separate utility classes for HTTP encoding and cache control + +## Version 1.0.1 (2007-05-05) + * Fixed various problems resolving pathnames when hosted on an NFS mount. + * Fixed 'undefined constant' notice. + * Replaced old JSMin library with a much faster custom implementation. + +## Version 1.0.0 (2007-05-02) + * First release. \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/docs/old/HowItWorks.wiki.md b/minimee/library/vendor/mrclay/minify/docs/old/HowItWorks.wiki.md new file mode 100644 index 0000000..98d69ce --- /dev/null +++ b/minimee/library/vendor/mrclay/minify/docs/old/HowItWorks.wiki.md @@ -0,0 +1,31 @@ +### Browsers, trust your cache + +In all responses a `Cache-Control` header is sent, telling the browser it doesn't need to "check in" with the server for some period of time. The ideal request is the one that never leaves the browser! + +### Convert a request to source objects + +When the browser makes a request like `/min/g=css`, Apache rewrites this to `/min/index.php?g=css`, which calls Minify's front controller. + +A separate controller then uses the querystring to establish a "sources" array, specifying exactly which objects (usually files) are to be included in the final output. + +### Try browser cache + +Minify finds the latest modification time of all the source objects (`filemtime` for files, so if you use a tool that doesn't update this, you might need to `touch` your modified files). + +If the browser has sent an `If-Modified-Since` header, and it's valid (the given date is older than the most recent source), then a 304 header is returned, execution stops, and the browser uses its cache copy. + +### Try server cache + +Minify generates a unique cache ID for the particular set of sources and their options. This is used to maintain a cache (file usually) of the final output. + +If the cache is "valid" (younger than the most recently modified source), then its content is sent along with a `Last-Modified` header with the most recent source's modification time, and execution stops. + +### Minification has to be done + +If any source is younger than the cache, the cache must be rebuilt from the minification process (slow, but infrequently done): + +Minify processes each source with a "minifier" function (determined by the content type of the sources and source-specific options), combines them to a single string, saves this to the cache object, then serves it with the `Last-Modified` header as sbove. + +#### Content encoding + +Minify actually stores a gzipped version of each output in a second cache object. If the browser supports it, Minify streams the pre-compressed content straight from cache (disk usually) to the browser. \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/docs/old/HttpCaching.wiki.md b/minimee/library/vendor/mrclay/minify/docs/old/HttpCaching.wiki.md new file mode 100644 index 0000000..73b1f94 --- /dev/null +++ b/minimee/library/vendor/mrclay/minify/docs/old/HttpCaching.wiki.md @@ -0,0 +1,63 @@ +# HTTP Caching in Minify + +## Conditional GET + +Minify sends all files with Last-Modified and ETag headers. If the browser requests a file again it will send along If-Modified-Since and If-None-Match headers. Minify checks these headers and, if the browser has the latest version, sends back only a slim "304 Not Modified" response (no content), telling the browser to use its cached file. + +## Expires Header + +Minify also sends Expires and Cache-Control: max-age headers, indicating that the file should be considered valid for a period of time. In future page views the browser will not re-request the file (unless the user refreshes), and instead will use the cached version. + +By default, Minify sends an Expires header for 1800 seconds (30 minutes) into the future (configurable via `$min_serveOptions['maxAge']`). This means your file changes may not be seen by users immediately after you make them. If your changes must be seen immediately, you should reduce max-age to 0, but note you will not get as much benefit, as browsers will still have to send requests **every time**. + +## Far-off Expires + +When pre-set groups are used and a number is appended to the minify URI (e.g. `/min/g=css&456`), then Minify sends an Expires date of 1 year in the future. This is great for caching, but places responsibility on your HTML pages. They _must_ change the number whenever a JS/CSS source file is updated, or the browser will not know to re-request the file. If you're generating your page with PHP, the [Minify\_groupUri](http://code.google.com/p/minify/source/browse/min/utils.php?r=222#11) utility function can make this easier to manage. + +# Using `HTTP_ConditionalGet` in other projects + +Minify uses the PHP class [HTTP\_ConditionalGet](http://code.google.com/p/minify/source/browse/lib/HTTP/ConditionalGet.php) to implement the conditional GET model. To use this in your own project you'll need the last modification time of your content (for a file, use [filemtime()](http://www.php.net/filemtime)), or a short hash digest of the content (something that changes when the content changes). You'll also want to consider if the content can be stored in public caches, or should only be stored in the user's browser. + +## When the last modification time is known + +In this example we implement conditional GET for a mostly-static PHP script. The browser needs to redownload the content only when the file is updated. + +``` +// top of file +$cg = new HTTP_ConditionalGet(array( + 'isPublic' => true, + 'lastModifiedTime' => filemtime(__FILE__) +)); +$cg->sendHeaders(); +if ($cg->cacheIsValid) { // 304 already sent + exit(); +} +// rest of script +``` + +For the first request the browser's cache won't be valid, so the full script will execute, sending the full content. On the next, the cache will be valid and the sendHeaders() method will have already set the 304 header, so the script can be halted. + +There's also a shortcut static method for this: +``` +HTTP_ConditionalGet::check(filemtime(__FILE__), true); // exits if client has cache +// rest of script +``` + +## When last modification time isn't known + +Let's say you have an HTML page in a database, but no modification time. To reduce DB requests, you cache this content in a file/memory, but you'd also like to reduce bandwidth. In this case, what you can do is also cache a hash of the page along with the content. Now you can do this: + +``` +$cache = getCache(); +$cg = new HTTP_ConditionalGet(array( + 'isPublic' => true, + 'contentHash' => $cache['hash'] +)); +$cg->sendHeaders(); +if ($cg->cacheIsValid) { // 304 already sent + exit(); +} +echo $cache['page']; +``` + +Although Last-Modified cannot be set, ETag will serve the same purposes in most browsers, allowing the conditional GET. \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/docs/old/ProjectGoals.wiki.md b/minimee/library/vendor/mrclay/minify/docs/old/ProjectGoals.wiki.md new file mode 100644 index 0000000..37924e3 --- /dev/null +++ b/minimee/library/vendor/mrclay/minify/docs/old/ProjectGoals.wiki.md @@ -0,0 +1,13 @@ +## 1. Be easy to implement + +A PHP user should be able to quickly start serving JS/CSS much more optimally. + +## 2. Be extensible/versatile + +The user should be able to work Minify into an environment without modifying Minify's source. Right now this should be easy on the controller side, but the Minify class is static, which is fast, but may hinder extensibility. + +## 3. Be fast as possible + +With the release of 2.0.2 Minify will be much faster, outperforming even Apache's mod\_deflate (which apparently doesn't cache the encoded content like mod\_gzip does). + +Since testing has shown that [pre-encoding files and using type-maps on Apache is blazingly fast](http://mrclay.org/index.php/2008/06/03/pre-encoding-vs-mod_deflate/), Minify should work towards maintaining builds of pre-encoded files and letting Apache serve them. It's not clear if there's something similar to type-maps on lighttpd, but it's worth looking into. \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/docs/old/Security.wiki.md b/minimee/library/vendor/mrclay/minify/docs/old/Security.wiki.md new file mode 100644 index 0000000..fce44dc --- /dev/null +++ b/minimee/library/vendor/mrclay/minify/docs/old/Security.wiki.md @@ -0,0 +1,15 @@ +This was quickly converted from an e-mail, please consider it "temporary". + +## Each file specified by `$_GET['f']` must: + + * Have the [same extension, either "css" or "js"](http://code.google.com/p/minify/source/browse/tags/release_2.1.1/min/lib/Minify/Controller/MinApp.php#66), + * Exist, and... + * Have a [realpath() within a whitelist of subdirectories](http://code.google.com/p/minify/source/browse/tags/release_2.1.1/min/lib/Minify/Controller/Base.php#122). + +The default whitelist contains only DOCUMENT\_ROOT, but can be [specified](http://code.google.com/p/minify/source/browse/tags/release_2.1.1/min/config.php#57). + +Then, a few more steps just to be paranoid: + + * If a base was given by `$_GET['b']`, [it can't have ".."](http://code.google.com/p/minify/source/browse/tags/release_2.1.1/min/lib/Minify/Controller/MinApp.php#84). + * `$_GET['f']` [must not contain "//", "\", or "./"](http://code.google.com/p/minify/source/browse/tags/release_2.1.1/min/lib/Minify/Controller/MinApp.php#64). + * There can be [no duplicates](http://code.google.com/p/minify/source/browse/tags/release_2.1.1/min/lib/Minify/Controller/MinApp.php#77) and only a [limited number of files](http://code.google.com/p/minify/source/browse/tags/release_2.1.1/min/config.php#73) can be specified. \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/docs/old/VersionTwo.wiki.md b/minimee/library/vendor/mrclay/minify/docs/old/VersionTwo.wiki.md new file mode 100644 index 0000000..5bc3f6f --- /dev/null +++ b/minimee/library/vendor/mrclay/minify/docs/old/VersionTwo.wiki.md @@ -0,0 +1,35 @@ +# Minify 2 + +[Minify 2.0.0](http://code.google.com/p/minify/source/browse/tags/release_2.0.0/) was released May 22, 2008 and represents an architectural redesign of Minify's code and its usage. 2.0 is built as a library of classes allowing users to easily build customized minified-file servers; or add minification, HTTP encoding, or [conditional GET](http://fishbowl.pastiche.org/2002/10/21/http_conditional_get_for_rss_hackers) to existing projects. + +The release includes 3 [example sites](http://code.google.com/p/minify/source/browse/tags/release_2.0.0/web/examples) to demostrate usage and [unit tests](http://code.google.com/p/minify/source/browse/tags/release_2.0.0/web/test/) you can run on your system. + +## Documentation + +Each PHP file is documented, but, for now, the [README file](http://code.google.com/p/minify/source/browse/tags/release_2.0.0/README) is the best reference for getting started with the library. This [blog post](http://mrclay.org/index.php/2008/03/27/minifying-javascript-and-css-on-mrclayorg/) may also give you some ideas. + +The best place for questions is the [minify Google group](http://groups.google.com/group/minify). + +### Included HTTP Classes + +The two HTTP utility classes, [HTTP\_ConditionalGet](http://code.google.com/p/minify/source/browse/lib/HTTP/ConditionalGet.php) and [HTTP\_Encoder](http://code.google.com/p/minify/source/browse/lib/HTTP/Encoder.php), are already fairly well-tested and include a set of test pages to see how they work. On the [Florida Automated Weather Network](http://fawn.ifas.ufl.edu/) site, these are used especially in scripts that serve data to our Flash components. + +Here's an example of using both to conditionally serve a text file gzipped: +``` +$cg = new HTTP_ConditionalGet(array( + 'lastModifiedTime' => filemtime($filepath) + ,'isPublic' => true +)); +$cg->sendHeaders(); +if ($cg->cacheIsValid) { + // client cache was valid, no content needed + exit(); +} +require 'HTTP/Encoder.php'; +$he = new HTTP_Encoder(array( + 'content' => file_get_contents($filepath) + ,'type' => 'text/plain' +)); +$he->encode(); +$he->sendAll(); +``` \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min/builder/ocCheck.php b/minimee/library/vendor/mrclay/minify/min/builder/ocCheck.php index c47baa3..5c40e74 100644 --- a/minimee/library/vendor/mrclay/minify/min/builder/ocCheck.php +++ b/minimee/library/vendor/mrclay/minify/min/builder/ocCheck.php @@ -1,4 +1,4 @@ - 'World!' ,'method' => 'deflate' )); - $he->encode(); - $he->sendAll(); + $he->encode(); + $he->sendAll(); } else { // echo status "0" or "1" diff --git a/minimee/library/vendor/mrclay/minify/min/builder/test.php b/minimee/library/vendor/mrclay/minify/min/builder/test.php index 08fb498..7f3e04b 100644 --- a/minimee/library/vendor/mrclay/minify/min/builder/test.php +++ b/minimee/library/vendor/mrclay/minify/min/builder/test.php @@ -1,5 +1,5 @@ \+\(\)\]\~\=,])/', '$1', $css); @@ -336,11 +336,13 @@ private function minify($css, $linebreak_pos) // to avoid issues on Symbian S60 3.x browsers. $css = preg_replace('/(\*[a-z0-9\-]+\s*\:[^;\}]+)(\})/', '$1;$2', $css); - // Replace 0 length units 0(px,em,%) with 0. - $css = preg_replace('/(^|[^0-9])(?:0?\.)?0(?:em|ex|ch|rem|vw|vh|vm|vmin|cm|mm|in|px|pt|pc|%|deg|g?rad|m?s|k?hz)/iS', '${1}0', $css); + // Replace 0 and 0 values with 0. + // data type: https://developer.mozilla.org/en-US/docs/Web/CSS/length + // data type: https://developer.mozilla.org/en-US/docs/Web/CSS/percentage + $css = preg_replace('/([^\\\\]\:|\s)0(?:em|ex|ch|rem|vw|vh|vm|vmin|cm|mm|in|px|pt|pc|%)/iS', '${1}0', $css); // 0% step in a keyframe? restore the % unit - $css = preg_replace_callback('/(@[a-z\-]*?keyframes[^\{]*?\{)(.*?\}\s*\})/iS', array($this, 'replace_keyframe_zero'), $css); + $css = preg_replace_callback('/(@[a-z\-]*?keyframes[^\{]+\{)(.*?)(\}\})/iS', array($this, 'replace_keyframe_zero'), $css); // Replace 0 0; or 0 0 0; or 0 0 0 0; with 0. $css = preg_replace('/\:0(?: 0){1,3}(;|\}| \!)/', ':0$1', $css); @@ -596,7 +598,7 @@ private function preserve_old_IE_specific_matrix_definition($matches) private function replace_keyframe_zero($matches) { - return $matches[1] . preg_replace('/0\s*,/', '0%,', preg_replace('/\s*0\s*\{/', '0%{', $matches[2])); + return $matches[1] . preg_replace('/0(\{|,[^\)\{]+\{)/', '0%$1', $matches[2]) . $matches[3]; } private function rgb_to_hex($matches) diff --git a/minimee/library/vendor/mrclay/minify/min/lib/DooDigestAuth.php b/minimee/library/vendor/mrclay/minify/min/lib/DooDigestAuth.php index 69bc4ed..5a9b467 100644 --- a/minimee/library/vendor/mrclay/minify/min/lib/DooDigestAuth.php +++ b/minimee/library/vendor/mrclay/minify/min/lib/DooDigestAuth.php @@ -23,6 +23,8 @@ * @version $Id: DooDigestAuth.php 1000 2009-07-7 18:27:22 * @package doo.auth * @since 1.0 + * + * @deprecated 2.3 This will be removed in Minify 3.0 */ class DooDigestAuth{ diff --git a/minimee/library/vendor/mrclay/minify/min/lib/FirePHP.php b/minimee/library/vendor/mrclay/minify/min/lib/FirePHP.php index d301a64..bf4fb70 100644 --- a/minimee/library/vendor/mrclay/minify/min/lib/FirePHP.php +++ b/minimee/library/vendor/mrclay/minify/min/lib/FirePHP.php @@ -1,47 +1,57 @@ , Copyright 2007, New BSD License +// - qbbr, Sokolov Innokenty , Copyright 2011, New BSD License +// - cadorn, Christoph Dorn , Copyright 2011, MIT License + /** * *** BEGIN LICENSE BLOCK ***** - * - * This file is part of FirePHP (http://www.firephp.org/). - * - * Software License Agreement (New BSD License) - * - * Copyright (c) 2006-2008, Christoph Dorn - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. * - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. + * [MIT License](http://www.opensource.org/licenses/mit-license.php) * - * * Neither the name of Christoph Dorn nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. + * Copyright (c) 2007+ [Christoph Dorn](http://www.christophdorn.com/) * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. * * ***** END LICENSE BLOCK ***** * - * @copyright Copyright (C) 2007-2008 Christoph Dorn - * @author Christoph Dorn - * @license http://www.opensource.org/licenses/bsd-license.php - * @package FirePHP + * @copyright Copyright (C) 2007+ Christoph Dorn + * @author Christoph Dorn + * @license [MIT License](http://www.opensource.org/licenses/mit-license.php) + * @package FirePHPCore */ - + +/** + * @see http://code.google.com/p/firephp/issues/detail?id=112 + */ +if (!defined('E_STRICT')) { + define('E_STRICT', 2048); +} +if (!defined('E_RECOVERABLE_ERROR')) { + define('E_RECOVERABLE_ERROR', 4096); +} +if (!defined('E_DEPRECATED')) { + define('E_DEPRECATED', 8192); +} +if (!defined('E_USER_DEPRECATED')) { + define('E_USER_DEPRECATED', 16384); +} /** * Sends the given data to the FirePHP Firefox Extension. @@ -50,1321 +60,1784 @@ * * For more information see: http://www.firephp.org/ * - * @copyright Copyright (C) 2007-2008 Christoph Dorn - * @author Christoph Dorn - * @license http://www.opensource.org/licenses/bsd-license.php - * @package FirePHP + * @copyright Copyright (C) 2007+ Christoph Dorn + * @author Christoph Dorn + * @license [MIT License](http://www.opensource.org/licenses/mit-license.php) + * @package FirePHPCore + * + * @deprecated 2.3 This will be removed in Minify 3.0 */ class FirePHP { + + /** + * FirePHP version + * + * @var string + */ + const VERSION = '0.3'; // @pinf replace '0.3' with '%%VERSION%%' + + /** + * Firebug LOG level + * + * Logs a message to firebug console. + * + * @var string + */ + const LOG = 'LOG'; - /** - * FirePHP version - * - * @var string - */ - const VERSION = '0.2.0'; - - /** - * Firebug LOG level - * - * Logs a message to firebug console. - * - * @var string - */ - const LOG = 'LOG'; - - /** - * Firebug INFO level - * - * Logs a message to firebug console and displays an info icon before the message. - * - * @var string - */ - const INFO = 'INFO'; - - /** - * Firebug WARN level - * - * Logs a message to firebug console, displays an warning icon before the message and colors the line turquoise. - * - * @var string - */ - const WARN = 'WARN'; - - /** - * Firebug ERROR level - * - * Logs a message to firebug console, displays an error icon before the message and colors the line yellow. Also increments the firebug error count. - * - * @var string - */ - const ERROR = 'ERROR'; - - /** - * Dumps a variable to firebug's server panel - * - * @var string - */ - const DUMP = 'DUMP'; - - /** - * Displays a stack trace in firebug console - * - * @var string - */ - const TRACE = 'TRACE'; - - /** - * Displays an exception in firebug console - * - * Increments the firebug error count. - * - * @var string - */ - const EXCEPTION = 'EXCEPTION'; - - /** - * Displays an table in firebug console - * - * @var string - */ - const TABLE = 'TABLE'; - - /** - * Starts a group in firebug console - * - * @var string - */ - const GROUP_START = 'GROUP_START'; - - /** - * Ends a group in firebug console - * - * @var string - */ - const GROUP_END = 'GROUP_END'; - - /** - * Singleton instance of FirePHP - * - * @var FirePHP - */ - protected static $instance = null; - - /** - * Wildfire protocol message index - * - * @var int - */ - protected $messageIndex = 1; + /** + * Firebug INFO level + * + * Logs a message to firebug console and displays an info icon before the message. + * + * @var string + */ + const INFO = 'INFO'; - /** - * Options for the library - * - * @var array - */ - protected $options = array(); - - /** - * Filters used to exclude object members when encoding - * - * @var array - */ - protected $objectFilters = array(); - - /** - * A stack of objects used to detect recursion during object encoding - * - * @var object - */ - protected $objectStack = array(); - - /** - * Flag to enable/disable logging - * - * @var boolean - */ - protected $enabled = true; - - /** - * The object constructor - */ - function __construct() { - $this->options['maxObjectDepth'] = 10; - $this->options['maxArrayDepth'] = 20; - $this->options['useNativeJsonEncode'] = true; - $this->options['includeLineNumbers'] = true; - } + /** + * Firebug WARN level + * + * Logs a message to firebug console, displays an warning icon before the message and colors the line turquoise. + * + * @var string + */ + const WARN = 'WARN'; + + /** + * Firebug ERROR level + * + * Logs a message to firebug console, displays an error icon before the message and colors the line yellow. Also increments the firebug error count. + * + * @var string + */ + const ERROR = 'ERROR'; + + /** + * Dumps a variable to firebug's server panel + * + * @var string + */ + const DUMP = 'DUMP'; + + /** + * Displays a stack trace in firebug console + * + * @var string + */ + const TRACE = 'TRACE'; + + /** + * Displays an exception in firebug console + * + * Increments the firebug error count. + * + * @var string + */ + const EXCEPTION = 'EXCEPTION'; + + /** + * Displays an table in firebug console + * + * @var string + */ + const TABLE = 'TABLE'; + + /** + * Starts a group in firebug console + * + * @var string + */ + const GROUP_START = 'GROUP_START'; + + /** + * Ends a group in firebug console + * + * @var string + */ + const GROUP_END = 'GROUP_END'; + + /** + * Singleton instance of FirePHP + * + * @var FirePHP + */ + protected static $instance = null; + + /** + * Flag whether we are logging from within the exception handler + * + * @var boolean + */ + protected $inExceptionHandler = false; - /** - * When the object gets serialized only include specific object members. - * - * @return array - */ - public function __sleep() { - return array('options','objectFilters','enabled'); - } + /** + * Flag whether to throw PHP errors that have been converted to ErrorExceptions + * + * @var boolean + */ + protected $throwErrorExceptions = true; - /** - * Gets singleton instance of FirePHP - * - * @param boolean $AutoCreate - * @return FirePHP - */ - public static function getInstance($AutoCreate=false) { - if($AutoCreate===true && !self::$instance) { - self::init(); + /** + * Flag whether to convert PHP assertion errors to Exceptions + * + * @var boolean + */ + protected $convertAssertionErrorsToExceptions = true; + + /** + * Flag whether to throw PHP assertion errors that have been converted to Exceptions + * + * @var boolean + */ + protected $throwAssertionExceptions = false; + + /** + * Wildfire protocol message index + * + * @var integer + */ + protected $messageIndex = 1; + + /** + * Options for the library + * + * @var array + */ + protected $options = array('maxDepth' => 10, + 'maxObjectDepth' => 5, + 'maxArrayDepth' => 5, + 'useNativeJsonEncode' => true, + 'includeLineNumbers' => true); + + /** + * Filters used to exclude object members when encoding + * + * @var array + */ + protected $objectFilters = array( + 'firephp' => array('objectStack', 'instance', 'json_objectStack'), + 'firephp_test_class' => array('objectStack', 'instance', 'json_objectStack') + ); + + /** + * A stack of objects used to detect recursion during object encoding + * + * @var object + */ + protected $objectStack = array(); + + /** + * Flag to enable/disable logging + * + * @var boolean + */ + protected $enabled = true; + + /** + * The insight console to log to if applicable + * + * @var object + */ + protected $logToInsightConsole = null; + + /** + * When the object gets serialized only include specific object members. + * + * @return array + */ + public function __sleep() + { + return array('options', 'objectFilters', 'enabled'); } - return self::$instance; - } - - /** - * Creates FirePHP object and stores it for singleton access - * - * @return FirePHP - */ - public static function init() { - return self::$instance = new self(); - } - - /** - * Enable and disable logging to Firebug - * - * @param boolean $Enabled TRUE to enable, FALSE to disable - * @return void - */ - public function setEnabled($Enabled) { - $this->enabled = $Enabled; - } - - /** - * Check if logging is enabled - * - * @return boolean TRUE if enabled - */ - public function getEnabled() { - return $this->enabled; - } - - /** - * Specify a filter to be used when encoding an object - * - * Filters are used to exclude object members. - * - * @param string $Class The class name of the object - * @param array $Filter An array or members to exclude - * @return void - */ - public function setObjectFilter($Class, $Filter) { - $this->objectFilters[$Class] = $Filter; - } - - /** - * Set some options for the library - * - * Options: - * - maxObjectDepth: The maximum depth to traverse objects (default: 10) - * - maxArrayDepth: The maximum depth to traverse arrays (default: 20) - * - useNativeJsonEncode: If true will use json_encode() (default: true) - * - includeLineNumbers: If true will include line numbers and filenames (default: true) - * - * @param array $Options The options to be set - * @return void - */ - public function setOptions($Options) { - $this->options = array_merge($this->options,$Options); - } - - /** - * Register FirePHP as your error handler - * - * Will throw exceptions for each php error. - */ - public function registerErrorHandler() - { - //NOTE: The following errors will not be caught by this error handler: - // E_ERROR, E_PARSE, E_CORE_ERROR, - // E_CORE_WARNING, E_COMPILE_ERROR, - // E_COMPILE_WARNING, E_STRICT - set_error_handler(array($this,'errorHandler')); - } - - /** - * FirePHP's error handler - * - * Throws exception for each php error that will occur. - * - * @param int $errno - * @param string $errstr - * @param string $errfile - * @param int $errline - * @param array $errcontext - */ - public function errorHandler($errno, $errstr, $errfile, $errline, $errcontext) - { - // Don't throw exception if error reporting is switched off - if (error_reporting() == 0) { - return; + /** + * Gets singleton instance of FirePHP + * + * @param boolean $autoCreate + * @return FirePHP + */ + public static function getInstance($autoCreate = false) + { + if ($autoCreate === true && !self::$instance) { + self::init(); + } + return self::$instance; } - // Only throw exceptions for errors we are asking for - if (error_reporting() & $errno) { - throw new ErrorException($errstr, 0, $errno, $errfile, $errline); + + /** + * Creates FirePHP object and stores it for singleton access + * + * @return FirePHP + */ + public static function init() + { + return self::setInstance(new self()); } - } - - /** - * Register FirePHP as your exception handler - */ - public function registerExceptionHandler() - { - set_exception_handler(array($this,'exceptionHandler')); - } - - /** - * FirePHP's exception handler - * - * Logs all exceptions to your firebug console and then stops the script. - * - * @param Exception $Exception - * @throws Exception - */ - function exceptionHandler($Exception) { - $this->fb($Exception); - } - - /** - * Set custom processor url for FirePHP - * - * @param string $URL - */ - public function setProcessorUrl($URL) - { - $this->setHeader('X-FirePHP-ProcessorURL', $URL); - } - - /** - * Set custom renderer url for FirePHP - * - * @param string $URL - */ - public function setRendererUrl($URL) - { - $this->setHeader('X-FirePHP-RendererURL', $URL); - } - - /** - * Start a group for following messages - * - * @param string $Name - * @return true - * @throws Exception - */ - public function group($Name) { - return $this->fb(null, $Name, FirePHP::GROUP_START); - } - - /** - * Ends a group you have started before - * - * @return true - * @throws Exception - */ - public function groupEnd() { - return $this->fb(null, null, FirePHP::GROUP_END); - } - - /** - * Log object with label to firebug console - * - * @see FirePHP::LOG - * @param mixes $Object - * @param string $Label - * @return true - * @throws Exception - */ - public function log($Object, $Label=null) { - return $this->fb($Object, $Label, FirePHP::LOG); - } - - /** - * Log object with label to firebug console - * - * @see FirePHP::INFO - * @param mixes $Object - * @param string $Label - * @return true - * @throws Exception - */ - public function info($Object, $Label=null) { - return $this->fb($Object, $Label, FirePHP::INFO); - } - - /** - * Log object with label to firebug console - * - * @see FirePHP::WARN - * @param mixes $Object - * @param string $Label - * @return true - * @throws Exception - */ - public function warn($Object, $Label=null) { - return $this->fb($Object, $Label, FirePHP::WARN); - } - - /** - * Log object with label to firebug console - * - * @see FirePHP::ERROR - * @param mixes $Object - * @param string $Label - * @return true - * @throws Exception - */ - public function error($Object, $Label=null) { - return $this->fb($Object, $Label, FirePHP::ERROR); - } - - /** - * Dumps key and variable to firebug server panel - * - * @see FirePHP::DUMP - * @param string $Key - * @param mixed $Variable - * @return true - * @throws Exception - */ - public function dump($Key, $Variable) { - return $this->fb($Variable, $Key, FirePHP::DUMP); - } - - /** - * Log a trace in the firebug console - * - * @see FirePHP::TRACE - * @param string $Label - * @return true - * @throws Exception - */ - public function trace($Label) { - return $this->fb($Label, FirePHP::TRACE); - } - - /** - * Log a table in the firebug console - * - * @see FirePHP::TABLE - * @param string $Label - * @param string $Table - * @return true - * @throws Exception - */ - public function table($Label, $Table) { - return $this->fb($Table, $Label, FirePHP::TABLE); - } - - /** - * Check if FirePHP is installed on client - * - * @return boolean - */ - public function detectClientExtension() { - /* Check if FirePHP is installed on client */ - if(!@preg_match_all('/\sFirePHP\/([\.|\d]*)\s?/si',$this->getUserAgent(),$m) || - !version_compare($m[1][0],'0.0.6','>=')) { - return false; + + /** + * Set the instance of the FirePHP singleton + * + * @param FirePHP $instance The FirePHP object instance + * @return FirePHP + */ + public static function setInstance($instance) + { + return self::$instance = $instance; + } + + /** + * Set an Insight console to direct all logging calls to + * + * @param object $console The console object to log to + * @return void + */ + public function setLogToInsightConsole($console) + { + if (is_string($console)) { + if (get_class($this) != 'FirePHP_Insight' && !is_subclass_of($this, 'FirePHP_Insight')) { + throw new Exception('FirePHP instance not an instance or subclass of FirePHP_Insight!'); + } + $this->logToInsightConsole = $this->to('request')->console($console); + } else { + $this->logToInsightConsole = $console; + } + } + + /** + * Enable and disable logging to Firebug + * + * @param boolean $enabled TRUE to enable, FALSE to disable + * @return void + */ + public function setEnabled($enabled) + { + $this->enabled = $enabled; + } + + /** + * Check if logging is enabled + * + * @return boolean TRUE if enabled + */ + public function getEnabled() + { + return $this->enabled; + } + + /** + * Specify a filter to be used when encoding an object + * + * Filters are used to exclude object members. + * + * @param string $class The class name of the object + * @param array $filter An array of members to exclude + * @return void + */ + public function setObjectFilter($class, $filter) + { + $this->objectFilters[strtolower($class)] = $filter; } - return true; - } - - /** - * Log varible to Firebug - * - * @see http://www.firephp.org/Wiki/Reference/Fb - * @param mixed $Object The variable to be logged - * @return true Return TRUE if message was added to headers, FALSE otherwise - * @throws Exception - */ - public function fb($Object) { - if(!$this->enabled) { - return false; + /** + * Set some options for the library + * + * Options: + * - maxDepth: The maximum depth to traverse (default: 10) + * - maxObjectDepth: The maximum depth to traverse objects (default: 5) + * - maxArrayDepth: The maximum depth to traverse arrays (default: 5) + * - useNativeJsonEncode: If true will use json_encode() (default: true) + * - includeLineNumbers: If true will include line numbers and filenames (default: true) + * + * @param array $options The options to be set + * @return void + */ + public function setOptions($options) + { + $this->options = array_merge($this->options, $options); + } + + /** + * Get options from the library + * + * @return array The currently set options + */ + public function getOptions() + { + return $this->options; + } + + /** + * Set an option for the library + * + * @param string $name + * @param mixed $value + * @return void + * @throws Exception + */ + public function setOption($name, $value) + { + if (!isset($this->options[$name])) { + throw $this->newException('Unknown option: ' . $name); + } + $this->options[$name] = $value; + } + + /** + * Get an option from the library + * + * @param string $name + * @return mixed + * @throws Exception + */ + public function getOption($name) + { + if (!isset($this->options[$name])) { + throw $this->newException('Unknown option: ' . $name); + } + return $this->options[$name]; + } + + /** + * Register FirePHP as your error handler + * + * Will throw exceptions for each php error. + * + * @return mixed Returns a string containing the previously defined error handler (if any) + */ + public function registerErrorHandler($throwErrorExceptions = false) + { + //NOTE: The following errors will not be caught by this error handler: + // E_ERROR, E_PARSE, E_CORE_ERROR, + // E_CORE_WARNING, E_COMPILE_ERROR, + // E_COMPILE_WARNING, E_STRICT + + $this->throwErrorExceptions = $throwErrorExceptions; + + return set_error_handler(array($this, 'errorHandler')); + } + + /** + * FirePHP's error handler + * + * Throws exception for each php error that will occur. + * + * @param integer $errno + * @param string $errstr + * @param string $errfile + * @param integer $errline + * @param array $errcontext + */ + public function errorHandler($errno, $errstr, $errfile, $errline, $errcontext) + { + // Don't throw exception if error reporting is switched off + if (error_reporting() == 0) { + return; + } + // Only throw exceptions for errors we are asking for + if (error_reporting() & $errno) { + + $exception = new ErrorException($errstr, 0, $errno, $errfile, $errline); + if ($this->throwErrorExceptions) { + throw $exception; + } else { + $this->fb($exception); + } + } } - if (headers_sent($filename, $linenum)) { - throw $this->newException('Headers already sent in '.$filename.' on line '.$linenum.'. Cannot send log data to FirePHP. You must have Output Buffering enabled via ob_start() or output_buffering ini directive.'); + /** + * Register FirePHP as your exception handler + * + * @return mixed Returns the name of the previously defined exception handler, + * or NULL on error. + * If no previous handler was defined, NULL is also returned. + */ + public function registerExceptionHandler() + { + return set_exception_handler(array($this, 'exceptionHandler')); } - $Type = null; - $Label = null; + /** + * FirePHP's exception handler + * + * Logs all exceptions to your firebug console and then stops the script. + * + * @param Exception $exception + * @throws Exception + */ + function exceptionHandler($exception) + { + $this->inExceptionHandler = true; + + header('HTTP/1.1 500 Internal Server Error'); + + try { + $this->fb($exception); + } catch (Exception $e) { + echo 'We had an exception: ' . $e; + } + + $this->inExceptionHandler = false; + } - if(func_num_args()==1) { - } else - if(func_num_args()==2) { - switch(func_get_arg(1)) { - case self::LOG: - case self::INFO: - case self::WARN: - case self::ERROR: - case self::DUMP: - case self::TRACE: - case self::EXCEPTION: - case self::TABLE: - case self::GROUP_START: - case self::GROUP_END: - $Type = func_get_arg(1); - break; - default: - $Label = func_get_arg(1); - break; - } - } else - if(func_num_args()==3) { - $Type = func_get_arg(2); - $Label = func_get_arg(1); - } else { - throw $this->newException('Wrong number of arguments to fb() function!'); + /** + * Register FirePHP driver as your assert callback + * + * @param boolean $convertAssertionErrorsToExceptions + * @param boolean $throwAssertionExceptions + * @return mixed Returns the original setting or FALSE on errors + */ + public function registerAssertionHandler($convertAssertionErrorsToExceptions = true, $throwAssertionExceptions = false) + { + $this->convertAssertionErrorsToExceptions = $convertAssertionErrorsToExceptions; + $this->throwAssertionExceptions = $throwAssertionExceptions; + + if ($throwAssertionExceptions && !$convertAssertionErrorsToExceptions) { + throw $this->newException('Cannot throw assertion exceptions as assertion errors are not being converted to exceptions!'); + } + + return assert_options(ASSERT_CALLBACK, array($this, 'assertionHandler')); } + /** + * FirePHP's assertion handler + * + * Logs all assertions to your firebug console and then stops the script. + * + * @param string $file File source of assertion + * @param integer $line Line source of assertion + * @param mixed $code Assertion code + */ + public function assertionHandler($file, $line, $code) + { + if ($this->convertAssertionErrorsToExceptions) { + + $exception = new ErrorException('Assertion Failed - Code[ ' . $code . ' ]', 0, null, $file, $line); + + if ($this->throwAssertionExceptions) { + throw $exception; + } else { + $this->fb($exception); + } + + } else { + $this->fb($code, 'Assertion Failed', FirePHP::ERROR, array('File' => $file, 'Line' => $line)); + } + } - if(!$this->detectClientExtension()) { - return false; + /** + * Start a group for following messages. + * + * Options: + * Collapsed: [true|false] + * Color: [#RRGGBB|ColorName] + * + * @param string $name + * @param array $options OPTIONAL Instructions on how to log the group + * @return true + * @throws Exception + */ + public function group($name, $options = null) + { + + if ( !isset($name) ) { + throw $this->newException('You must specify a label for the group!'); + } + + if ($options) { + if (!is_array($options)) { + throw $this->newException('Options must be defined as an array!'); + } + if (array_key_exists('Collapsed', $options)) { + $options['Collapsed'] = ($options['Collapsed']) ? 'true' : 'false'; + } + } + + return $this->fb(null, $name, FirePHP::GROUP_START, $options); } - $meta = array(); - $skipFinalObjectEncode = false; + /** + * Ends a group you have started before + * + * @return true + * @throws Exception + */ + public function groupEnd() + { + return $this->fb(null, null, FirePHP::GROUP_END); + } + + /** + * Log object with label to firebug console + * + * @see FirePHP::LOG + * @param mixes $object + * @param string $label + * @return true + * @throws Exception + */ + public function log($object, $label = null, $options = array()) + { + return $this->fb($object, $label, FirePHP::LOG, $options); + } + + /** + * Log object with label to firebug console + * + * @see FirePHP::INFO + * @param mixes $object + * @param string $label + * @return true + * @throws Exception + */ + public function info($object, $label = null, $options = array()) + { + return $this->fb($object, $label, FirePHP::INFO, $options); + } + + /** + * Log object with label to firebug console + * + * @see FirePHP::WARN + * @param mixes $object + * @param string $label + * @return true + * @throws Exception + */ + public function warn($object, $label = null, $options = array()) + { + return $this->fb($object, $label, FirePHP::WARN, $options); + } + + /** + * Log object with label to firebug console + * + * @see FirePHP::ERROR + * @param mixes $object + * @param string $label + * @return true + * @throws Exception + */ + public function error($object, $label = null, $options = array()) + { + return $this->fb($object, $label, FirePHP::ERROR, $options); + } + + /** + * Dumps key and variable to firebug server panel + * + * @see FirePHP::DUMP + * @param string $key + * @param mixed $variable + * @return true + * @throws Exception + */ + public function dump($key, $variable, $options = array()) + { + if (!is_string($key)) { + throw $this->newException('Key passed to dump() is not a string'); + } + if (strlen($key) > 100) { + throw $this->newException('Key passed to dump() is longer than 100 characters'); + } + if (!preg_match_all('/^[a-zA-Z0-9-_\.:]*$/', $key, $m)) { + throw $this->newException('Key passed to dump() contains invalid characters [a-zA-Z0-9-_\.:]'); + } + return $this->fb($variable, $key, FirePHP::DUMP, $options); + } - if($Object instanceof Exception) { + /** + * Log a trace in the firebug console + * + * @see FirePHP::TRACE + * @param string $label + * @return true + * @throws Exception + */ + public function trace($label) + { + return $this->fb($label, FirePHP::TRACE); + } + + /** + * Log a table in the firebug console + * + * @see FirePHP::TABLE + * @param string $label + * @param string $table + * @return true + * @throws Exception + */ + public function table($label, $table, $options = array()) + { + return $this->fb($table, $label, FirePHP::TABLE, $options); + } - $meta['file'] = $this->_escapeTraceFile($Object->getFile()); - $meta['line'] = $Object->getLine(); - - $trace = $Object->getTrace(); - if($Object instanceof ErrorException - && isset($trace[0]['function']) - && $trace[0]['function']=='errorHandler' - && isset($trace[0]['class']) - && $trace[0]['class']=='FirePHP') { - - $severity = false; - switch($Object->getSeverity()) { - case E_WARNING: $severity = 'E_WARNING'; break; - case E_NOTICE: $severity = 'E_NOTICE'; break; - case E_USER_ERROR: $severity = 'E_USER_ERROR'; break; - case E_USER_WARNING: $severity = 'E_USER_WARNING'; break; - case E_USER_NOTICE: $severity = 'E_USER_NOTICE'; break; - case E_STRICT: $severity = 'E_STRICT'; break; - case E_RECOVERABLE_ERROR: $severity = 'E_RECOVERABLE_ERROR'; break; - case E_DEPRECATED: $severity = 'E_DEPRECATED'; break; - case E_USER_DEPRECATED: $severity = 'E_USER_DEPRECATED'; break; + /** + * Insight API wrapper + * + * @see Insight_Helper::to() + */ + public static function to() + { + $instance = self::getInstance(); + if (!method_exists($instance, '_to')) { + throw new Exception('FirePHP::to() implementation not loaded'); } - - $Object = array('Class'=>get_class($Object), - 'Message'=>$severity.': '.$Object->getMessage(), - 'File'=>$this->_escapeTraceFile($Object->getFile()), - 'Line'=>$Object->getLine(), - 'Type'=>'trigger', - 'Trace'=>$this->_escapeTrace(array_splice($trace,2))); - $skipFinalObjectEncode = true; - } else { - $Object = array('Class'=>get_class($Object), - 'Message'=>$Object->getMessage(), - 'File'=>$this->_escapeTraceFile($Object->getFile()), - 'Line'=>$Object->getLine(), - 'Type'=>'throw', - 'Trace'=>$this->_escapeTrace($trace)); - $skipFinalObjectEncode = true; - } - $Type = self::EXCEPTION; - - } else - if($Type==self::TRACE) { - - $trace = debug_backtrace(); - if(!$trace) return false; - for( $i=0 ; $i_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php' - || substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) { - /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */ - } else - if(isset($trace[$i]['class']) - && isset($trace[$i+1]['file']) - && $trace[$i]['class']=='FirePHP' - && substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') { - /* Skip fb() */ + $args = func_get_args(); + return call_user_func_array(array($instance, '_to'), $args); + } + + /** + * Insight API wrapper + * + * @see Insight_Helper::plugin() + */ + public static function plugin() + { + $instance = self::getInstance(); + if (!method_exists($instance, '_plugin')) { + throw new Exception('FirePHP::plugin() implementation not loaded'); + } + $args = func_get_args(); + return call_user_func_array(array($instance, '_plugin'), $args); + } + + /** + * Check if FirePHP is installed on client + * + * @return boolean + */ + public function detectClientExtension() + { + // Check if FirePHP is installed on client via User-Agent header + if (@preg_match_all('/\sFirePHP\/([\.\d]*)\s?/si', $this->getUserAgent(), $m) && + version_compare($m[1][0], '0.0.6', '>=')) { + return true; } else - if($trace[$i]['function']=='fb' - || $trace[$i]['function']=='trace' - || $trace[$i]['function']=='send') { - $Object = array('Class'=>isset($trace[$i]['class'])?$trace[$i]['class']:'', - 'Type'=>isset($trace[$i]['type'])?$trace[$i]['type']:'', - 'Function'=>isset($trace[$i]['function'])?$trace[$i]['function']:'', - 'Message'=>$trace[$i]['args'][0], - 'File'=>isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):'', - 'Line'=>isset($trace[$i]['line'])?$trace[$i]['line']:'', - 'Args'=>isset($trace[$i]['args'])?$this->encodeObject($trace[$i]['args']):'', - 'Trace'=>$this->_escapeTrace(array_splice($trace,$i+1))); - - $skipFinalObjectEncode = true; - $meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):''; - $meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:''; - break; + // Check if FirePHP is installed on client via X-FirePHP-Version header + if (@preg_match_all('/^([\.\d]*)$/si', $this->getRequestHeader('X-FirePHP-Version'), $m) && + version_compare($m[1][0], '0.0.6', '>=')) { + return true; + } + return false; + } + + /** + * Log varible to Firebug + * + * @see http://www.firephp.org/Wiki/Reference/Fb + * @param mixed $object The variable to be logged + * @return boolean Return TRUE if message was added to headers, FALSE otherwise + * @throws Exception + */ + public function fb($object) + { + if ($this instanceof FirePHP_Insight && method_exists($this, '_logUpgradeClientMessage')) { + if (!FirePHP_Insight::$upgradeClientMessageLogged) { // avoid infinite recursion as _logUpgradeClientMessage() logs a message + $this->_logUpgradeClientMessage(); + } } - } - } else - if($Type==self::TABLE) { - - if(isset($Object[0]) && is_string($Object[0])) { - $Object[1] = $this->encodeTable($Object[1]); - } else { - $Object = $this->encodeTable($Object); - } + static $insightGroupStack = array(); - $skipFinalObjectEncode = true; - - } else { - if($Type===null) { - $Type = self::LOG; - } - } - - if($this->options['includeLineNumbers']) { - if(!isset($meta['file']) || !isset($meta['line'])) { + if (!$this->getEnabled()) { + return false; + } - $trace = debug_backtrace(); - for( $i=0 ; $trace && $i_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php' - || substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) { - /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */ - } else - if(isset($trace[$i]['class']) - && isset($trace[$i+1]['file']) - && $trace[$i]['class']=='FirePHP' - && substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') { - /* Skip fb() */ - } else - if(isset($trace[$i]['file']) - && substr($this->_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php') { - /* Skip FB::fb() */ - } else { - $meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):''; - $meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:''; - break; - } - } + if ($this->headersSent($filename, $linenum)) { + // If we are logging from within the exception handler we cannot throw another exception + if ($this->inExceptionHandler) { + // Simply echo the error out to the page + echo '
FirePHP ERROR: Headers already sent in ' . $filename . ' on line ' . $linenum . '. Cannot send log data to FirePHP. You must have Output Buffering enabled via ob_start() or output_buffering ini directive.
'; + } else { + throw $this->newException('Headers already sent in ' . $filename . ' on line ' . $linenum . '. Cannot send log data to FirePHP. You must have Output Buffering enabled via ob_start() or output_buffering ini directive.'); + } + } - } - } else { - unset($meta['file']); - unset($meta['line']); - } + $type = null; + $label = null; + $options = array(); + + if (func_num_args() == 1) { + } else if (func_num_args() == 2) { + switch (func_get_arg(1)) { + case self::LOG: + case self::INFO: + case self::WARN: + case self::ERROR: + case self::DUMP: + case self::TRACE: + case self::EXCEPTION: + case self::TABLE: + case self::GROUP_START: + case self::GROUP_END: + $type = func_get_arg(1); + break; + default: + $label = func_get_arg(1); + break; + } + } else if (func_num_args() == 3) { + $type = func_get_arg(2); + $label = func_get_arg(1); + } else if (func_num_args() == 4) { + $type = func_get_arg(2); + $label = func_get_arg(1); + $options = func_get_arg(3); + } else { + throw $this->newException('Wrong number of arguments to fb() function!'); + } - $this->setHeader('X-Wf-Protocol-1','http://meta.wildfirehq.org/Protocol/JsonStream/0.2'); - $this->setHeader('X-Wf-1-Plugin-1','http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/'.self::VERSION); - - $structure_index = 1; - if($Type==self::DUMP) { - $structure_index = 2; - $this->setHeader('X-Wf-1-Structure-2','http://meta.firephp.org/Wildfire/Structure/FirePHP/Dump/0.1'); - } else { - $this->setHeader('X-Wf-1-Structure-1','http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1'); - } - - if($Type==self::DUMP) { - $msg = '{"'.$Label.'":'.$this->jsonEncode($Object, $skipFinalObjectEncode).'}'; - } else { - $msg_meta = array('Type'=>$Type); - if($Label!==null) { - $msg_meta['Label'] = $Label; - } - if(isset($meta['file'])) { - $msg_meta['File'] = $meta['file']; - } - if(isset($meta['line'])) { - $msg_meta['Line'] = $meta['line']; - } - $msg = '['.$this->jsonEncode($msg_meta).','.$this->jsonEncode($Object, $skipFinalObjectEncode).']'; - } - - $parts = explode("\n",chunk_split($msg, 5000, "\n")); + // Get folder name where firephp is located. + $parentFolder = basename(dirname(__FILE__)); + $parentFolderLength = strlen( $parentFolder ); + $fbLength = 7 + $parentFolderLength; + $fireClassLength = 18 + $parentFolderLength; + + if ($this->logToInsightConsole !== null && (get_class($this) == 'FirePHP_Insight' || is_subclass_of($this, 'FirePHP_Insight'))) { + $trace = debug_backtrace(); + if (!$trace) return false; + for ($i = 0; $i < sizeof($trace); $i++) { + if (isset($trace[$i]['class'])) { + if ($trace[$i]['class'] == 'FirePHP' || $trace[$i]['class'] == 'FB') { + continue; + } + } + if (isset($trace[$i]['file'])) { + $path = $this->_standardizePath($trace[$i]['file']); + if (substr($path, -1*$fbLength, $fbLength) == $parentFolder.'/fb.php' || substr($path, -1*$fireClassLength, $fireClassLength) == $parentFolder.'/FirePHP.class.php') { + continue; + } + } + if (isset($trace[$i]['function']) && $trace[$i]['function'] == 'fb' && + isset($trace[$i - 1]['file']) && substr($this->_standardizePath($trace[$i - 1]['file']), -1*$fbLength, $fbLength) == $parentFolder.'/fb.php') { + continue; + } + if (isset($trace[$i]['class']) && $trace[$i]['class'] == 'FB' && + isset($trace[$i - 1]['file']) && substr($this->_standardizePath($trace[$i - 1]['file']), -1*$fbLength, $fbLength) == $parentFolder.'/fb.php') { + continue; + } + break; + } + // adjust trace offset + $msg = $this->logToInsightConsole->option('encoder.trace.offsetAdjustment', $i); - for( $i=0 ; $ilabel($label); + } + switch ($type) { + case self::DUMP: + case self::LOG: + return $msg->log($object); + case self::INFO: + return $msg->info($object); + case self::WARN: + return $msg->warn($object); + case self::ERROR: + return $msg->error($object); + case self::TRACE: + return $msg->trace($object); + case self::EXCEPTION: + return $this->plugin('error')->handleException($object, $msg); + case self::TABLE: + if (isset($object[0]) && !is_string($object[0]) && $label) { + $object = array($label, $object); + } + return $msg->table($object[0], array_slice($object[1], 1), $object[1][0]); + case self::GROUP_START: + $insightGroupStack[] = $msg->group(md5($label))->open(); + return $msg->log($label); + case self::GROUP_END: + if (count($insightGroupStack) == 0) { + throw new Error('Too many groupEnd() as opposed to group() calls!'); + } + $group = array_pop($insightGroupStack); + return $group->close(); + default: + return $msg->log($object); + } + } + + if (!$this->detectClientExtension()) { + return false; + } + + $meta = array(); + $skipFinalObjectEncode = false; + + if ($object instanceof Exception) { + + $meta['file'] = $this->_escapeTraceFile($object->getFile()); + $meta['line'] = $object->getLine(); + + $trace = $object->getTrace(); + if ($object instanceof ErrorException + && isset($trace[0]['function']) + && $trace[0]['function'] == 'errorHandler' + && isset($trace[0]['class']) + && $trace[0]['class'] == 'FirePHP') { + + $severity = false; + switch ($object->getSeverity()) { + case E_WARNING: + $severity = 'E_WARNING'; + break; + + case E_NOTICE: + $severity = 'E_NOTICE'; + break; + + case E_USER_ERROR: + $severity = 'E_USER_ERROR'; + break; + + case E_USER_WARNING: + $severity = 'E_USER_WARNING'; + break; + + case E_USER_NOTICE: + $severity = 'E_USER_NOTICE'; + break; + + case E_STRICT: + $severity = 'E_STRICT'; + break; + + case E_RECOVERABLE_ERROR: + $severity = 'E_RECOVERABLE_ERROR'; + break; + + case E_DEPRECATED: + $severity = 'E_DEPRECATED'; + break; + + case E_USER_DEPRECATED: + $severity = 'E_USER_DEPRECATED'; + break; + } + + $object = array('Class' => get_class($object), + 'Message' => $severity . ': ' . $object->getMessage(), + 'File' => $this->_escapeTraceFile($object->getFile()), + 'Line' => $object->getLine(), + 'Type' => 'trigger', + 'Trace' => $this->_escapeTrace(array_splice($trace, 2))); + $skipFinalObjectEncode = true; + } else { + $object = array('Class' => get_class($object), + 'Message' => $object->getMessage(), + 'File' => $this->_escapeTraceFile($object->getFile()), + 'Line' => $object->getLine(), + 'Type' => 'throw', + 'Trace' => $this->_escapeTrace($trace)); + $skipFinalObjectEncode = true; + } + $type = self::EXCEPTION; + + } else if ($type == self::TRACE) { + + $trace = debug_backtrace(); + if (!$trace) return false; + for ($i = 0; $i < sizeof($trace); $i++) { + + if (isset($trace[$i]['class']) + && isset($trace[$i]['file']) + && ($trace[$i]['class'] == 'FirePHP' + || $trace[$i]['class'] == 'FB') + && (substr($this->_standardizePath($trace[$i]['file']), -1*$fbLength, $fbLength) == $parentFolder.'/fb.php' + || substr($this->_standardizePath($trace[$i]['file']), -1*$fireClassLength, $fireClassLength) == $parentFolder.'/FirePHP.class.php')) { + /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */ + } else + if (isset($trace[$i]['class']) + && isset($trace[$i+1]['file']) + && $trace[$i]['class'] == 'FirePHP' + && substr($this->_standardizePath($trace[$i + 1]['file']), -1*$fbLength, $fbLength) == $parentFolder.'/fb.php') { + /* Skip fb() */ + } else + if ($trace[$i]['function'] == 'fb' + || $trace[$i]['function'] == 'trace' + || $trace[$i]['function'] == 'send') { + + $object = array('Class' => isset($trace[$i]['class']) ? $trace[$i]['class'] : '', + 'Type' => isset($trace[$i]['type']) ? $trace[$i]['type'] : '', + 'Function' => isset($trace[$i]['function']) ? $trace[$i]['function'] : '', + 'Message' => $trace[$i]['args'][0], + 'File' => isset($trace[$i]['file']) ? $this->_escapeTraceFile($trace[$i]['file']) : '', + 'Line' => isset($trace[$i]['line']) ? $trace[$i]['line'] : '', + 'Args' => isset($trace[$i]['args']) ? $this->encodeObject($trace[$i]['args']) : '', + 'Trace' => $this->_escapeTrace(array_splice($trace, $i + 1))); - $part = $parts[$i]; - if ($part) { - - if(count($parts)>2) { - // Message needs to be split into multiple parts - $this->setHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex, - (($i==0)?strlen($msg):'') - . '|' . $part . '|' - . (($i_escapeTraceFile($trace[$i]['file']) : ''; + $meta['line'] = isset($trace[$i]['line']) ? $trace[$i]['line'] : ''; + break; + } + } + + } else + if ($type == self::TABLE) { + + if (isset($object[0]) && is_string($object[0])) { + $object[1] = $this->encodeTable($object[1]); } else { - $this->setHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex, - strlen($part) . '|' . $part . '|'); + $object = $this->encodeTable($object); } - - $this->messageIndex++; - - if ($this->messageIndex > 99999) { - throw new Exception('Maximum number (99,999) of messages reached!'); + + $skipFinalObjectEncode = true; + + } else if ($type == self::GROUP_START) { + + if (!$label) { + throw $this->newException('You must specify a label for the group!'); + } + + } else { + if ($type === null) { + $type = self::LOG; } } - } + + if ($this->options['includeLineNumbers']) { + if (!isset($meta['file']) || !isset($meta['line'])) { + + $trace = debug_backtrace(); + for ($i = 0; $trace && $i < sizeof($trace); $i++) { + + if (isset($trace[$i]['class']) + && isset($trace[$i]['file']) + && ($trace[$i]['class'] == 'FirePHP' + || $trace[$i]['class'] == 'FB') + && (substr($this->_standardizePath($trace[$i]['file']), -1*$fbLength, $fbLength) == $parentFolder.'/fb.php' + || substr($this->_standardizePath($trace[$i]['file']), -1*$fireClassLength, $fireClassLength) == $parentFolder.'/FirePHP.class.php')) { + /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */ + } else + if (isset($trace[$i]['class']) + && isset($trace[$i + 1]['file']) + && $trace[$i]['class'] == 'FirePHP' + && substr($this->_standardizePath($trace[$i + 1]['file']), -1*$fbLength, $fbLength) == $parentFolder.'/fb.php') { + /* Skip fb() */ + } else + if (isset($trace[$i]['file']) + && substr($this->_standardizePath($trace[$i]['file']), -1*$fbLength, $fbLength) == $parentFolder.'/fb.php') { + /* Skip FB::fb() */ + } else { + $meta['file'] = isset($trace[$i]['file']) ? $this->_escapeTraceFile($trace[$i]['file']) : ''; + $meta['line'] = isset($trace[$i]['line']) ? $trace[$i]['line'] : ''; + break; + } + } + } + } else { + unset($meta['file']); + unset($meta['line']); + } - $this->setHeader('X-Wf-1-Index',$this->messageIndex-1); + $this->setHeader('X-Wf-Protocol-1', 'http://meta.wildfirehq.org/Protocol/JsonStream/0.2'); + $this->setHeader('X-Wf-1-Plugin-1', 'http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/' . self::VERSION); + + $structureIndex = 1; + if ($type == self::DUMP) { + $structureIndex = 2; + $this->setHeader('X-Wf-1-Structure-2', 'http://meta.firephp.org/Wildfire/Structure/FirePHP/Dump/0.1'); + } else { + $this->setHeader('X-Wf-1-Structure-1', 'http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1'); + } + + if ($type == self::DUMP) { + $msg = '{"' . $label . '":' . $this->jsonEncode($object, $skipFinalObjectEncode) . '}'; + } else { + $msgMeta = $options; + $msgMeta['Type'] = $type; + if ($label !== null) { + $msgMeta['Label'] = $label; + } + if (isset($meta['file']) && !isset($msgMeta['File'])) { + $msgMeta['File'] = $meta['file']; + } + if (isset($meta['line']) && !isset($msgMeta['Line'])) { + $msgMeta['Line'] = $meta['line']; + } + $msg = '[' . $this->jsonEncode($msgMeta) . ',' . $this->jsonEncode($object, $skipFinalObjectEncode) . ']'; + } + + $parts = explode("\n", chunk_split($msg, 5000, "\n")); - return true; - } - - /** - * Standardizes path for windows systems. - * - * @param string $Path - * @return string - */ - protected function _standardizePath($Path) { - return preg_replace('/\\\\+/','/',$Path); - } + for ($i = 0; $i < count($parts); $i++) { + + $part = $parts[$i]; + if ($part) { + + if (count($parts) > 2) { + // Message needs to be split into multiple parts + $this->setHeader('X-Wf-1-' . $structureIndex . '-' . '1-' . $this->messageIndex, + (($i == 0) ? strlen($msg) : '') + . '|' . $part . '|' + . (($i < count($parts) - 2) ? '\\' : '')); + } else { + $this->setHeader('X-Wf-1-' . $structureIndex . '-' . '1-' . $this->messageIndex, + strlen($part) . '|' . $part . '|'); + } + + $this->messageIndex++; + + if ($this->messageIndex > 99999) { + throw $this->newException('Maximum number (99,999) of messages reached!'); + } + } + } + + $this->setHeader('X-Wf-1-Index', $this->messageIndex - 1); + + return true; + } - /** - * Escape trace path for windows systems - * - * @param array $Trace - * @return array - */ - protected function _escapeTrace($Trace) { - if(!$Trace) return $Trace; - for( $i=0 ; $i_escapeTraceFile($Trace[$i]['file']); - } - if(isset($Trace[$i]['args'])) { - $Trace[$i]['args'] = $this->encodeObject($Trace[$i]['args']); - } + /** + * Standardizes path for windows systems. + * + * @param string $path + * @return string + */ + protected function _standardizePath($path) + { + return preg_replace('/\\\\+/', '/', $path); } - return $Trace; - } - /** - * Escape file information of trace for windows systems - * - * @param string $File - * @return string - */ - protected function _escapeTraceFile($File) { - /* Check if we have a windows filepath */ - if(strpos($File,'\\')) { - /* First strip down to single \ */ - - $file = preg_replace('/\\\\+/','\\',$File); - - return $file; + /** + * Escape trace path for windows systems + * + * @param array $trace + * @return array + */ + protected function _escapeTrace($trace) + { + if (!$trace) return $trace; + for ($i = 0; $i < sizeof($trace); $i++) { + if (isset($trace[$i]['file'])) { + $trace[$i]['file'] = $this->_escapeTraceFile($trace[$i]['file']); + } + if (isset($trace[$i]['args'])) { + $trace[$i]['args'] = $this->encodeObject($trace[$i]['args']); + } + } + return $trace; } - return $File; - } - - /** - * Send header - * - * @param string $Name - * @param string_type $Value - */ - protected function setHeader($Name, $Value) { - return header($Name.': '.$Value); - } - - /** - * Get user agent - * - * @return string|false - */ - protected function getUserAgent() { - if(!isset($_SERVER['HTTP_USER_AGENT'])) return false; - return $_SERVER['HTTP_USER_AGENT']; - } - - /** - * Returns a new exception - * - * @param string $Message - * @return Exception - */ - protected function newException($Message) { - return new Exception($Message); - } - /** - * Encode an object into a JSON string - * - * Uses PHP's jeson_encode() if available - * - * @param object $Object The object to be encoded - * @return string The JSON string - */ - protected function jsonEncode($Object, $skipObjectEncode=false) - { - if(!$skipObjectEncode) { - $Object = $this->encodeObject($Object); + /** + * Escape file information of trace for windows systems + * + * @param string $file + * @return string + */ + protected function _escapeTraceFile($file) + { + /* Check if we have a windows filepath */ + if (strpos($file, '\\')) { + /* First strip down to single \ */ + + $file = preg_replace('/\\\\+/', '\\', $file); + + return $file; + } + return $file; } - - if(function_exists('json_encode') - && $this->options['useNativeJsonEncode']!=false) { - return json_encode($Object); - } else { - return $this->json_encode($Object); + /** + * Check if headers have already been sent + * + * @param string $filename + * @param integer $linenum + */ + protected function headersSent(&$filename, &$linenum) + { + return headers_sent($filename, $linenum); } - } - - /** - * Encodes a table by encoding each row and column with encodeObject() - * - * @param array $Table The table to be encoded - * @return array - */ - protected function encodeTable($Table) { - if(!$Table) return $Table; - for( $i=0 ; $iencodeObject($Table[$i][$j]); + + /** + * Send header + * + * @param string $name + * @param string $value + */ + protected function setHeader($name, $value) + { + return header($name . ': ' . $value); + } + + /** + * Get user agent + * + * @return string|false + */ + protected function getUserAgent() + { + if (!isset($_SERVER['HTTP_USER_AGENT'])) return false; + return $_SERVER['HTTP_USER_AGENT']; + } + + /** + * Get all request headers + * + * @return array + */ + public static function getAllRequestHeaders() + { + static $_cachedHeaders = false; + if ($_cachedHeaders !== false) { + return $_cachedHeaders; + } + $headers = array(); + if (function_exists('getallheaders')) { + foreach (getallheaders() as $name => $value) { + $headers[strtolower($name)] = $value; + } + } else { + foreach ($_SERVER as $name => $value) { + if (substr($name, 0, 5) == 'HTTP_') { + $headers[strtolower(str_replace(' ', '-', str_replace('_', ' ', substr($name, 5))))] = $value; + } + } + } + return $_cachedHeaders = $headers; + } + + /** + * Get a request header + * + * @return string|false + */ + protected function getRequestHeader($name) + { + $headers = self::getAllRequestHeaders(); + if (isset($headers[strtolower($name)])) { + return $headers[strtolower($name)]; } - } + return false; + } + + /** + * Returns a new exception + * + * @param string $message + * @return Exception + */ + protected function newException($message) + { + return new Exception($message); } - return $Table; - } - /** - * Encodes an object including members with - * protected and private visibility - * - * @param Object $Object The object to be encoded - * @param int $Depth The current traversal depth - * @return array All members of the object - */ - protected function encodeObject($Object, $ObjectDepth = 1, $ArrayDepth = 1) - { - $return = array(); + /** + * Encode an object into a JSON string + * + * Uses PHP's jeson_encode() if available + * + * @param object $object The object to be encoded + * @param boolean $skipObjectEncode + * @return string The JSON string + */ + public function jsonEncode($object, $skipObjectEncode = false) + { + if (!$skipObjectEncode) { + $object = $this->encodeObject($object); + } + + if (function_exists('json_encode') + && $this->options['useNativeJsonEncode'] != false) { - if (is_object($Object)) { - - if ($ObjectDepth > $this->options['maxObjectDepth']) { - return '** Max Object Depth ('.$this->options['maxObjectDepth'].') **'; + return json_encode($object); + } else { + return $this->json_encode($object); } + } + + /** + * Encodes a table by encoding each row and column with encodeObject() + * + * @param array $table The table to be encoded + * @return array + */ + protected function encodeTable($table) + { + if (!$table) return $table; - foreach ($this->objectStack as $refVal) { - if ($refVal === $Object) { - return '** Recursion ('.get_class($Object).') **'; + $newTable = array(); + foreach ($table as $row) { + + if (is_array($row)) { + $newRow = array(); + + foreach ($row as $item) { + $newRow[] = $this->encodeObject($item); + } + + $newTable[] = $newRow; } } - array_push($this->objectStack, $Object); - - $return['__className'] = $class = get_class($Object); - $reflectionClass = new ReflectionClass($class); - $properties = array(); - foreach( $reflectionClass->getProperties() as $property) { - $properties[$property->getName()] = $property; + return $newTable; + } + + /** + * Encodes an object including members with + * protected and private visibility + * + * @param object $object The object to be encoded + * @param integer $Depth The current traversal depth + * @return array All members of the object + */ + protected function encodeObject($object, $objectDepth = 1, $arrayDepth = 1, $maxDepth = 1) + { + if ($maxDepth > $this->options['maxDepth']) { + return '** Max Depth (' . $this->options['maxDepth'] . ') **'; } + + $return = array(); + + //#2801 is_resource reports false for closed resources https://bugs.php.net/bug.php?id=28016 + if (is_resource($object) || gettype($object) === "unknown type") { + + return '** ' . (string) $object . ' **'; + + } else if (is_object($object)) { + + if ($objectDepth > $this->options['maxObjectDepth']) { + return '** Max Object Depth (' . $this->options['maxObjectDepth'] . ') **'; + } - $members = (array)$Object; + foreach ($this->objectStack as $refVal) { + if ($refVal === $object) { + return '** Recursion (' . get_class($object) . ') **'; + } + } + array_push($this->objectStack, $object); + + $return['__className'] = $class = get_class($object); + $classLower = strtolower($class); + + $reflectionClass = new ReflectionClass($class); + $properties = array(); + foreach ($reflectionClass->getProperties() as $property) { + $properties[$property->getName()] = $property; + } + + $members = (array)$object; + + foreach ($properties as $plainName => $property) { + + $name = $rawName = $plainName; + if ($property->isStatic()) { + $name = 'static:' . $name; + } + if ($property->isPublic()) { + $name = 'public:' . $name; + } else if ($property->isPrivate()) { + $name = 'private:' . $name; + $rawName = "\0" . $class . "\0" . $rawName; + } else if ($property->isProtected()) { + $name = 'protected:' . $name; + $rawName = "\0" . '*' . "\0" . $rawName; + } + + if (!(isset($this->objectFilters[$classLower]) + && is_array($this->objectFilters[$classLower]) + && in_array($plainName, $this->objectFilters[$classLower]))) { + + if (array_key_exists($rawName, $members) && !$property->isStatic()) { + $return[$name] = $this->encodeObject($members[$rawName], $objectDepth + 1, 1, $maxDepth + 1); + } else { + if (method_exists($property, 'setAccessible')) { + $property->setAccessible(true); + $return[$name] = $this->encodeObject($property->getValue($object), $objectDepth + 1, 1, $maxDepth + 1); + } else + if ($property->isPublic()) { + $return[$name] = $this->encodeObject($property->getValue($object), $objectDepth + 1, 1, $maxDepth + 1); + } else { + $return[$name] = '** Need PHP 5.3 to get value **'; + } + } + } else { + $return[$name] = '** Excluded by Filter **'; + } + } - foreach( $properties as $raw_name => $property ) { - - $name = $raw_name; - if($property->isStatic()) { - $name = 'static:'.$name; - } - if($property->isPublic()) { - $name = 'public:'.$name; - } else - if($property->isPrivate()) { - $name = 'private:'.$name; - $raw_name = "\0".$class."\0".$raw_name; - } else - if($property->isProtected()) { - $name = 'protected:'.$name; - $raw_name = "\0".'*'."\0".$raw_name; - } - - if(!(isset($this->objectFilters[$class]) - && is_array($this->objectFilters[$class]) - && in_array($raw_name,$this->objectFilters[$class]))) { + // Include all members that are not defined in the class + // but exist in the object + foreach ($members as $rawName => $value) { + + $name = $rawName; - if(array_key_exists($raw_name,$members) - && !$property->isStatic()) { - - $return[$name] = $this->encodeObject($members[$raw_name], $ObjectDepth + 1, 1); + if ($name{0} == "\0") { + $parts = explode("\0", $name); + $name = $parts[2]; + } + + $plainName = $name; + + if (!isset($properties[$name])) { + $name = 'undeclared:' . $name; + + if (!(isset($this->objectFilters[$classLower]) + && is_array($this->objectFilters[$classLower]) + && in_array($plainName, $this->objectFilters[$classLower]))) { + + $return[$name] = $this->encodeObject($value, $objectDepth + 1, 1, $maxDepth + 1); + } else { + $return[$name] = '** Excluded by Filter **'; + } + } + } - } else { - if(method_exists($property,'setAccessible')) { - $property->setAccessible(true); - $return[$name] = $this->encodeObject($property->getValue($Object), $ObjectDepth + 1, 1); - } else - if($property->isPublic()) { - $return[$name] = $this->encodeObject($property->getValue($Object), $ObjectDepth + 1, 1); - } else { - $return[$name] = '** Need PHP 5.3 to get value **'; - } + array_pop($this->objectStack); + + } elseif (is_array($object)) { + + if ($arrayDepth > $this->options['maxArrayDepth']) { + return '** Max Array Depth (' . $this->options['maxArrayDepth'] . ') **'; } - } else { - $return[$name] = '** Excluded by Filter **'; - } - } - - // Include all members that are not defined in the class - // but exist in the object - foreach( $members as $raw_name => $value ) { - $name = $raw_name; - - if ($name{0} == "\0") { - $parts = explode("\0", $name); - $name = $parts[2]; - } - - if(!isset($properties[$name])) { - $name = 'undeclared:'.$name; - - if(!(isset($this->objectFilters[$class]) - && is_array($this->objectFilters[$class]) - && in_array($raw_name,$this->objectFilters[$class]))) { - - $return[$name] = $this->encodeObject($value, $ObjectDepth + 1, 1); + foreach ($object as $key => $val) { + + // Encoding the $GLOBALS PHP array causes an infinite loop + // if the recursion is not reset here as it contains + // a reference to itself. This is the only way I have come up + // with to stop infinite recursion in this case. + if ($key == 'GLOBALS' + && is_array($val) + && array_key_exists('GLOBALS', $val)) { + $val['GLOBALS'] = '** Recursion (GLOBALS) **'; + } + + if (!$this->is_utf8($key)) { + $key = utf8_encode($key); + } + + $return[$key] = $this->encodeObject($val, 1, $arrayDepth + 1, $maxDepth + 1); + } + } elseif ( is_bool($object) ) { + return $object; + } elseif ( is_null($object) ) { + return $object; + } elseif ( is_numeric($object) ) { + return $object; + } else { + if ($this->is_utf8($object)) { + return $object; } else { - $return[$name] = '** Excluded by Filter **'; + return utf8_encode($object); } - } } - - array_pop($this->objectStack); - - } elseif (is_array($Object)) { + return $return; + } - if ($ArrayDepth > $this->options['maxArrayDepth']) { - return '** Max Array Depth ('.$this->options['maxArrayDepth'].') **'; + /** + * Returns true if $string is valid UTF-8 and false otherwise. + * + * @param mixed $str String to be tested + * @return boolean + */ + protected function is_utf8($str) + { + if (function_exists('mb_detect_encoding')) { + return ( + mb_detect_encoding($str, 'UTF-8', true) == 'UTF-8' && + ($str === null || $this->jsonEncode($str, true) !== 'null') + ); } - - foreach ($Object as $key => $val) { - - // Encoding the $GLOBALS PHP array causes an infinite loop - // if the recursion is not reset here as it contains - // a reference to itself. This is the only way I have come up - // with to stop infinite recursion in this case. - if($key=='GLOBALS' - && is_array($val) - && array_key_exists('GLOBALS',$val)) { - $val['GLOBALS'] = '** Recursion (GLOBALS) **'; - } - - $return[$key] = $this->encodeObject($val, 1, $ArrayDepth + 1); - } - } else { - if(self::is_utf8($Object)) { - return $Object; - } else { - return utf8_encode($Object); - } - } - return $return; - } - - /** - * Returns true if $string is valid UTF-8 and false otherwise. - * - * @param mixed $str String to be tested - * @return boolean - */ - protected static function is_utf8($str) { - $c=0; $b=0; - $bits=0; - $len=strlen($str); - for($i=0; $i<$len; $i++){ - $c=ord($str[$i]); - if($c > 128){ - if(($c >= 254)) return false; - elseif($c >= 252) $bits=6; - elseif($c >= 248) $bits=5; - elseif($c >= 240) $bits=4; - elseif($c >= 224) $bits=3; - elseif($c >= 192) $bits=2; - else return false; - if(($i+$bits) > $len) return false; - while($bits > 1){ - $i++; - $b=ord($str[$i]); - if($b < 128 || $b > 191) return false; - $bits--; + $c = 0; + $b = 0; + $bits = 0; + $len = strlen($str); + for ($i = 0; $i < $len; $i++) { + $c = ord($str[$i]); + if ($c > 128) { + if (($c >= 254)) return false; + elseif ($c >= 252) $bits = 6; + elseif ($c >= 248) $bits = 5; + elseif ($c >= 240) $bits = 4; + elseif ($c >= 224) $bits = 3; + elseif ($c >= 192) $bits = 2; + else return false; + if (($i + $bits) > $len) return false; + while($bits > 1) { + $i++; + $b = ord($str[$i]); + if ($b < 128 || $b > 191) return false; + $bits--; + } } } - } - return true; - } - - /** - * Converts to and from JSON format. - * - * JSON (JavaScript Object Notation) is a lightweight data-interchange - * format. It is easy for humans to read and write. It is easy for machines - * to parse and generate. It is based on a subset of the JavaScript - * Programming Language, Standard ECMA-262 3rd Edition - December 1999. - * This feature can also be found in Python. JSON is a text format that is - * completely language independent but uses conventions that are familiar - * to programmers of the C-family of languages, including C, C++, C#, Java, - * JavaScript, Perl, TCL, and many others. These properties make JSON an - * ideal data-interchange language. - * - * This package provides a simple encoder and decoder for JSON notation. It - * is intended for use with client-side Javascript applications that make - * use of HTTPRequest to perform server communication functions - data can - * be encoded into JSON notation for use in a client-side javascript, or - * decoded from incoming Javascript requests. JSON format is native to - * Javascript, and can be directly eval()'ed with no further parsing - * overhead - * - * All strings should be in ASCII or UTF-8 format! - * - * LICENSE: Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: Redistributions of source code must retain the - * above copyright notice, this list of conditions and the following - * disclaimer. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN - * NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE - * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - * - * @category - * @package Services_JSON - * @author Michal Migurski - * @author Matt Knapp - * @author Brett Stimmerman - * @author Christoph Dorn - * @copyright 2005 Michal Migurski - * @version CVS: $Id: JSON.php,v 1.31 2006/06/28 05:54:17 migurski Exp $ - * @license http://www.opensource.org/licenses/bsd-license.php - * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198 - */ + return ($str === null || $this->jsonEncode($str, true) !== 'null'); + } + + /** + * Converts to and from JSON format. + * + * JSON (JavaScript Object Notation) is a lightweight data-interchange + * format. It is easy for humans to read and write. It is easy for machines + * to parse and generate. It is based on a subset of the JavaScript + * Programming Language, Standard ECMA-262 3rd Edition - December 1999. + * This feature can also be found in Python. JSON is a text format that is + * completely language independent but uses conventions that are familiar + * to programmers of the C-family of languages, including C, C++, C#, Java, + * JavaScript, Perl, TCL, and many others. These properties make JSON an + * ideal data-interchange language. + * + * This package provides a simple encoder and decoder for JSON notation. It + * is intended for use with client-side Javascript applications that make + * use of HTTPRequest to perform server communication functions - data can + * be encoded into JSON notation for use in a client-side javascript, or + * decoded from incoming Javascript requests. JSON format is native to + * Javascript, and can be directly eval()'ed with no further parsing + * overhead + * + * All strings should be in ASCII or UTF-8 format! + * + * LICENSE: Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: Redistributions of source code must retain the + * above copyright notice, this list of conditions and the following + * disclaimer. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN + * NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * @category + * @package Services_JSON + * @author Michal Migurski + * @author Matt Knapp + * @author Brett Stimmerman + * @author Christoph Dorn + * @copyright 2005 Michal Migurski + * @version CVS: $Id: JSON.php,v 1.31 2006/06/28 05:54:17 migurski Exp $ + * @license http://www.opensource.org/licenses/bsd-license.php + * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198 + */ - /** - * Keep a list of objects as we descend into the array so we can detect recursion. - */ - private $json_objectStack = array(); - - - /** - * convert a string from one UTF-8 char to one UTF-16 char - * - * Normally should be handled by mb_convert_encoding, but - * provides a slower PHP-only method for installations - * that lack the multibye string extension. - * - * @param string $utf8 UTF-8 character - * @return string UTF-16 character - * @access private - */ - private function json_utf82utf16($utf8) - { - // oh please oh please oh please oh please oh please - if(function_exists('mb_convert_encoding')) { - return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8'); - } - - switch(strlen($utf8)) { - case 1: - // this case should never be reached, because we are in ASCII range - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return $utf8; - - case 2: - // return a UTF-16 character from a 2-byte UTF-8 char - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return chr(0x07 & (ord($utf8{0}) >> 2)) - . chr((0xC0 & (ord($utf8{0}) << 6)) + /** + * Keep a list of objects as we descend into the array so we can detect recursion. + */ + private $json_objectStack = array(); + + + /** + * convert a string from one UTF-8 char to one UTF-16 char + * + * Normally should be handled by mb_convert_encoding, but + * provides a slower PHP-only method for installations + * that lack the multibye string extension. + * + * @param string $utf8 UTF-8 character + * @return string UTF-16 character + * @access private + */ + private function json_utf82utf16($utf8) + { + // oh please oh please oh please oh please oh please + if (function_exists('mb_convert_encoding')) { + return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8'); + } + + switch (strlen($utf8)) { + case 1: + // this case should never be reached, because we are in ASCII range + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return $utf8; + + case 2: + // return a UTF-16 character from a 2-byte UTF-8 char + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return chr(0x07 & (ord($utf8{0}) >> 2)) + . chr((0xC0 & (ord($utf8{0}) << 6)) | (0x3F & ord($utf8{1}))); - case 3: - // return a UTF-16 character from a 3-byte UTF-8 char - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return chr((0xF0 & (ord($utf8{0}) << 4)) + case 3: + // return a UTF-16 character from a 3-byte UTF-8 char + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return chr((0xF0 & (ord($utf8{0}) << 4)) | (0x0F & (ord($utf8{1}) >> 2))) - . chr((0xC0 & (ord($utf8{1}) << 6)) + . chr((0xC0 & (ord($utf8{1}) << 6)) | (0x7F & ord($utf8{2}))); - } - - // ignoring UTF-32 for now, sorry - return ''; - } - - /** - * encodes an arbitrary variable into JSON format - * - * @param mixed $var any number, boolean, string, array, or object to be encoded. - * see argument 1 to Services_JSON() above for array-parsing behavior. - * if var is a strng, note that encode() always expects it - * to be in ASCII or UTF-8 format! - * - * @return mixed JSON string representation of input var or an error if a problem occurs - * @access public - */ - private function json_encode($var) - { - - if(is_object($var)) { - if(in_array($var,$this->json_objectStack)) { - return '"** Recursion **"'; - } + } + + // ignoring UTF-32 for now, sorry + return ''; } + + /** + * encodes an arbitrary variable into JSON format + * + * @param mixed $var any number, boolean, string, array, or object to be encoded. + * see argument 1 to Services_JSON() above for array-parsing behavior. + * if var is a strng, note that encode() always expects it + * to be in ASCII or UTF-8 format! + * + * @return mixed JSON string representation of input var or an error if a problem occurs + * @access public + */ + private function json_encode($var) + { + if (is_object($var)) { + if (in_array($var, $this->json_objectStack)) { + return '"** Recursion **"'; + } + } - switch (gettype($var)) { - case 'boolean': - return $var ? 'true' : 'false'; - - case 'NULL': - return 'null'; - - case 'integer': - return (int) $var; - - case 'double': - case 'float': - return (float) $var; - - case 'string': - // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT - $ascii = ''; - $strlen_var = strlen($var); - - /* - * Iterate over every character in the string, - * escaping with a slash or encoding to UTF-8 where necessary - */ - for ($c = 0; $c < $strlen_var; ++$c) { - - $ord_var_c = ord($var{$c}); - - switch (true) { - case $ord_var_c == 0x08: - $ascii .= '\b'; - break; - case $ord_var_c == 0x09: - $ascii .= '\t'; - break; - case $ord_var_c == 0x0A: - $ascii .= '\n'; - break; - case $ord_var_c == 0x0C: - $ascii .= '\f'; - break; - case $ord_var_c == 0x0D: - $ascii .= '\r'; - break; - - case $ord_var_c == 0x22: - case $ord_var_c == 0x2F: - case $ord_var_c == 0x5C: - // double quote, slash, slosh - $ascii .= '\\'.$var{$c}; - break; - - case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)): - // characters U-00000000 - U-0000007F (same as ASCII) - $ascii .= $var{$c}; - break; - - case (($ord_var_c & 0xE0) == 0xC0): - // characters U-00000080 - U-000007FF, mask 110XXXXX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, ord($var{$c + 1})); - $c += 1; - $utf16 = $this->json_utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - - case (($ord_var_c & 0xF0) == 0xE0): - // characters U-00000800 - U-0000FFFF, mask 1110XXXX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, - ord($var{$c + 1}), - ord($var{$c + 2})); - $c += 2; - $utf16 = $this->json_utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - - case (($ord_var_c & 0xF8) == 0xF0): - // characters U-00010000 - U-001FFFFF, mask 11110XXX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, - ord($var{$c + 1}), - ord($var{$c + 2}), - ord($var{$c + 3})); - $c += 3; - $utf16 = $this->json_utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - - case (($ord_var_c & 0xFC) == 0xF8): - // characters U-00200000 - U-03FFFFFF, mask 111110XX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, - ord($var{$c + 1}), - ord($var{$c + 2}), - ord($var{$c + 3}), - ord($var{$c + 4})); - $c += 4; - $utf16 = $this->json_utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - - case (($ord_var_c & 0xFE) == 0xFC): - // characters U-04000000 - U-7FFFFFFF, mask 1111110X - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, - ord($var{$c + 1}), - ord($var{$c + 2}), - ord($var{$c + 3}), - ord($var{$c + 4}), - ord($var{$c + 5})); - $c += 5; - $utf16 = $this->json_utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - } - } - - return '"'.$ascii.'"'; - - case 'array': - /* - * As per JSON spec if any array key is not an integer - * we must treat the the whole array as an object. We - * also try to catch a sparsely populated associative - * array with numeric keys here because some JS engines - * will create an array with empty indexes up to - * max_index which can cause memory issues and because - * the keys, which may be relevant, will be remapped - * otherwise. - * - * As per the ECMA and JSON specification an object may - * have any string as a property. Unfortunately due to - * a hole in the ECMA specification if the key is a - * ECMA reserved word or starts with a digit the - * parameter is only accessible using ECMAScript's - * bracket notation. - */ - - // treat as a JSON object - if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) { + switch (gettype($var)) { + case 'boolean': + return $var ? 'true' : 'false'; + + case 'NULL': + return 'null'; + + case 'integer': + return (int) $var; + + case 'double': + case 'float': + return (float) $var; + + case 'string': + // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT + $ascii = ''; + $strlen_var = strlen($var); + + /* + * Iterate over every character in the string, + * escaping with a slash or encoding to UTF-8 where necessary + */ + for ($c = 0; $c < $strlen_var; ++$c) { + + $ord_var_c = ord($var{$c}); + + switch (true) { + case $ord_var_c == 0x08: + $ascii .= '\b'; + break; + case $ord_var_c == 0x09: + $ascii .= '\t'; + break; + case $ord_var_c == 0x0A: + $ascii .= '\n'; + break; + case $ord_var_c == 0x0C: + $ascii .= '\f'; + break; + case $ord_var_c == 0x0D: + $ascii .= '\r'; + break; + + case $ord_var_c == 0x22: + case $ord_var_c == 0x2F: + case $ord_var_c == 0x5C: + // double quote, slash, slosh + $ascii .= '\\' . $var{$c}; + break; + + case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)): + // characters U-00000000 - U-0000007F (same as ASCII) + $ascii .= $var{$c}; + break; + + case (($ord_var_c & 0xE0) == 0xC0): + // characters U-00000080 - U-000007FF, mask 110XXXXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, ord($var{$c + 1})); + $c += 1; + $utf16 = $this->json_utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xF0) == 0xE0): + // characters U-00000800 - U-0000FFFF, mask 1110XXXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2})); + $c += 2; + $utf16 = $this->json_utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xF8) == 0xF0): + // characters U-00010000 - U-001FFFFF, mask 11110XXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2}), + ord($var{$c + 3})); + $c += 3; + $utf16 = $this->json_utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xFC) == 0xF8): + // characters U-00200000 - U-03FFFFFF, mask 111110XX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2}), + ord($var{$c + 3}), + ord($var{$c + 4})); + $c += 4; + $utf16 = $this->json_utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xFE) == 0xFC): + // characters U-04000000 - U-7FFFFFFF, mask 1111110X + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2}), + ord($var{$c + 3}), + ord($var{$c + 4}), + ord($var{$c + 5})); + $c += 5; + $utf16 = $this->json_utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + } + } + + return '"' . $ascii . '"'; + + case 'array': + /* + * As per JSON spec if any array key is not an integer + * we must treat the the whole array as an object. We + * also try to catch a sparsely populated associative + * array with numeric keys here because some JS engines + * will create an array with empty indexes up to + * max_index which can cause memory issues and because + * the keys, which may be relevant, will be remapped + * otherwise. + * + * As per the ECMA and JSON specification an object may + * have any string as a property. Unfortunately due to + * a hole in the ECMA specification if the key is a + * ECMA reserved word or starts with a digit the + * parameter is only accessible using ECMAScript's + * bracket notation. + */ + + // treat as a JSON object + if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) { - $this->json_objectStack[] = $var; + $this->json_objectStack[] = $var; - $properties = array_map(array($this, 'json_name_value'), - array_keys($var), - array_values($var)); + $properties = array_map(array($this, 'json_name_value'), + array_keys($var), + array_values($var)); - array_pop($this->json_objectStack); + array_pop($this->json_objectStack); - foreach($properties as $property) { - if($property instanceof Exception) { - return $property; - } - } + foreach ($properties as $property) { + if ($property instanceof Exception) { + return $property; + } + } - return '{' . join(',', $properties) . '}'; - } + return '{' . join(',', $properties) . '}'; + } - $this->json_objectStack[] = $var; + $this->json_objectStack[] = $var; - // treat it like a regular array - $elements = array_map(array($this, 'json_encode'), $var); + // treat it like a regular array + $elements = array_map(array($this, 'json_encode'), $var); - array_pop($this->json_objectStack); + array_pop($this->json_objectStack); - foreach($elements as $element) { - if($element instanceof Exception) { - return $element; - } - } + foreach ($elements as $element) { + if ($element instanceof Exception) { + return $element; + } + } - return '[' . join(',', $elements) . ']'; + return '[' . join(',', $elements) . ']'; - case 'object': - $vars = self::encodeObject($var); + case 'object': + $vars = self::encodeObject($var); - $this->json_objectStack[] = $var; + $this->json_objectStack[] = $var; - $properties = array_map(array($this, 'json_name_value'), - array_keys($vars), - array_values($vars)); + $properties = array_map(array($this, 'json_name_value'), + array_keys($vars), + array_values($vars)); - array_pop($this->json_objectStack); + array_pop($this->json_objectStack); - foreach($properties as $property) { - if($property instanceof Exception) { - return $property; - } - } + foreach ($properties as $property) { + if ($property instanceof Exception) { + return $property; + } + } - return '{' . join(',', $properties) . '}'; - - default: - return null; - } - } - - /** - * array-walking function for use in generating JSON-formatted name-value pairs - * - * @param string $name name of key to use - * @param mixed $value reference to an array element to be encoded - * - * @return string JSON-formatted name-value pair, like '"name":value' - * @access private - */ - private function json_name_value($name, $value) - { - // Encoding the $GLOBALS PHP array causes an infinite loop - // if the recursion is not reset here as it contains - // a reference to itself. This is the only way I have come up - // with to stop infinite recursion in this case. - if($name=='GLOBALS' - && is_array($value) - && array_key_exists('GLOBALS',$value)) { - $value['GLOBALS'] = '** Recursion **'; - } + return '{' . join(',', $properties) . '}'; + + default: + return null; + } + } + + /** + * array-walking function for use in generating JSON-formatted name-value pairs + * + * @param string $name name of key to use + * @param mixed $value reference to an array element to be encoded + * + * @return string JSON-formatted name-value pair, like '"name":value' + * @access private + */ + private function json_name_value($name, $value) + { + // Encoding the $GLOBALS PHP array causes an infinite loop + // if the recursion is not reset here as it contains + // a reference to itself. This is the only way I have come up + // with to stop infinite recursion in this case. + if ($name == 'GLOBALS' + && is_array($value) + && array_key_exists('GLOBALS', $value)) { + $value['GLOBALS'] = '** Recursion **'; + } - $encoded_value = $this->json_encode($value); + $encodedValue = $this->json_encode($value); - if($encoded_value instanceof Exception) { - return $encoded_value; - } + if ($encodedValue instanceof Exception) { + return $encodedValue; + } - return $this->json_encode(strval($name)) . ':' . $encoded_value; - } -} + return $this->json_encode(strval($name)) . ':' . $encodedValue; + } + + /** + * @deprecated + */ + public function setProcessorUrl($URL) + { + trigger_error('The FirePHP::setProcessorUrl() method is no longer supported', E_USER_DEPRECATED); + } + + /** + * @deprecated + */ + public function setRendererUrl($URL) + { + trigger_error('The FirePHP::setRendererUrl() method is no longer supported', E_USER_DEPRECATED); + } +} \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min/lib/JSMinPlus.php b/minimee/library/vendor/mrclay/minify/min/lib/JSMinPlus.php index 5a3c5bd..1c7463c 100644 --- a/minimee/library/vendor/mrclay/minify/min/lib/JSMinPlus.php +++ b/minimee/library/vendor/mrclay/minify/min/lib/JSMinPlus.php @@ -170,7 +170,9 @@ define('KEYWORD_WHILE', 'while'); define('KEYWORD_WITH', 'with'); - +/** + * @deprecated 2.3 This will be removed in Minify 3.0 + */ class JSMinPlus { private $parser; @@ -197,6 +199,8 @@ private function __construct() public static function minify($js, $filename='') { + trigger_error(__CLASS__ . ' is deprecated. This will be removed in Minify 3.0', E_USER_DEPRECATED); + static $instance; // this is a singleton diff --git a/minimee/library/vendor/mrclay/minify/min/lib/Minify.php b/minimee/library/vendor/mrclay/minify/min/lib/Minify.php index 2b38f89..516050c 100644 --- a/minimee/library/vendor/mrclay/minify/min/lib/Minify.php +++ b/minimee/library/vendor/mrclay/minify/min/lib/Minify.php @@ -124,6 +124,9 @@ public static function setCache($cache = '', $fileLocking = true) * 'debug' : set to true to minify all sources with the 'Lines' controller, which * eases the debugging of combined files. This also prevents 304 responses. * @see Minify_Lines::minify() + * + * 'concatOnly' : set to true to disable minification and simply concatenate the files. + * For JS, no minifier will be used. For CSS, only URI rewriting is still performed. * * 'minifiers' : to override Minify's default choice of minifier function for * a particular content-type, specify your callback under the key of the @@ -251,11 +254,21 @@ public static function serve($controller, $options = array()) $headers = $cg->getHeaders(); unset($cg); } - - if (self::$_options['contentType'] === self::TYPE_CSS - && self::$_options['rewriteCssUris']) { - foreach($controller->sources as $key => $source) { - if ($source->filepath + + if (self::$_options['concatOnly']) { + foreach ($controller->sources as $key => $source) { + if (self::$_options['contentType'] === self::TYPE_JS) { + $source->minifier = ""; + } elseif (self::$_options['contentType'] === self::TYPE_CSS) { + $source->minifier = array('Minify_CSS', 'minify'); + $source->minifyOptions['compress'] = false; + } + } + } + + if (self::$_options['contentType'] === self::TYPE_CSS && self::$_options['rewriteCssUris']) { + foreach ($controller->sources as $key => $source) { + if ($source->filepath && !isset($source->minifyOptions['currentDir']) && !isset($source->minifyOptions['prependRelativePath']) ) { @@ -435,7 +448,7 @@ protected static function _errorExit($header, $url) header('Content-Type: text/html; charset=utf-8'); echo "

$h1

"; echo "

Please see $url.

"; - exit(); + exit; } /** @@ -493,7 +506,7 @@ protected static function _combineMinify() // get next source $source = null; if ($i < $l) { - $source = self::$_controller->sources[$i]; + $source = self::$_controller->sources[$i]; /* @var Minify_Source $source */ $sourceContent = $source->getContent(); diff --git a/minimee/library/vendor/mrclay/minify/min/lib/Minify/Cache/WinCache.php b/minimee/library/vendor/mrclay/minify/min/lib/Minify/Cache/WinCache.php new file mode 100644 index 0000000..500bdd8 --- /dev/null +++ b/minimee/library/vendor/mrclay/minify/min/lib/Minify/Cache/WinCache.php @@ -0,0 +1,130 @@ + + * Minify::setCache(new Minify_Cache_WinCache()); + * + * + * @package Minify + * @author Matthias Fax + **/ +class Minify_Cache_WinCache +{ + + /** + * Create a Minify_Cache_Wincache object, to be passed to + * Minify::setCache(). + * + * + * @param int $expire seconds until expiration (default = 0 + * meaning the item will not get an expiration date) + */ + public function __construct($expire = 0) + { + if (!function_exists('wincache_ucache_info')) { + throw new Exception("WinCache for PHP is not installed to be able to use Minify_Cache_WinCache!"); + } + $this->_exp = $expire; + } + + /** + * Write data to cache. + * + * @param string $id cache id + * + * @param string $data + * + * @return bool success + */ + public function store($id, $data) + { + return wincache_ucache_set($id, "{$_SERVER['REQUEST_TIME']}|{$data}", $this->_exp); + } + + /** + * Get the size of a cache entry + * + * @param string $id cache id + * + * @return int size in bytes + */ + public function getSize($id) + { + if (!$this->_fetch($id)) { + return false; + } + return (function_exists('mb_strlen') && ((int) ini_get('mbstring.func_overload') & 2)) ? mb_strlen($this->_data, '8bit') : strlen($this->_data); + } + + /** + * Does a valid cache entry exist? + * + * @param string $id cache id + * + * @param int $srcMtime mtime of the original source file(s) + * + * @return bool exists + */ + public function isValid($id, $srcMtime) + { + return ($this->_fetch($id) && ($this->_lm >= $srcMtime)); + } + + /** + * Send the cached content to output + * + * @param string $id cache id + */ + public function display($id) + { + echo $this->_fetch($id) ? $this->_data : ''; + } + + /** + * Fetch the cached content + * + * @param string $id cache id + * + * @return string + */ + public function fetch($id) + { + return $this->_fetch($id) ? $this->_data : ''; + } + + private $_exp = NULL; + + // cache of most recently fetched id + private $_lm = NULL; + private $_data = NULL; + private $_id = NULL; + + /** + * Fetch data and timestamp from WinCache, store in instance + * + * @param string $id + * + * @return bool success + */ + private function _fetch($id) + { + if ($this->_id === $id) { + return true; + } + $suc = false; + $ret = wincache_ucache_get($id, $suc); + if (!$suc) { + $this->_id = NULL; + return false; + } + list($this->_lm, $this->_data) = explode('|', $ret, 2); + $this->_id = $id; + return true; + } +} \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min/lib/Minify/Controller/Base.php b/minimee/library/vendor/mrclay/minify/min/lib/Minify/Controller/Base.php index 5a86329..4e43013 100644 --- a/minimee/library/vendor/mrclay/minify/min/lib/Minify/Controller/Base.php +++ b/minimee/library/vendor/mrclay/minify/min/lib/Minify/Controller/Base.php @@ -51,6 +51,7 @@ public function getDefaultMinifyOptions() { ,'bubbleCssImports' => false ,'quiet' => false // serve() will send headers and output ,'debug' => false + ,'concatOnly' => false // if you override these, the response codes MUST be directly after // the first space. @@ -145,9 +146,7 @@ public static function checkNotHidden($file) /** * instances of Minify_Source, which provide content and any individual minification needs. * - * @var array - * - * @see Minify_Source + * @var Minify_Source[] */ public $sources = array(); diff --git a/minimee/library/vendor/mrclay/minify/min/lib/Minify/Controller/MinApp.php b/minimee/library/vendor/mrclay/minify/min/lib/Minify/Controller/MinApp.php index 6943ee6..ade736f 100644 --- a/minimee/library/vendor/mrclay/minify/min/lib/Minify/Controller/MinApp.php +++ b/minimee/library/vendor/mrclay/minify/min/lib/Minify/Controller/MinApp.php @@ -49,7 +49,6 @@ public function setupSources($options) { $this->log("Duplicate group key found."); return $options; } - $keys = explode(',', $_GET['g']); foreach ($keys as $key) { if (! isset($cOptions['groups'][$key])) { $this->log("A group configuration for \"{$key}\" was not found"); diff --git a/minimee/library/vendor/mrclay/minify/min/lib/Minify/Loader.php b/minimee/library/vendor/mrclay/minify/min/lib/Minify/Loader.php index 0a225c0..ca43192 100644 --- a/minimee/library/vendor/mrclay/minify/min/lib/Minify/Loader.php +++ b/minimee/library/vendor/mrclay/minify/min/lib/Minify/Loader.php @@ -9,6 +9,8 @@ * * @package Minify * @author Stephen Clay + * + * @deprecated 2.3 This will be removed in Minify 3.0 */ class Minify_Loader { public function loadClass($class) @@ -20,6 +22,9 @@ public function loadClass($class) } } + /** + * @deprecated 2.3 This will be removed in Minify 3.0 + */ static public function register() { $inst = new self(); diff --git a/minimee/library/vendor/mrclay/minify/min/lib/Minify/Logger.php b/minimee/library/vendor/mrclay/minify/min/lib/Minify/Logger.php index 8eb72f4..5217441 100644 --- a/minimee/library/vendor/mrclay/minify/min/lib/Minify/Logger.php +++ b/minimee/library/vendor/mrclay/minify/min/lib/Minify/Logger.php @@ -10,7 +10,7 @@ * @package Minify * @author Stephen Clay * - * @todo lose this singleton! pass log object in Minify::serve and distribute to others + * @deprecated 2.3 This will be removed in Minify 3.0 */ class Minify_Logger { diff --git a/minimee/library/vendor/mrclay/minify/min/server-info.php b/minimee/library/vendor/mrclay/minify/min/server-info.php new file mode 100644 index 0000000..c9ddba6 --- /dev/null +++ b/minimee/library/vendor/mrclay/minify/min/server-info.php @@ -0,0 +1,25 @@ +addOptionalArg('d')->assertDir()->setDescription('Your webserver\'s DOCUMENT_ROOT: Relative paths will be rewritten relative to this path. This is required if you\'re passing in CSS.'); - -$cli->addOptionalArg('o')->useAsOutfile()->setDescription('Outfile: If given, output will be placed in this file.'); - -$cli->addOptionalArg('t')->mustHaveValue()->setDescription('Type: must be "css", "js", or "html". This must be provided if passing content via STDIN.'); - -if (! $cli->validate()) { - if ($cli->isHelpRequest) { - echo "The Minify CLI tool!\n\n"; - } - echo "USAGE: ./minify.php [-t TYPE] [-d DOC_ROOT] [-o OUTFILE] file ...\n"; - if ($cli->isHelpRequest) { - echo $cli->getArgumentsListing(); - } - echo "EXAMPLE: ./minify.php ../../min_unit_tests/_test_files/js/*.js\n"; - echo "EXAMPLE: ./minify.php -d../.. ../../min_unit_tests/_test_files/css/*.css\n"; - echo "EXAMPLE: echo \"var js = 'Awesome' && /cool/;\" | ./minify.php -t js\n"; - echo "EXAMPLE: echo \"sel > ector { prop: 'value '; }\" | ./minify.php -t css\n"; - echo "\n"; - exit(0); -} - -$outfile = $cli->values['o']; -$docRoot = $cli->values['d']; -$type = $cli->values['t']; - -if (is_string($type)) { - if (! in_array($type, array('js', 'css', 'html'))) { - echo "Type argument invalid\n"; - exit(1); - } - $type = constant('Minify::TYPE_' . strtoupper($type)); -} - -$paths = $cli->getPathArgs(); -$sources = array(); - -if ($paths) { - foreach ($paths as $path) { - if (is_file($path)) { - $sources[] = new Minify_Source(array( - 'filepath' => $path, - 'minifyOptions' => array('docRoot' => $docRoot), - )); - } else { - $sources[] = new Minify_Source(array( - 'id' => $path, - 'content' => "/*** $path not found ***/\n", - 'minifier' => '', - )); - } - } -} else { - // not paths input, expect STDIN - if (! $type) { - echo "Type must be specified to use STDIN\n"; - exit(1); - } - $in = $cli->openInput(); - $sources[] = new Minify_Source(array( - 'id' => 'one', - 'content' => stream_get_contents($in), - 'contentType' => $type, - )); - $cli->closeInput(); -} - -$combined = Minify::combine($sources) . "\n"; - -$fp = $cli->openOutput(); -fwrite($fp, $combined); -$cli->closeOutput(); diff --git a/minimee/library/vendor/mrclay/minify/min_extras/cli/rewrite-uris.php b/minimee/library/vendor/mrclay/minify/min_extras/cli/rewrite-uris.php deleted file mode 100755 index e0cbfa5..0000000 --- a/minimee/library/vendor/mrclay/minify/min_extras/cli/rewrite-uris.php +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/php -addRequiredArg('d')->assertDir()->setDescription('Your webserver\'s DOCUMENT_ROOT: Relative paths will be rewritten relative to this path.'); - -$cli->addOptionalArg('o')->useAsOutfile()->setDescription('Outfile: If given, output will be placed in this file.'); - -$cli->addOptionalArg('t')->setDescription('Test run: Return output followed by rewriting algorithm.'); - -if (! $cli->validate()) { - echo "USAGE: ./rewrite-uris.php [-t] -d DOC_ROOT [-o OUTFILE] file ...\n"; - if ($cli->isHelpRequest) { - echo $cli->getArgumentsListing(); - } - echo "EXAMPLE: ./rewrite-uris.php -v -d../.. ../../min_unit_tests/_test_files/css/paths_rewrite.css ../../min_unit_tests/_test_files/css/comments.css - \n"; - exit(0); -} - -$outfile = $cli->values['o']; -$testRun = $cli->values['t']; -$docRoot = $cli->values['d']; - -$pathRewriter = function($css, $options) { - return Minify_CSS_UriRewriter::rewrite($css, $options['currentDir'], $options['docRoot']); -}; - -$paths = $cli->getPathArgs(); - -$sources = array(); -foreach ($paths as $path) { - if (is_file($path)) { - $sources[] = new Minify_Source(array( - 'filepath' => $path, - 'minifier' => $pathRewriter, - 'minifyOptions' => array('docRoot' => $docRoot), - )); - } else { - $sources[] = new Minify_Source(array( - 'id' => $path, - 'content' => "/*** $path not found ***/\n", - 'minifier' => '', - )); - } -} -$combined = Minify::combine($sources) . "\n"; - -if ($testRun) { - echo $combined; - echo Minify_CSS_UriRewriter::$debugText . "\n"; -} else { - $fp = $cli->openOutput(); - fwrite($fp, $combined); - $cli->closeOutput(); -} - diff --git a/minimee/library/vendor/mrclay/minify/min_extras/config.php b/minimee/library/vendor/mrclay/minify/min_extras/config.php deleted file mode 100644 index b44bceb..0000000 --- a/minimee/library/vendor/mrclay/minify/min_extras/config.php +++ /dev/null @@ -1,12 +0,0 @@ -]*>)@i' - ,'$1' - ,$textIn - ); - } - - $sourceSpec['content'] = $textIn; - $sourceSpec['id'] = 'foo'; - if (isset($_POST['minJs'])) { - $sourceSpec['minifyOptions']['jsMinifier'] = array('JSMin', 'minify'); - } - if (isset($_POST['minCss'])) { - $sourceSpec['minifyOptions']['cssMinifier'] = array('Minify_CSS', 'minify'); - } - $source = new Minify_Source($sourceSpec); - Minify_Logger::setLogger(FirePHP::getInstance(true)); - try { - Minify::serve('Files', array( - 'files' => $source - ,'contentType' => Minify::TYPE_HTML - )); - } catch (Exception $e) { - echo h($e->getMessage()); - } - exit(); -} - -$tpl = array(); -$tpl['classes'] = array('Minify_HTML', 'JSMin', 'Minify_CSS', 'Minify_CSSmin', 'JSMinPlus'); - -if (isset($_POST['method']) && in_array($_POST['method'], $tpl['classes'])) { - - $args = array($textIn); - if ($_POST['method'] === 'Minify_HTML') { - $args[] = array( - 'cssMinifier' => array('Minify_CSS', 'minify') - ,'jsMinifier' => array('JSMin', 'minify') - ); - } - $func = array($_POST['method'], 'minify'); - $tpl['inBytes'] = strlen($textIn); - $startTime = microtime(true); - try { - $tpl['output'] = call_user_func_array($func, $args); - } catch (Exception $e) { - $tpl['exceptionMsg'] = getExceptionMsg($e, $textIn); - $tpl['output'] = $textIn; - sendPage($tpl); - } - $tpl['time'] = microtime(true) - $startTime; - $tpl['outBytes'] = strlen($tpl['output']); -} - -sendPage($tpl); - - -/** - * @param Exception $e - * @param string $input - * @return string HTML - */ -function getExceptionMsg(Exception $e, $input) { - $msg = "

" . h($e->getMessage()) . "

"; - if (0 === strpos(get_class($e), 'JSMin_Unterminated') - && preg_match('~byte (\d+)~', $e->getMessage(), $m)) { - $msg .= "
";
-        if ($m[1] > 200) {
-            $msg .= h(substr($input, ($m[1] - 200), 200));
-        } else {
-            $msg .= h(substr($input, 0, $m[1]));
-        }
-        $highlighted = isset($input[$m[1]]) ? h($input[$m[1]]) : '␄';
-        if ($highlighted === "\n") {
-            $highlighted = "⏎\n";
-        }
-        $msg .= "$highlighted";
-        $msg .= h(substr($input, $m[1] + 1, 200)) . "
"; - } - return $msg; -} - -/** - * Draw page - * - * @param array $vars - */ -function sendPage($vars) { - header('Content-Type: text/html; charset=utf-8'); -?> -minifyTextarea - - Bytes in{$vars['inBytes']} (after line endings normalized to \\n) - Bytes out{$vars['outBytes']} (reduced " . round(100 - (100 * $vars['outBytes'] / $vars['inBytes'])) . "%) - Time (s)" . round($vars['time'], 5) . " - - "; -} -?> -
-

-

Minify with: - - - -

-

...or this HTML to the browser. Also minify: - : -. - -

-
- - - $type - ,'sent' => $sentType - ,'charset' => $charset - ); -} - -if (isset($_POST['url'])) { - - require '../config.php'; - - $url = trim(getPost('url')); - $ua = trim(getPost('ua')); - $cook = trim(getPost('cook')); - - if (! preg_match('@^https?://@', $url)) { - die('HTTP(s) only.'); - } - - $httpOpts = array( - 'max_redirects' => 0 - ,'timeout' => 3 - ); - if ($ua !== '') { - $httpOpts['user_agent'] = $ua; - } - if ($cook !== '') { - $httpOpts['header'] = "Cookie: {$cook}\r\n"; - } - $ctx = stream_context_create(array( - 'http' => $httpOpts - )); - - // fetch - if (! ($fp = @fopen($url, 'r', false, $ctx))) { - die('Couldn\'t open URL.'); - } - $meta = stream_get_meta_data($fp); - $content = stream_get_contents($fp); - fclose($fp); - - // get type info - $type = sniffType($meta['wrapper_data']); - if (! $type['minify']) { - die('Unrecognized Content-Type: ' . $type['sent']); - } - - if ($type['minify'] === 'text/html' - && isset($_POST['addBase']) - && ! preg_match('@]*>)@i' - ,'$1' - ,$content - ); - } - - $sourceSpec['content'] = $content; - $sourceSpec['id'] = 'foo'; - - if ($type['minify'] === 'text/html') { - if (isset($_POST['minJs'])) { - $sourceSpec['minifyOptions']['jsMinifier'] = array('JSMin', 'minify'); - } - if (isset($_POST['minCss'])) { - $sourceSpec['minifyOptions']['cssMinifier'] = array('Minify_CSS', 'minify'); - } - } - - $source = new Minify_Source($sourceSpec); - - $sendType = 'text/plain'; - if ($type['minify'] === 'text/html' && ! isset($_POST['asText'])) { - $sendType = $type['sent']; - } - if ($type['charset']) { - $sendType .= ';charset=' . $type['charset']; - } - header('Content-Type: ' . $sendType); - // using combine instead of serve because it allows us to specify a - // Content-Type like application/xhtml+xml IF we need to - try { - echo Minify::combine(array($source), array( - 'contentType' => $type['minify'] - )); - } catch (Exception $e) { - header('Content-Type: text/html;charset=utf-8'); - echo htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8'); - } - exit(); -} - -header('Content-Type: text/html; charset=utf-8'); - -$ua = get_magic_quotes_gpc() - ? stripslashes($_SERVER['HTTP_USER_AGENT']) - : $_SERVER['HTTP_USER_AGENT']; - -?> -Minify URL - -

Warning! Please do not place this application on a public site. This should be used -only for testing.

- -

Fetch and Minify a URL

-

This tool will retrieve the contents of a URL and minify it. -The fetched resource Content-Type will determine the minifier used.

- -
-

-

- -
HTML options -

If the resource above is sent with an (x)HTML Content-Type, the following options will apply:

-
    -
  • -
  • -
  • -
  • -
-
- -
Retreival options -
    -
  • -
  • -
-
- -
diff --git a/minimee/library/vendor/mrclay/minify/min_extras/tools/testRewriteUri.php b/minimee/library/vendor/mrclay/minify/min_extras/tools/testRewriteUri.php deleted file mode 100644 index b40d9d8..0000000 --- a/minimee/library/vendor/mrclay/minify/min_extras/tools/testRewriteUri.php +++ /dev/null @@ -1,58 +0,0 @@ -"; -} - -// validate user POST (no arrays and fix slashes) -if (! empty($_POST)) { - foreach ($_POST as $name => $val) { - if (! is_string($val)) { - unset($_POST[$name]); - continue; - } - if (get_magic_quotes_gpc()) { - $_POST[$name] = stripslashes($val); - } - } -} - -$defaultCurrentDir = dirname(__FILE__); -$defaultDocRoot = realpath($_SERVER['DOCUMENT_ROOT']); -$defaultSymLink = '//symlinkPath'; -$defaultSymTarget = ($defaultCurrentDir[0] === '/') ? '/tmp' : 'C:\\WINDOWS\\Temp'; -$defaultCss = "url(hello.gif)\nurl(../hello.gif)\nurl(../../hello.gif)\nurl(up/hello.gif)"; - -$out = ''; - -if (isset($_POST['css'])) { - require '../config.php'; - $symlinks = array(); - if ('' !== ($target = getPost('symTarget'))) { - $symlinks[getPost('symLink')] = $target; - } - $css = Minify_CSS_UriRewriter::rewrite( - getPost('css') - , getPost('currentDir') - , getPost('docRoot') - , $symlinks - ); - $out = "
" . h($css) . '
'; -} - -?> -

Test Minify_CSS_UriRewriter::rewrite()

-
-
-
-
-

-

-
- \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/.htaccess b/minimee/library/vendor/mrclay/minify/min_unit_tests/.htaccess deleted file mode 100644 index 4e05c4c..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/.htaccess +++ /dev/null @@ -1,4 +0,0 @@ - -# In case AddOutputFilterByType has been added -SetEnv no-gzip - diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/HTTP_ConditionalGet/2.php b/minimee/library/vendor/mrclay/minify/min_unit_tests/HTTP_ConditionalGet/2.php deleted file mode 100644 index 9b66f24..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/HTTP_ConditionalGet/2.php +++ /dev/null @@ -1,44 +0,0 @@ - $lastModified -)); -if ($cg->cacheIsValid) { - $cg->sendHeaders(); - // we're done - exit(); -} - -// generate content -$title = 'Last-Modified is known : add Content-Length'; -$explain = ' -

Here, like the first example, we know the Last-Modified time, -but we also want to set the Content-Length to increase cacheability and allow -HTTP persistent connections. Instead of sending headers immediately, we first -generate our content, then use setContentLength(strlen($content)) -to add the header. Then finally call sendHeaders() and send the -content.

-

Note: This is not required if your PHP config buffers all -output and your script doesn\'t do any incremental flushing of the output -buffer. PHP will generally set Content-Length for you if it can.

-

This script emulates a document that changes every ' .$every. ' seconds. -
This is version: ' . date('r', $lastModified) . '

-'; - -require '_include.php'; -$content = get_content(array( - 'title' => $title - ,'explain' => $explain -)); - -$cg->setContentLength(strlen($content)); -$cg->sendHeaders(); -send_slowly($content); - diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/HTTP_ConditionalGet/3.php b/minimee/library/vendor/mrclay/minify/min_unit_tests/HTTP_ConditionalGet/3.php deleted file mode 100644 index 8f5482b..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/HTTP_ConditionalGet/3.php +++ /dev/null @@ -1,40 +0,0 @@ -When Last-Modified is unknown, you can still use ETags, but you need a short -string that is unique for that content. In the worst case, you have to generate -all the content first, then instantiate HTTP_ConditionalGet, setting -the array key contentHash to the output of a hash function of the -content. Since we have the full content, we might as well also use -setContentLength(strlen($content)) in the case where we need to -send it.

-

This script emulates a document that changes every ' .$every. ' seconds. -
This is version: ' . date('r', $lastModified) . '

-'; -require '_include.php'; -$content = get_content(array( - 'title' => $title - ,'explain' => $explain -)); - -$cg = new HTTP_ConditionalGet(array( - 'contentHash' => substr(md5($content), 7) -)); -if ($cg->cacheIsValid) { - $cg->sendHeaders(); - // we're done - exit(); -} -$cg->setContentLength(strlen($content)); -$cg->sendHeaders(); - -send_slowly($content); - diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/HTTP_ConditionalGet/4.php b/minimee/library/vendor/mrclay/minify/min_unit_tests/HTTP_ConditionalGet/4.php deleted file mode 100644 index 4b77d20..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/HTTP_ConditionalGet/4.php +++ /dev/null @@ -1,49 +0,0 @@ - $lastModified - ,'encoding' => $enc -)); -$cg->sendHeaders(); -if ($cg->cacheIsValid) { - // we're done - exit(); -} - -// output encoded content - -$title = 'ConditionalGet + Encoder'; -$explain = ' -

Using ConditionalGet and Encoder is straightforward. First impliment the -ConditionalGet, then if the cache is not valid, encode and send the content

-

This script emulates a document that changes every ' .$every. ' seconds. -
This is version: ' . date('r', $lastModified) . '

-'; -require '_include.php'; -$content = get_content(array( - 'title' => $title - ,'explain' => $explain -)); - -$he = new HTTP_Encoder(array( - 'content' => get_content(array( - 'title' => $title - ,'explain' => $explain - )) -)); -$he->encode(); - -// usually you would just $he->sendAll(), but here we want to emulate slow -// connection -$he->sendHeaders(); -send_slowly($he->getContent()); diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/HTTP_ConditionalGet/5.php b/minimee/library/vendor/mrclay/minify/min_unit_tests/HTTP_ConditionalGet/5.php deleted file mode 100644 index b443c19..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/HTTP_ConditionalGet/5.php +++ /dev/null @@ -1,27 +0,0 @@ - 20 - ,'lastModifiedTime' => filemtime(__FILE__) -)); -$cg->sendHeaders(); - -// generate, send content -$title = 'Last-Modified + Expires'; -$explain = ' -

Here we set a static "lastModifiedTime" and "maxAge" to 20. The browser -will consider this document fresh for 20 seconds, then revalidate its cache. After -the 304 response, the cache will be good for another 20 seconds. Unless you force -a reload, there will only be 304 responses for this page after the initial download. -'; - -require '_include.php'; -echo get_content(array( - 'title' => $title - ,'explain' => $explain -)); - diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/HTTP_ConditionalGet/_include.php b/minimee/library/vendor/mrclay/minify/min_unit_tests/HTTP_ConditionalGet/_include.php deleted file mode 100644 index 9b65ae1..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/HTTP_ConditionalGet/_include.php +++ /dev/null @@ -1,64 +0,0 @@ - - - - - -HTTP_ConditionalGet : <?php echo $data['title']; ?> - - -

HTTP_ConditionalGet

-

- - -

Notes

-

How to distinguish 200 and 304 responses

-

For these pages all 200 responses are sent in chunks a second apart, so you -should notice that 304 responses are quicker. You can also use HTTP sniffers -like Fiddler (win) and -LiveHTTPHeaders (Firefox add-on) -to verify headers and content being sent.

-

Browser notes

-
-
Opera
-
Opera has a couple behaviors against the HTTP spec: Manual refreshes (F5) - prevents the ETag/If-Modified-Since headers from being sent; it only sends - them when following a link or bookmark. Also, Opera will not honor the - must-revalidate Cache-Control value unless max-age - is set. To get Opera to follow the spec, ConditionalGet will send Opera max-age=0 - (if one is not already set).
-
Safari
-
ETag validation is unsupported, but Safari supports HTTP/1.0 validation via - If-Modified-Since headers as long as the cache is explicitly marked - "public" or "private" ("private" is default in ConditionalGet).
-
- - - $lastModified -)); -$cg->sendHeaders(); -if ($cg->cacheIsValid) { - // we're done - exit(); -} - -$title = 'Last-Modified is known : simple usage'; -$explain = ' -

If your content has not changed since a certain timestamp, set this via the -the lastModifiedTime array key when instantiating HTTP_ConditionalGet. -You can immediately call the method sendHeaders() to set the -Last-Modified, ETag, and Cache-Control headers. The, if cacheIsValid -property is false, you echo the content.

-

This script emulates a document that changes every ' .$every. ' seconds. -
This is version: ' . date('r', $lastModified) . '

-'; - -require '_include.php'; - -echo send_slowly(get_content(array( - 'title' => $title - ,'explain' => $explain -))); - diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/HTTP_Encoder/green.png b/minimee/library/vendor/mrclay/minify/min_unit_tests/HTTP_Encoder/green.png deleted file mode 100644 index d9d3a308aec0e9c7be676a8bc5438e5c61427ff2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_{3?x-PN__%S%*9TgAsieWw;%dH0CL#^d_r6q z{xkglf9682r8`iBv%n*=n1O-o0|+xZtudJa6cj6QjVN(0N=+=u%+FH@$;?efo0^iDsNj}alv - - - -HTTP_Encoder Test - - - -

HTTP_Encoder test

-

HTML

-

CSS

-

Javascript

-

image

- - - - $content - ,'type' => $type -)); -$he->encode(); -$he->sendAll(); - -?> \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_inc.php b/minimee/library/vendor/mrclay/minify/min_unit_tests/_inc.php deleted file mode 100644 index 197ed95..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_inc.php +++ /dev/null @@ -1,62 +0,0 @@ -0, 'fail'=>0, 'total'=>0); - - $mode = $test ? 'pass' : 'fail'; - $outMode = $test ? 'PASS' : '!FAIL'; - printf("%s: %s (%d of %d tests run so far have %sed)\n", - $outMode, $message, ++$count[$mode], ++$count['total'], $mode); - - return (bool)$test; -} - -/** - * Get number of bytes in a string regardless of mbstring.func_overload - * - * @param string $str - * @return int - */ -function countBytes($str) -{ - return (function_exists('mb_strlen') && ((int)ini_get('mbstring.func_overload') & 2)) - ? mb_strlen($str, '8bit') - : strlen($str); -} - -ob_start(); \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/comments.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/comments.css deleted file mode 100644 index 2ef9fac..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/comments.css +++ /dev/null @@ -1,9 +0,0 @@ - -/* block comments get removed */ - -/*! YUI Compressor style comments are preserved */ - -/* but all other comments are removed */ - -/* comments that have any surrounding whitespace are replaced by a single space. */ -body{ background:#fff/*eef*/ url(/path/to/image.gif) repeat-y; } diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/comments.min.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/comments.min.css deleted file mode 100644 index e0414a7..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/comments.min.css +++ /dev/null @@ -1,3 +0,0 @@ - -/*! YUI Compressor style comments are preserved */ -body{background:#fff url(/path/to/image.gif) repeat-y} \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/hacks.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/hacks.css deleted file mode 100644 index fccd321..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/hacks.css +++ /dev/null @@ -1,66 +0,0 @@ -/* hide from ie5/mac \*/ a{} -.foo {color:red} -/* necessary comment */ - -/* comment to attempt to confuse parser */ - -/* feed to ie5/mac \*//*/ -@import "ie5mac.css"; -/* necessary comment */ - -/* comment to attempt to confuse parser */ - -/*/ hide from nav4 */ -.foo {display:block;} -/* necessary comment */ - -/* comment to attempt to confuse parser */ - -/*/ feed to nav *//*/ -.foo {display:crazy;} -/* necessary comment */ - -/* hide props from various IE/win */ -div { - width: 140px; - width/* */:/**/100px; - width: /**/100px; -} - -html>/**/body {} - -/* Tantek's box model hack */ -div { - width:400px; - voice-family: "\"}\""; - voice-family:inherit; - width:300px; -} - -/* don't minimize hex colors in filters */ -div { - filter:chroma(color=#aabbcc); - filter:mask(color=#000000) shadow(color=#9BAD71, direction=135) chroma(color=#000000); -} - -@media screen { - /* for IE 5.x-6, hidden from IE 5 Mac */ /*\*/ - * html div#page { - height: 1%; - } - /**/ /* end hidden from IE 5 Mac */ -} - -foo { /* filters for IE */ - _height : 20px; - *height : 15px; -} - -/* http://tantek.com/CSS/Examples/midpass.html */ -@media tty { - i{content:"\";/*" "*/}} @import 'midpassafter.css'; /*";} -}/* */ - -/* leave at least 1 space between these pseudo elements and "{" for IE6: http://www.crankygeek.com/ie6pebug/ */ -p:first-letter {color:red;} -p:first-line {color:red;} diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/hacks.min.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/hacks.min.css deleted file mode 100644 index 68be2ee..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/hacks.min.css +++ /dev/null @@ -1,4 +0,0 @@ -/*\*/a{}.foo{color:red}/**/ /*\*//*/@import "ie5mac.css";/**/ /*/*/.foo{display:block}/**/ /*/*//*/.foo{display:crazy}/**/ div{width:140px;width/**/:/**/100px;width:/**/100px}html>/**/body{}div{width:400px;voice-family:"\"}\"";voice-family:inherit;width:300px}div{filter:chroma(color=#aabbcc);filter:mask(color=#000000) shadow(color=#9BAD71, direction=135) chroma(color=#000000)}@media -screen{/*\*/* html -div#page{height:1%}/**/}foo{_height:20px;*height:15px}@media -tty{i{content:"\";/*" "*/}}@import 'midpassafter.css';/*"}}/* */ p:first-letter {color:red}p:first-line {color:red} \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/issue210.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/issue210.css deleted file mode 100644 index 842195b..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/issue210.css +++ /dev/null @@ -1 +0,0 @@ -.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; } \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/issue210.min.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/issue210.min.css deleted file mode 100644 index 8a1869d..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/issue210.min.css +++ /dev/null @@ -1 +0,0 @@ -.ui-widget{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif} \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/issue62.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/issue62.css deleted file mode 100644 index 006c7a2..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/issue62.css +++ /dev/null @@ -1,890 +0,0 @@ -/* -* DEFINITION DES STYLES DE TEXTE -*/ - /*-----------------------------------------------------------------------------------*/ -h1 { - color: #339933; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 14px; - font-weight: bold; - text-decoration: none; -} - -h2 { - color: #339933; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - font-weight: bold; - text-decoration: none; -} - -h1,h2,h3,h4,h5 { - margin: 0px; - padding: 0px; -} - -.txt_10_noir { - color: black; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - text-decoration: none; -} - -.txt_10_noir:link,.txt_10_noir:visited,.txt_10_noir:active { - color: black; -} - -.txt_10_noir:hover { - color: red; -} - -.txt_11_noir { - color: black; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.txt_11_noir:link,.txt_11_noir:visited,.txt_11_noir:active { - color: black; -} - -.txt_11_noir:hover { - color: red; -} - -.txt_12_noir { - color: black; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - text-decoration: none; -} - -.txt_12_noir:link,.txt_12_noir:visited,.txt_12_noir:active { - color: black; -} - -.txt_12_noir:hover { - color: red; -} - -.txt_14_noir { - color: black; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 14px; - text-decoration: none; -} - -.txt_14_noir:link,.txt_14_noir:visited,.txt_14_noir:active { - color: black; -} - -.txt_14_noir:hover { - color: red; -} - -/*-----------------------------------------------------------------------------------*/ -.txt_10_gris { - color: grey; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - text-decoration: none; -} - -.txt_10_gris:link,.txt_10_gris:visited,.txt_10_gris:active { - color: grey; -} - -.txt_10_gris:hover { - color: red; -} - -.txt_11_gris { - color: grey; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.txt_11_gris:link,.txt_11_gris:visited,.txt_11_gris:active { - color: grey; -} - -.txt_11_gris:hover { - color: red; -} - -.txt_12_gris { - color: grey; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - text-decoration: none; -} - -.txt_12_gris:link,.txt_12_gris:visited,.txt_12_gris:active { - color: grey; -} - -.txt_12_gris:hover { - color: red; -} - -.txt_14_gris { - color: grey; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 14px; - text-decoration: none; -} - -.txt_14_gris:link,.txt_14_gris:visited,.txt_14_gris:active { - color: grey; -} - -.txt_14_gris:hover { - color: red; -} - -/*-----------------------------------------------------------------------------------*/ -.txt_10_blanc { - color: #FFFFFF; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - text-decoration: none; -} - -.txt_10_blanc:link,.txt_10_blanc:visited,.txt_10_blanc:active { - color: #FFFFFF; -} - -.txt_10_blanc:hover { - color: #FF8800; /*ORANGE*/ -} - -.txt_11_blanc { - color: #FFFFFF; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.txt_11_blanc:link,.txt_11_blanc:visited,.txt_11_blanc:active { - color: #FFFFFF; -} - -.txt_11_blanc:hover { - color: #FF8800; -} - -.txt_12_blanc { - color: #FFFFFF; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - text-decoration: none; -} - -.txt_12_blanc:link,.txt_12_blanc:visited,.txt_12_blanc:active { - color: #FFFFFF; -} - -.txt_12_blanc:hover { - color: #FFAA00; -} - -.txt_14_blanc { - color: #FFFFFF; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 14px; - text-decoration: none; -} - -.txt_14_blanc:link,.txt_14_blanc:visited,.txt_14_blanc:active { - color: #FFFFFF; -} - -.txt_14_blanc:hover { - color: #FF8800; -} - -/*-----------------------------------------------------------------------------------*/ -.txt_10_orange { - color: #FF8800; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - text-decoration: none; -} - -.txt_10_orange:link,.txt_10_orange:visited,.txt_10_orange:active { - color: #FF8800; -} - -.txt_10_orange:hover { - color: darkblue -} - -.txt_11_orange { - color: #FF8800; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.txt_11_orange:link,.txt_11_orange:visited,.txt_11_orange:active { - color: #FF8800; -} - -.txt_11_orange:hover { - color: darkblue; -} - -.txt_12_orange { - color: #FF8800; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - text-decoration: none; -} - -.txt_12_orange:link,.txt_12_orange:visited,.txt_12_orange:active { - color: #FF8800; -} - -.txt_12_orange:hover { - color: darkblue; -} - -.txt_14_orange { - color: #FF8800; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 14px; - text-decoration: none; -} - -.txt_14_orange:link,.txt_14_orange:visited,.txt_14_orange:active { - color: #FF8800; -} - -.txt_14_orange:hover { - color: darkblue; -} - -/*-----------------------------------------------------------------------------------*/ -.txt_10_rouge { - color: red; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - text-decoration: none; -} - -.txt_10_rouge:link,.txt_10_rouge:visited,.txt_10_rouge:active { - color: red; -} - -.txt_10_rouge:hover { - color: darkblue; -} - -.txt_11_rouge { - color: red; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.txt_11_rouge:link,.txt_11_rouge:visited,.txt_11_rouge:active { - color: red; -} - -.txt_11_rouge:hover { - color: darkblue; -} - -.txt_12_rouge { - color: red; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - text-decoration: none; -} - -.txt_12_rouge:link,.txt_12_rouge:visited,.txt_12_rouge:active { - color: red; -} - -.txt_12_rouge:hover { - color: darkblue; -} - -.txt_14_rouge { - color: red; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 14px; - text-decoration: none; -} - -.txt_14_rouge:link,.txt_14_rouge:visited,.txt_14_rouge:active { - color: red; -} - -.txt_14_rouge:hover { - color: darkblue; -} - -/*-----------------------------------------------------------------------------------*/ -.txt_10_bleu { - color: blue; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - text-decoration: none; -} - -.txt_10_bleu:link,.txt_10_bleu:visited,.txt_10_bleu:active { - color: blue; -} - -.txt_10_bleu:hover { - color: red; -} - -.txt_11_bleu { - color: blue; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.txt_11_bleu:link,.txt_11_bleu:visited,.txt_11_bleu:active { - color: blue; -} - -.txt_11_bleu:hover { - color: red; -} - -.txt_12_bleu { - color: blue; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - text-decoration: none; -} - -.txt_12_bleu:link,.txt_12_bleu:visited,.txt_12_bleu:active { - color: blue; -} - -.txt_12_bleu:hover { - color: red; -} - -.txt_14_bleu { - color: blue; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 14px; - text-decoration: none; -} - -.txt_14_bleu:link,.txt_14_bleu:visited,.txt_14_bleu:active { - color: blue; -} - -.txt_14_bleu:hover { - color: red; -} - -/*-----------------------------------------------------------------------------------*/ -.txt_10_bleu_f { - color: darkblue; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - text-decoration: none; -} - -.txt_10_bleu_f:link,.txt_10_bleu_f:visited,.txt_10_bleu_f:active { - color: darkblue; -} - -.txt_10_bleu_f:hover { - color: red; -} - -.txt_11_bleu_f { - color: darkblue; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.txt_11_bleu_f:link,.txt_11_bleu_f:visited,.txt_11_bleu_f:active { - color: darkblue; -} - -.txt_11_bleu_f:hover { - color: red; -} - -.txt_12_bleu_f { - color: darkblue; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - text-decoration: none; -} - -.txt_12_bleu_f:link,.txt_12_bleu_f:visited,.txt_12_bleu_f:active { - color: darkblue; -} - -.txt_12_bleu_f:hover { - color: red; -} - -.txt_14_bleu_f { - color: darkblue; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 14px; - text-decoration: none; -} - -.txt_14_bleu_f:link,.txt_14_bleu_f:visited,.txt_14_bleu_f:active { - color: darkblue; -} - -.txt_14_bleu_f:hover { - color: red; -} - -/*-----------------------------------------------------------------------------------*/ -.txt_10_vert_f { - color: darkgreen; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - text-decoration: none; -} - -.txt_10_vert_f:link,.txt_10_vert_f:visited,.txt_10_vert_f:active { - color: darkgreen; -} - -.txt_10_vert_f:hover { - color: red; -} - -.txt_11_vert_f { - color: darkgreen; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.txt_11_vert_f:link,.txt_11_vert_f:visited,.txt_11_vert_f:active { - color: darkgreen; -} - -.txt_11_vert_f:hover { - color: red; -} - -.txt_12_vert_f { - color: darkgreen; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - text-decoration: none; -} - -.txt_12_vert_f:link,.txt_12_vertf:visited,.txt_12_vert_f:active { - color: darkgreen; -} - -.txt_12_vert_f:hover { - color: red; -} - -.txt_14_vert_f { - color: darkgreen; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 14px; - text-decoration: none; -} - -.txt_14_vert_f:link,.txt_14_vert_f:visited,.txt_14_vert_f:active { - color: darkgreen; -} - -.txt_14_vert_f:hover { - color: red; -} - -/*-----------------------------------------------------------------------------------*/ -.txt_10_vert { - color: green; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - text-decoration: none; -} - -.txt_10_vert:link,.txt_10_vert:visited,.txt_10_vert:active { - color: green; -} - -.txt_10_vert:hover { - color: red; -} - -.txt_11_vert { - color: green; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.txt_11_vert:link,.txt_11_vert:visited,.txt_11_vert:active { - color: green; -} - -.txt_11_vert:hover { - color: red; -} - -.txt_12_vert { - color: green; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - text-decoration: none; -} - -.txt_12_vert:link,.txt_12_vert:visited,.txt_12_vert:active { - color: green; -} - -.txt_12_vert:hover { - color: red; -} - -.txt_14_vert { - color: green; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 14px; - text-decoration: none; -} - -.txt_14_vert:link,.txt_14_vert:visited,.txt_14_vert:active { - color: green; -} - -.txt_14_vert:hover { - color: red; -} - -/*-----------------------------------------------------------------------------------*/ -.fond_blanc { - background-color: #FFFFFF; - color: black; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.fond_gris_c, .fond_gris_c tr { - background-color: #FFFFFF; - color: black; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; - background-image: url(../images/fond_4.bmp); - background-repeat: repeat-x; -} - -.fond_gris_c2, .fond_gris_c2 tr { - background-color: #FBFBFB; - color: black; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.fond_bleu_c, .fond_bleu_c tr { - background-color: #D9EEF9; - color: black; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; - background-image: url(../images/fond_1.bmp); -} - -.fond_bleu_c2 { - background-color: #ECF4FF; - color: black; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.fond_bleu_f { - background-color: #003366; - color: black; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.fond_orange { - background-color: #FEEFE7; - color: darkgreen; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - font-weight: bold; - text-decoration: none; - background-image: url(../images/fond_3.jpg); -} - -.fond_orange_2 { - background-color: #FFF8F4; - color: darkgreen; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - font-weight: bold; - text-decoration: none; - border: 1px solid orange; - border-collapse: collapse; -} - -.vccDlgBody { - border: 3px solid #336699; - border-collapse: collapse; - color: black; - background-color: #EEFFEE; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -/* DEFINITION DES STYLES DE TABLEAUX */ -.bordure_0 { - border: 0px solid; - color: black; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.bordure_1_bleu { - border: 1px solid green; - border-collapse: collapse; - color: black; - background-color: #FFFFFF; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.bordure_3_bleu { - border: 3px solid #336699; - border-collapse: collapse; - color: black; - background-color: #FFFFFF; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 11px; - text-decoration: none; -} - -.indent { - margin-left: 20px; -} - -/* DEFINITION DES STYLES D'OBJETS DE FORMULAIRE */ -.Btn { - color: #003366; - text-align: center; - font-weight: bold; - background-color: #FFFFFF; - background-image: url(../images/ongletStyle1.jpg); - background-repeat: no-repeat; - background-position: center center; -} - -.Btn:hover { - color: red; -} - -.menu1h { - background-color: #003366; - color: white; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - font-weight: bold; - text-decoration: none; - border-top: 1px solid #003366; - border-bottom: 1px solid #003366; - border-left: 1px solid #003366; - border-right: 1px solid white; - border-collapse: collapse; - display: block; -} - -.menu1h:hover { - background-color: white; - color: red; - border: 1px solid darkgreen; - border-collapse: collapse; -} - -.menu1h_f { - background-color: #003366; - color: white; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - font-weight: bold; - text-decoration: none; - border: 1px solid #003366; - display: block; -} - -.menu1h_f:hover { - background-color: white; - color: red; - border: 1px solid darkgreen; - border-collapse: collapse; -} - -.menu1v { - background-color: #003366; - color: white; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - font-weight: bold; - text-decoration: none; - border: 1px solid #003366; - border-collapse: collapse; - display: block; -} - -.menu1v:hover { - background-color: white; - color: red; - border: 1px solid darkgreen; - border-collapse: collapse; -} - -.menu2v { - background-color: #5588BB; - color: white; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 12px; - font-weight: bold; - text-decoration: none; - border: 1px solid #4277AB; - border-collapse: collapse; - float: left; - display: block; -} - -.menu2v:hover { - background-color: white; - color: red; - border: 1px solid darkgreen; - border-collapse: collapse; -} - -.menuEDF { - background-color: #003366; - color: white; - font-family: Verdana, Arial, Lucida, Tahoma; - font-size: 10px; - text-decoration: none; -} - -.menuEDF:hover { - color: #FF8800; -} - -/*bouton bleu sur blanc*/ -.Bouton { - color: #003366; - text-align: center; - font-weight: bold; - /* Ricardo cursor: hand; */ - cursor: pointer; - background-color: #FFFFFF; -} - -input { - border: 2px solid green; - color: #003366; - background-color: #FFFFFF; - background-image: url(../images/fond_4.bmp); - background-repeat: repeat-x; -} - -.disabled_input { - border: 1px solid gray; - color: grey; - background-color: #FFFFFF; - background-image: url(../images/fond_4.bmp); - background-repeat: repeat-x; -} - -.input0 { - border: 0px; - color: #003366; - background-color: #FFFFFF; - background-image: url(../images/fond_4.bmp); -} - -.input2 { - border: 1px solid green; - color: #003366; - background-color: #FFFFFF; - background-image: url(../images/fond_4.bmp); - background-repeat: repeat-x; -} - -.input3 { - border: 1px solid black; - color: #003366; - background-color: #EEEEEE; - background-image: url(); -} - -.input4 { - border: 1px solid blue; - color: #003366; - background-color: #FFFFFF; - background-image: url(../images/fond_4.bmp); - background-repeat: repeat-x; -} - -.input5 { - border: 1px solid darkblue; - color: #003366; - background-color: #FFFFFF; - background-image: url(../images/fond_4.bmp); - background-repeat: repeat-x; -} - -.input_btn { - border: 0px; - /* cursor: hand; */ - cursor: pointer; -} - -textarea { - border: 2px solid green; - color: #003366; - background-color: #FFFFFF; - background-image: url(../images/fond_5.bmp); -} - -.TEXTAREA3 { - border: 1px solid green; - color: #003366; - background-color: #FFFFFF; - background-image: url(); -} - -.TEXTAREA4 { - border: 1px solid green; - color: #003366; - background-color: #EEEEEE; - background-image: url(); -} - -.hand { - cursor: hand; - cursor: pointer; -} \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/issue62.min.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/issue62.min.css deleted file mode 100644 index 5eb1982..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/issue62.min.css +++ /dev/null @@ -1,25 +0,0 @@ -h1{color:#393;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;font-weight:bold;text-decoration:none}h2{color:#393;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;font-weight:bold;text-decoration:none}h1,h2,h3,h4,h5{margin:0px;padding:0px}.txt_10_noir{color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_noir:link,.txt_10_noir:visited,.txt_10_noir:active{color:black}.txt_10_noir:hover{color:red}.txt_11_noir{color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_noir:link,.txt_11_noir:visited,.txt_11_noir:active{color:black}.txt_11_noir:hover{color:red}.txt_12_noir{color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_noir:link,.txt_12_noir:visited,.txt_12_noir:active{color:black}.txt_12_noir:hover{color:red}.txt_14_noir{color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_noir:link,.txt_14_noir:visited,.txt_14_noir:active{color:black}.txt_14_noir:hover{color:red}.txt_10_gris{color:grey;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_gris:link,.txt_10_gris:visited,.txt_10_gris:active{color:grey}.txt_10_gris:hover{color:red}.txt_11_gris{color:grey;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_gris:link,.txt_11_gris:visited,.txt_11_gris:active{color:grey}.txt_11_gris:hover{color:red}.txt_12_gris{color:grey;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_gris:link,.txt_12_gris:visited,.txt_12_gris:active{color:grey}.txt_12_gris:hover{color:red}.txt_14_gris{color:grey;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_gris:link,.txt_14_gris:visited,.txt_14_gris:active{color:grey}.txt_14_gris:hover{color:red}.txt_10_blanc{color:#FFF;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_blanc:link,.txt_10_blanc:visited,.txt_10_blanc:active{color:#FFF}.txt_10_blanc:hover{color:#F80}.txt_11_blanc{color:#FFF;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_blanc:link,.txt_11_blanc:visited,.txt_11_blanc:active{color:#FFF}.txt_11_blanc:hover{color:#F80}.txt_12_blanc{color:#FFF;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_blanc:link,.txt_12_blanc:visited,.txt_12_blanc:active{color:#FFF}.txt_12_blanc:hover{color:#FA0}.txt_14_blanc{color:#FFF;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_blanc:link,.txt_14_blanc:visited,.txt_14_blanc:active{color:#FFF}.txt_14_blanc:hover{color:#F80}.txt_10_orange{color:#F80;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_orange:link,.txt_10_orange:visited,.txt_10_orange:active{color:#F80}.txt_10_orange:hover{color:darkblue}.txt_11_orange{color:#F80;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_orange:link,.txt_11_orange:visited,.txt_11_orange:active{color:#F80}.txt_11_orange:hover{color:darkblue}.txt_12_orange{color:#F80;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_orange:link,.txt_12_orange:visited,.txt_12_orange:active{color:#F80}.txt_12_orange:hover{color:darkblue}.txt_14_orange{color:#F80;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_orange:link,.txt_14_orange:visited,.txt_14_orange:active{color:#F80}.txt_14_orange:hover{color:darkblue}.txt_10_rouge{color:red;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_rouge:link,.txt_10_rouge:visited,.txt_10_rouge:active{color:red}.txt_10_rouge:hover{color:darkblue}.txt_11_rouge{color:red;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_rouge:link,.txt_11_rouge:visited,.txt_11_rouge:active{color:red}.txt_11_rouge:hover{color:darkblue}.txt_12_rouge{color:red;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_rouge:link,.txt_12_rouge:visited,.txt_12_rouge:active{color:red}.txt_12_rouge:hover{color:darkblue}.txt_14_rouge{color:red;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_rouge:link,.txt_14_rouge:visited,.txt_14_rouge:active{color:red}.txt_14_rouge:hover{color:darkblue}.txt_10_bleu{color:blue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_bleu:link,.txt_10_bleu:visited,.txt_10_bleu:active{color:blue}.txt_10_bleu:hover{color:red}.txt_11_bleu{color:blue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_bleu:link,.txt_11_bleu:visited,.txt_11_bleu:active{color:blue}.txt_11_bleu:hover{color:red}.txt_12_bleu{color:blue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_bleu:link,.txt_12_bleu:visited,.txt_12_bleu:active{color:blue}.txt_12_bleu:hover{color:red}.txt_14_bleu{color:blue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_bleu:link,.txt_14_bleu:visited,.txt_14_bleu:active{color:blue}.txt_14_bleu:hover{color:red}.txt_10_bleu_f{color:darkblue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_bleu_f:link,.txt_10_bleu_f:visited,.txt_10_bleu_f:active{color:darkblue}.txt_10_bleu_f:hover{color:red}.txt_11_bleu_f{color:darkblue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_bleu_f:link,.txt_11_bleu_f:visited,.txt_11_bleu_f:active{color:darkblue}.txt_11_bleu_f:hover{color:red}.txt_12_bleu_f{color:darkblue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_bleu_f:link,.txt_12_bleu_f:visited,.txt_12_bleu_f:active{color:darkblue}.txt_12_bleu_f:hover{color:red}.txt_14_bleu_f{color:darkblue;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_bleu_f:link,.txt_14_bleu_f:visited,.txt_14_bleu_f:active{color:darkblue}.txt_14_bleu_f:hover{color:red}.txt_10_vert_f{color:darkgreen;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_vert_f:link,.txt_10_vert_f:visited,.txt_10_vert_f:active{color:darkgreen}.txt_10_vert_f:hover{color:red}.txt_11_vert_f{color:darkgreen;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_vert_f:link,.txt_11_vert_f:visited,.txt_11_vert_f:active{color:darkgreen}.txt_11_vert_f:hover{color:red}.txt_12_vert_f{color:darkgreen;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_vert_f:link,.txt_12_vertf:visited,.txt_12_vert_f:active{color:darkgreen}.txt_12_vert_f:hover{color:red}.txt_14_vert_f{color:darkgreen;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_vert_f:link,.txt_14_vert_f:visited,.txt_14_vert_f:active{color:darkgreen}.txt_14_vert_f:hover{color:red}.txt_10_vert{color:green;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.txt_10_vert:link,.txt_10_vert:visited,.txt_10_vert:active{color:green}.txt_10_vert:hover{color:red}.txt_11_vert{color:green;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.txt_11_vert:link,.txt_11_vert:visited,.txt_11_vert:active{color:green}.txt_11_vert:hover{color:red}.txt_12_vert{color:green;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;text-decoration:none}.txt_12_vert:link,.txt_12_vert:visited,.txt_12_vert:active{color:green}.txt_12_vert:hover{color:red}.txt_14_vert{color:green;font-family:Verdana,Arial,Lucida,Tahoma;font-size:14px;text-decoration:none}.txt_14_vert:link,.txt_14_vert:visited,.txt_14_vert:active{color:green}.txt_14_vert:hover{color:red}.fond_blanc{background-color:#FFF;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.fond_gris_c, .fond_gris_c -tr{background-color:#FFF;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none;background-image:url(../images/fond_4.bmp);background-repeat:repeat-x}.fond_gris_c2, .fond_gris_c2 -tr{background-color:#FBFBFB;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.fond_bleu_c, .fond_bleu_c -tr{background-color:#D9EEF9;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none;background-image:url(../images/fond_1.bmp)}.fond_bleu_c2{background-color:#ECF4FF;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.fond_bleu_f{background-color:#036;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.fond_orange{background-color:#FEEFE7;color:darkgreen;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;font-weight:bold;text-decoration:none;background-image:url(../images/fond_3.jpg)}.fond_orange_2{background-color:#FFF8F4;color:darkgreen;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;font-weight:bold;text-decoration:none;border:1px -solid orange;border-collapse:collapse}.vccDlgBody{border:3px -solid #369;border-collapse:collapse;color:black;background-color:#EFE;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.bordure_0{border:0px -solid;color:black;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.bordure_1_bleu{border:1px -solid green;border-collapse:collapse;color:black;background-color:#FFF;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.bordure_3_bleu{border:3px -solid #369;border-collapse:collapse;color:black;background-color:#FFF;font-family:Verdana,Arial,Lucida,Tahoma;font-size:11px;text-decoration:none}.indent{margin-left:20px}.Btn{color:#036;text-align:center;font-weight:bold;background-color:#FFF;background-image:url(../images/ongletStyle1.jpg);background-repeat:no-repeat;background-position:center center}.Btn:hover{color:red}.menu1h{background-color:#036;color:white;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;font-weight:bold;text-decoration:none;border-top:1px solid #036;border-bottom:1px solid #036;border-left:1px solid #036;border-right:1px solid white;border-collapse:collapse;display:block}.menu1h:hover{background-color:white;color:red;border:1px -solid darkgreen;border-collapse:collapse}.menu1h_f{background-color:#036;color:white;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;font-weight:bold;text-decoration:none;border:1px -solid #036;display:block}.menu1h_f:hover{background-color:white;color:red;border:1px -solid darkgreen;border-collapse:collapse}.menu1v{background-color:#036;color:white;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;font-weight:bold;text-decoration:none;border:1px -solid #036;border-collapse:collapse;display:block}.menu1v:hover{background-color:white;color:red;border:1px -solid darkgreen;border-collapse:collapse}.menu2v{background-color:#58B;color:white;font-family:Verdana,Arial,Lucida,Tahoma;font-size:12px;font-weight:bold;text-decoration:none;border:1px -solid #4277AB;border-collapse:collapse;float:left;display:block}.menu2v:hover{background-color:white;color:red;border:1px -solid darkgreen;border-collapse:collapse}.menuEDF{background-color:#036;color:white;font-family:Verdana,Arial,Lucida,Tahoma;font-size:10px;text-decoration:none}.menuEDF:hover{color:#F80}.Bouton{color:#036;text-align:center;font-weight:bold;cursor:pointer;background-color:#FFF}input{border:2px -solid green;color:#036;background-color:#FFF;background-image:url(../images/fond_4.bmp);background-repeat:repeat-x}.disabled_input{border:1px -solid gray;color:grey;background-color:#FFF;background-image:url(../images/fond_4.bmp);background-repeat:repeat-x}.input0{border:0px;color:#036;background-color:#FFF;background-image:url(../images/fond_4.bmp)}.input2{border:1px -solid green;color:#036;background-color:#FFF;background-image:url(../images/fond_4.bmp);background-repeat:repeat-x}.input3{border:1px -solid black;color:#036;background-color:#EEE;background-image:url()}.input4{border:1px -solid blue;color:#036;background-color:#FFF;background-image:url(../images/fond_4.bmp);background-repeat:repeat-x}.input5{border:1px -solid darkblue;color:#036;background-color:#FFF;background-image:url(../images/fond_4.bmp);background-repeat:repeat-x}.input_btn{border:0px;cursor:pointer}textarea{border:2px -solid green;color:#036;background-color:#FFF;background-image:url(../images/fond_5.bmp)}.TEXTAREA3{border:1px -solid green;color:#036;background-color:#FFF;background-image:url()}.TEXTAREA4{border:1px -solid green;color:#036;background-color:#EEE;background-image:url()}.hand{cursor:hand;cursor:pointer} \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/paths_prepend.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/paths_prepend.css deleted file mode 100644 index da7cfca..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/paths_prepend.css +++ /dev/null @@ -1,12 +0,0 @@ -@import "foo.css"; -@import 'bar/foo.css' print; -@import '/css/foo.css'; /* abs, should not alter */ -@import 'http://foo.com/css/foo.css'; /* abs, should not alter */ -@import url(../foo.css) tv, projection; -@import url("/css/foo.css"); /* abs, should not alter */ -@import url(/css2/foo.css); /* abs, should not alter */ -@import url(data:image/gif;base64,AAAA); /* data, should not alter */ -foo {background:url('bar/foo.png')} -foo {background:url('http://foo.com/css/foo.css');} /* abs, should not alter */ -foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */ -foo {background:url(data:image/gif;base64,AAAA);} /* data, should not alter */ \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/paths_prepend.min.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/paths_prepend.min.css deleted file mode 100644 index ffb94e2..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/paths_prepend.min.css +++ /dev/null @@ -1 +0,0 @@ -@import "../foo.css";@import '../bar/foo.css' print;@import '/css/foo.css';@import 'http://foo.com/css/foo.css';@import url(../../foo.css) tv, projection;@import url("/css/foo.css");@import url(/css2/foo.css);@import url(data:image/gif;base64,AAAA);foo{background:url('../bar/foo.png')}foo{background:url('http://foo.com/css/foo.css')}foo{background:url("//foo.com/css/foo.css")}foo{background:url(data:image/gif;base64,AAAA)} \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/paths_rewrite.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/paths_rewrite.css deleted file mode 100644 index aa41d0a..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/paths_rewrite.css +++ /dev/null @@ -1,14 +0,0 @@ -@import "foo.css"; -@import 'bar/foo.css' print; -@import '../bar/foo.css' print; -@import '../../foo.css' print; -@import '/css/foo.css'; /* abs, should not alter */ -@import 'http://foo.com/css/foo.css'; /* abs, should not alter */ -@import url(../foo.css) tv, projection; -@import url("/css/foo.css"); /* abs, should not alter */ -@import url(/css2/foo.css); /* abs, should not alter */ -@import url(data:image/gif;base64,AAAA); /* data, should not alter */ -foo {background:url('bar/foo.png')} -foo {background:url('http://foo.com/css/foo.css');} /* abs, should not alter */ -foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */ -foo {background:url(data:image/gif;base64,AAAA);} /* data, should not alter */ \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/paths_rewrite.min.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/paths_rewrite.min.css deleted file mode 100644 index 3493615..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/paths_rewrite.min.css +++ /dev/null @@ -1 +0,0 @@ -@import "/_test_files/css/foo.css";@import '/_test_files/css/bar/foo.css' print;@import '/_test_files/bar/foo.css' print;@import '/foo.css' print;@import '/css/foo.css';@import 'http://foo.com/css/foo.css';@import url(/_test_files/foo.css) tv, projection;@import url("/css/foo.css");@import url(/css2/foo.css);@import url(data:image/gif;base64,AAAA);foo{background:url('/_test_files/css/bar/foo.png')}foo{background:url('http://foo.com/css/foo.css')}foo{background:url("//foo.com/css/foo.css")}foo{background:url(data:image/gif;base64,AAAA)} \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/readme.txt b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/readme.txt deleted file mode 100644 index 0181755..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/readme.txt +++ /dev/null @@ -1 +0,0 @@ -Test suite from http://search.cpan.org/~gtermars/CSS-Minifier-XS/ \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/selectors.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/selectors.css deleted file mode 100644 index d74c9aa..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/selectors.css +++ /dev/null @@ -1,42 +0,0 @@ -/* http://www.w3.org/TR/css3-selectors/ */ - -* -E[foo] -E[foo="bar"] -E[foo~="bar"] -E[foo^="bar"] -E[foo$="bar"] -E[foo*="bar"] -E[hreflang|="en"] -E:root -E:nth-child(n) -E:nth-last-child(n) -E:nth-of-type(n) -E:nth-last-of-type(n) -E:first-child -E:last-child -E:first-of-type -E:last-of-type -E:only-child -E:only-of-type -E:empty -E:link -E:visited -E:active -E:hover -E:focus -E:target -E:lang(fr) -E:enabled -E:disabled -E:checked -E::first-line -E::first-letter -E::selection -E::before -E::after -E.warning#myid -E:not(s) - > F - + F - ~ F {color: red;} \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/selectors.min.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/selectors.min.css deleted file mode 100644 index 643089f..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/selectors.min.css +++ /dev/null @@ -1,37 +0,0 @@ -* -E[foo] -E[foo="bar"] -E[foo~="bar"] -E[foo^="bar"] -E[foo$="bar"] -E[foo*="bar"] -E[hreflang|="en"] -E:root -E:nth-child(n) -E:nth-last-child(n) -E:nth-of-type(n) -E:nth-last-of-type(n) -E:first-child -E:last-child -E:first-of-type -E:last-of-type -E:only-child -E:only-of-type -E:empty -E:link -E:visited -E:active -E:hover -E:focus -E:target -E:lang(fr) -E:enabled -E:disabled -E:checked -E::first-line -E::first-letter -E::selection -E::before -E::after -E.warning#myid -E:not(s)>F+F~F{color:red} \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/styles.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/styles.css deleted file mode 100644 index ed0bcd4..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/styles.css +++ /dev/null @@ -1,33 +0,0 @@ -@charset "utf-8"; - -/* some CSS to try to exercise things in general */ - -@import url( /more.css ); - - body, td, th { - font-family: Verdana , "Bitstream Vera Sans" , Arial Narrow, sans-serif ; - - font-size : 12px; -} - -.nav { - margin-left: 20%; -} -#main-nav { - background-color: red; - border: 1px solid #00ff77; -} - -div#content -h1 + p { - padding-top: 0; - margin-top: 0; -} - -@media all and (min-width: 640px) { - #media-queries-1 { background-color: #0f0; } -} - -@media screen and (max-width: 2000px) { - #media-queries-2 { background-color: #0f0; } -} \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/styles.min.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/styles.min.css deleted file mode 100644 index a71063d..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/styles.min.css +++ /dev/null @@ -1,3 +0,0 @@ -@import url(/more.css);body,td,th{font-family:Verdana,"Bitstream Vera Sans",Arial Narrow,sans-serif;font-size:12px}.nav{margin-left:20%}#main-nav{background-color:red;border:1px -solid #0f7}div#content -h1+p{padding-top:0;margin-top:0}@media all and (min-width: 640px){#media-queries-1{background-color:#0f0}}@media screen and (max-width: 2000px){#media-queries-2{background-color:#0f0}} \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/subsilver.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/subsilver.css deleted file mode 100644 index 79d34ec..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/subsilver.css +++ /dev/null @@ -1,434 +0,0 @@ -/* Based on the original Style Sheet for the fisubsilver v2 Theme for phpBB version 2+ -Edited by Daz - http://www.forumimages.com - last updated 26-06-03 */ -/* The content of the posts (body of text) */ -/* General page style */ - - - - /* begin suggest post */ - .float-l{ - float: left; - } - - .form-suggest{ - height:200px; - background:#DEE2D0; - vertical-align: top; - } - - .form-input input{ - font-size: 10px; - } - - .hide{ - display:none; - } - - .form-input textarea{ - font-size: 11px; - width: 350px; - } - - .form-label{ - font-size: 10px; - font-weight: bold; - line-height: 25px; - padding-right: 10px; - text-align: right; - width: 100px; - color: #39738F; - } - - .font-9{ - font-size: 9px; - } - - .form-topic{ - font-weight:bold; - - } - - .form-error{ - color:red; - } - - .inline{ - display: inline; - } - - .space-10{ - clear: both; - font-size: 10px; - height: 10px; - line-height: 10px; - } - - .suggest-success{ - color:green; - padding-left:10px; - font-size:11px; - font-weight:bold; - } - - .top{ - vertical-align: top; - } - /* end suggest post */ - -table td{ - padding:3px; -} - -a:link,a:active,a:visited,a.postlink{ - color: #006699; - text-decoration: none; -} - -a:hover{ - color: #DD6900; -} - -a.admin:hover,a.mod:hover{ - color: #DD6900; -} - -a.but,a.but:hover,a.but:visited{ - color: #000000; - text-decoration: none; -} - -a.topictitle:visited{ - color: #5493B4; -} - -a.topictitle:hover{ - color: #DD6900; -} - - - -body{ - color: #000000; - font: 11px Verdana,Arial,Helvetica,sans-serif; - margin: 0 10px 10px 10px; - padding: 0; - overflow:auto; -} - -/* General font families for common tags */ -font,th,td,p{ - font: 12px Verdana,Arial,Helvetica,sans-serif; -} - -/* Form elements */ -form{ - display: inline; -} - -hr{ - border: 0px solid #FFFFFF; - border-top-width: 1px; - height: 0px; -} - -/* Gets rid of the need for border="0" on hyperlinked images */ -img{ - border: 0 solid; -} - -input{ - font: 11px Verdana,Arial,Helvetica,sans-serif; -} - -input.button,input.liteoption,.fakebut{ - background: #FAFAFA; - border: 1px solid #000000; - font-size: 11px; -} - -input.catbutton{ - background: #FAFAFA; - border: 1px solid #000000; - font-size: 10px; -} - -input.mainoption{ - background: #FAFAFA; - border: 1px solid #000000; - font-size: 11px; - font-weight: bold; -} - -input.post,textarea.post{ - background: #FFFFFF; - border: 1px solid #000000; - font: 11px Verdana,Arial,Helvetica,sans-serif; - padding-bottom: 2px; - padding-left: 2px; -} - -select{ - background: #FFFFFF; - font: 11px Verdana,Arial,Helvetica,sans-serif; -} - -table{ - text-align: left; -} - -td{ - vertical-align: middle; -} - -/* Category gradients*/ -td.cat{ - background-color: #C2C6BA; - font-weight: bold; - height: 20px; - letter-spacing: 1px; - text-indent: 4px; -} - -td.genmed,.genmed{ - font-size: 11px; -} - -/* This is for the table cell above the Topics,Post & Last posts on the index.php */ -td.rowpic{ - background: #C2C6BA; -} - -td.spacerow{ - background: #E5E6E2; -} - -/* Table Header cells */ -th{ - background-color: #FADD31; - background-image: url(images/cellpic3.gif); - background-repeat: repeat-x; - color: #68685E; - font-size: 11px; - font-weight: bold; - line-height:16px; - height: 16px; - padding-left: 8px; - padding-right: 8px; - text-align: center; - white-space: nowrap; -} - -/* Admin & Moderator Colours MODification */ -.admin,.mod{ - font-size: 11px; - font-weight: bold; -} - -.admin,a.admin,a.admin:visited{ - color: #FFA34F; -} - -/* This is the border line & background colour round the entire page */ -.bodyline{ - background: #FFFFFF; - border: 1px solid #98AAB1; -} - -.center{ - text-align: center; -} - -/* Code blocks */ -.code{ - background: #FAFAFA; - border: 1px solid #D1D7DC; - color: #006600; - font: 12px Courier,"Courier New",sans-serif; - padding: 5px; -} - -/* This is for the error messages that pop up */ -.errorline{ - background: #E5E6E2; - border: 1px solid #8F8B8B; - color:#D92A2A; -} - -.explaintitle{ - color: #5C81B1; - font-size: 11px; - font-weight: bold; -} - -/* This is the outline round the main forum tables */ -.forumline{ - background: #FFFFFF; -} - -/* General text */ -.gensmall{ - font-size: 10px; -} - -.h1-font{ - color: #006699; - display: inline; - font: bold 13px Verdana, Arial, Helvetica, sans-serif; - margin: 0; - text-decoration: none; -} - -.h2-font{ - display: inline; - font-family: Verdana, Arial, Helvetica, sans-serif; - font-size: 11px; -} - -.height1{ - height: 1px; -} - -.height22{ - height: 22px; -} - -.height25{ - height: 25px; -} - -.height28{ - height: 28px; -} - -.height30{ - height: 30px; -} - -.height40{ - height: 40px; -} - -/* This is the line in the posting page which shows the rollover -help line. Colour value in row2 */ -.helpline{ - border: 0 solid; - font-size: 10px; -} - -.imgfolder{ - margin: 1px 4px 1px 4px; -} - -.imgspace{ - margin-left: 1px; - margin-right: 2px; -} - -/* Specify the space around images */ -.imgtopic,.imgicon{ - margin-left: 3px; -} - -.left{ - text-align: left; -} - -/* The largest text used in the index page title and toptic title etc. */ -.maintitle,h1,h2{ - color: #5C81B1; - font: bold 20px/120% "Trebuchet MS",Verdana,Arial,Helvetica,sans-serif; - text-decoration: none; -} - -.maxwidth{ - width: 100%; -} - -.mod,a.mod,a.mod:visited{ - color: #006600; -} - -/* Name of poster in viewmsg.php and viewtopic.php and other places */ -.name{ - font-size: 11px; - font-weight: bold; -} - -/* Used for the navigation text,(Page 1,2,3 etc) and the navigation bar when in a forum */ -.nav{ - font-size: 11px; - font-weight: bold; -} - -.nowrap{ - white-space: nowrap; -} - -.postbody{ - font-size: 12px; - line-height: 125%; -} - -.postbody a{ - text-decoration: underline; -} - -/* Location,number of posts,post date etc */ -.postdetails{ - color: #00396A; - font-size: 10px; -} - -/* Quote blocks */ -.quote{ - background: #F3F3EF; - border: 1px solid #C2C6BA; - color: #006699; - font-size: 11px; - line-height: 125%; -} - -.right{ - text-align: right; -} - -/* Main table cell colours and backgrounds */ -.row1{ - background: #F0F0EB; -} - -.row2,.helpline{ - background: #E5E6E2; -} - -.row3{ - background: #DBDBD4; -} - -.subtitle,h2{ - font: bold 18px/180% "Trebuchet MS",Verdana,Arial,Helvetica,sans-serif; - text-decoration: none; -} - -/* titles for the topics:could specify viewed link colour too */ -.topictitle { - color: #000000; - font-size: 11px; - font-weight: bold; -} - -.underline{ - text-decoration: underline; -} - -.top{ -vertical-align:top; -} - -.image-hspace{ -margin-right:3px; -} - -.clear{ -clear:both; -} \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/subsilver.min.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/subsilver.min.css deleted file mode 100644 index f59b15a..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/subsilver.min.css +++ /dev/null @@ -1,18 +0,0 @@ -.float-l{float:left}.form-suggest{height:200px;background:#DEE2D0;vertical-align:top}.form-input -input{font-size:10px}.hide{display:none}.form-input -textarea{font-size:11px;width:350px}.form-label{font-size:10px;font-weight:bold;line-height:25px;padding-right:10px;text-align:right;width:100px;color:#39738F}.font-9{font-size:9px}.form-topic{font-weight:bold}.form-error{color:red}.inline{display:inline}.space-10{clear:both;font-size:10px;height:10px;line-height:10px}.suggest-success{color:green;padding-left:10px;font-size:11px;font-weight:bold}.top{vertical-align:top}table -td{padding:3px}a:link,a:active,a:visited,a.postlink{color:#069;text-decoration:none}a:hover{color:#DD6900}a.admin:hover,a.mod:hover{color:#DD6900}a.but,a.but:hover,a.but:visited{color:#000;text-decoration:none}a.topictitle:visited{color:#5493B4}a.topictitle:hover{color:#DD6900}body{color:#000;font:11px Verdana,Arial,Helvetica,sans-serif;margin:0 -10px 10px 10px;padding:0;overflow:auto}font,th,td,p{font:12px Verdana,Arial,Helvetica,sans-serif}form{display:inline}hr{border:0px -solid #FFF;border-top-width:1px;height:0px}img{border:0 -solid}input{font:11px Verdana,Arial,Helvetica,sans-serif}input.button,input.liteoption,.fakebut{background:#FAFAFA;border:1px -solid #000;font-size:11px}input.catbutton{background:#FAFAFA;border:1px -solid #000;font-size:10px}input.mainoption{background:#FAFAFA;border:1px -solid #000;font-size:11px;font-weight:bold}input.post,textarea.post{background:#FFF;border:1px -solid #000;font:11px Verdana,Arial,Helvetica,sans-serif;padding-bottom:2px;padding-left:2px}select{background:#FFF;font:11px Verdana,Arial,Helvetica,sans-serif}table{text-align:left}td{vertical-align:middle}td.cat{background-color:#C2C6BA;font-weight:bold;height:20px;letter-spacing:1px;text-indent:4px}td.genmed,.genmed{font-size:11px}td.rowpic{background:#C2C6BA}td.spacerow{background:#E5E6E2}th{background-color:#FADD31;background-image:url(images/cellpic3.gif);background-repeat:repeat-x;color:#68685E;font-size:11px;font-weight:bold;line-height:16px;height:16px;padding-left:8px;padding-right:8px;text-align:center;white-space:nowrap}.admin,.mod{font-size:11px;font-weight:bold}.admin,a.admin,a.admin:visited{color:#FFA34F}.bodyline{background:#FFF;border:1px -solid #98AAB1}.center{text-align:center}.code{background:#FAFAFA;border:1px -solid #D1D7DC;color:#060;font:12px Courier,"Courier New",sans-serif;padding:5px}.errorline{background:#E5E6E2;border:1px -solid #8F8B8B;color:#D92A2A}.explaintitle{color:#5C81B1;font-size:11px;font-weight:bold}.forumline{background:#FFF}.gensmall{font-size:10px}.h1-font{color:#069;display:inline;font:bold 13px Verdana,Arial,Helvetica,sans-serif;margin:0;text-decoration:none}.h2-font{display:inline;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px}.height1{height:1px}.height22{height:22px}.height25{height:25px}.height28{height:28px}.height30{height:30px}.height40{height:40px}.helpline{border:0 -solid;font-size:10px}.imgfolder{margin:1px -4px 1px 4px}.imgspace{margin-left:1px;margin-right:2px}.imgtopic,.imgicon{margin-left:3px}.left{text-align:left}.maintitle,h1,h2{color:#5C81B1;font:bold 20px/120% "Trebuchet MS",Verdana,Arial,Helvetica,sans-serif;text-decoration:none}.maxwidth{width:100%}.mod,a.mod,a.mod:visited{color:#060}.name{font-size:11px;font-weight:bold}.nav{font-size:11px;font-weight:bold}.nowrap{white-space:nowrap}.postbody{font-size:12px;line-height:125%}.postbody -a{text-decoration:underline}.postdetails{color:#00396A;font-size:10px}.quote{background:#F3F3EF;border:1px -solid #C2C6BA;color:#069;font-size:11px;line-height:125%}.right{text-align:right}.row1{background:#F0F0EB}.row2,.helpline{background:#E5E6E2}.row3{background:#DBDBD4}.subtitle,h2{font:bold 18px/180% "Trebuchet MS",Verdana,Arial,Helvetica,sans-serif;text-decoration:none}.topictitle{color:#000;font-size:11px;font-weight:bold}.underline{text-decoration:underline}.top{vertical-align:top}.image-hspace{margin-right:3px}.clear{clear:both} \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/unusual_strings.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/unusual_strings.css deleted file mode 100644 index 69fa756..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/unusual_strings.css +++ /dev/null @@ -1,10 +0,0 @@ -/* test unusual, but valid strings in CSS */ - -foo[attr="multiple spaces"] { - content: "Hello World!"; -} - -foo[attr="Hel\ -lo"] { - content: " \"World\""; -} diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/unusual_strings.min.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/unusual_strings.min.css deleted file mode 100644 index 4b7d97e..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/unusual_strings.min.css +++ /dev/null @@ -1,2 +0,0 @@ -foo[attr="multiple spaces"]{content:"Hello World!"}foo[attr="Hel\ -lo"]{content:" \"World\""} \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/vladmirated.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/vladmirated.css deleted file mode 100644 index 819835e..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/vladmirated.css +++ /dev/null @@ -1,658 +0,0 @@ -/* from http://www.vladimirated.com/web-development-minify-css-using-php-and-cssmin-class */ - - #comments_inviter #close_me { - clear: both; - text-align: center; - border-top: 1px solid #eeeeee; - padding-top: 10px; - } - - #comments_inviter #close_me span { - color: #108eed; - cursor: pointer; - font-weight: bold; - } - - #comments_inviter img { - float: left; - margin-right: 3px; - margin-bottom: 10px; - } - - #comments_inviter { - width: 200px; - background-color: #FFFFFF; - border: 4px solid #eeeeee; - font-size: 10px; - font-family: verdana; - padding: 10px; - color: #333333; - } - - .one_com { - background-color: #FAFAFA; - padding: 10px; - margin-bottom: 20px; - border: 1px solid #EEEEEE; - } - - .one_com .com_says, .one_com .com_det { - text-transform: lowercase; - color: #333333; - padding: 0px; - font-family: verdana; - margin: 0px; - font-size: 13px; - font-weight: bold; - } - - .flvPlayer { - text-align: center; - border: 5px solid #dddddd; - width: 320px; - } - - .one_com .com_det { - font-size: 10px; - font-weight: normal; - margin-bottom: 20px; - padding-bottom: 10px; - border-bottom: 8px solid #eeeeee; - } - - .one_com .com_det a { - text-decoration: none; - } - - .one_com .com_txt { - background-color: #ffffff; - margin-bottom: 10px; - border-bottom: 2px solid #eeeeee - } - - .one_com .com_txt p { - font-family: verdana; - font-size: 13px; - color: #777777; - margin: 0px; - padding: 5px; - padding-bottom: 10px; - text-transform: lowercase; - } - - .one_com .com_says a { - color: #333333; - } - - .one_com .com_det a { - color: #333333; - } - - .post_box .related_posts { - - } - - .post_box .related_posts p { - padding: 0px; - margin: 0px; - padding-bottom: 20px; - padding-left: 35px; - font-family: verdana; - - } - - .post_box .related_posts a { - color: #108eed; - } - - .post_nav_2 p { - - text-align: center; - color: #cccccc; - font-family: verdana; - } - - .post_box .related_posts h3, #comments_box #respond, .comments_posted h3 { - padding: 0px; - margin: 0px; - font-size: 18px; - color: #FF8000; - padding-top: 30px; - margin-bottom: 20px; - width: 300px; - border-bottom: 5px solid #e0e0e0; - } - - .comments_posted { - - margin-bottom: 50px; - - } - - .comments_posted h3 { - padding: 0px; - margin: 0px; - margin-bottom: 20px; - - } - - .cmt_txtarea { - width: 300px; - height: 100px; - - } - - #comments_box #respond { - - padding-top: 0px; - margin-bottom: 0px; - - } - - .pagetitle { - color: #65DA33; - text-align: center; - } - - #searchform { - padding: 0px; - margin: 0px; - } - - .si { - background-color: #FFFFEE; - border: 1px solid #e0e0e0; - } - - #rightcol #r_news, #rightcol #linksbro, #rightcol #quick_tags { - margin-top: 30px; - padding-bottom: 10px; - } - - #post_nav p { - padding: 0px; - margin: 0px; - padding-bottom: 5px; - } - - #post_nav { - text-align: left; - padding-bottom: 15px; - } - - #post_nav a, .post_nav_2 p a { - text-decoration: none; - font-family: Verdana; - font-size: 12px; - color: #108eed; - } - - #post_nav a:hover, .post_nav_2 p a:hover { - text-decoration: underline; - color: #FF8000; - } - - #rightcol #about { - padding-bottom: 10px; - } - - #rightcol #r_news input { - color: #333333; - font-size: 12px; - } - - #header { - height: 200px; - width: 100%; - background-image: url('images/header_bg.jpg'); - background-repeat: x-repeat; - } - - #header img { - - float: right; - margin-right: -3px; - z-index: 100; - - } - - .tags { - text-transform: lowercase; - color: #333333; - font-family: arial; - font-size: 12px; - border-top: 2px dotted #EEEEEE; - width: 300px; - padding-top: 20px; - padding-bottom: 0px; - margin-top: 0px; - padding-left: 20px; - padding-right: 20px; - } - - .tags a { - color: #108eed; - } - - .tags p { - text-align: left; - margin: 0px; - padding: 0px; - } - - blockquote strong { - font-family: verdana; - display: block; - margin-top: 10px; - color: #FF0000; - font-style: italic; - text-align: right; - } - - blockquote { - margin: 0px; - background-color: #eeeeee; - border: 2px solid #dddddd; - padding: 24px; - padding-top: 10px; - padding-left: 60px; - padding-bottom: 10px; - font-size: 13px; - color: #333333; - margin-bottom: 30px; - margin-top: 10px; - } - - - html>body #header img { margin-right: 0px; } - - #subscribe h3 { - color: #ff0000; - margin-top: 30px; - padding: 20px; - } - - .post_actions a{ - color: #108eed; - } - - .post_actions { - border-top: 4px solid #DDDDDD; - border-bottom: 1px solid #EEEEEE; - text-align: center; - background-color: #FFFFDd; - color: #dddddd; - white-space: no-wrap; - padding-left: 20px; - padding-bottom: 5px; - text-transform: capitalize; - } - - #subscribe td { - color: #333333; - font-size: 12px; - text-transform: lowercase; - } - - #subscribe input { - font-size: 13px; - color: #333333; - } - - .post_content { - font-size: 13px; - margin-top: 10px; - padding-bottom: 10px; - text-align: justify; - font-family: verdana; - } - - .post_content p { - margin: 0px; - padding: 0px; - padding-bottom: 20px; - line-height: 20px; - } - - #header h1 { - z-index: 200; - margin: 0px; - position: absolute; - float: left; - text-transform: lowercase; - padding: 0px; - font-size: 45px; - margin-top: 70px; - margin-left: 40px; - - } - - #header h1 a { - white-space: no-wrap; - text-decoration: none; - color: #FAFAFA; - display: block - } - - #header h1 a:hover { - color: #FAFAFA; - border-bottom: 3px dotted #FAFAFA; - } - - html>body #header h1 { margin-left: 60px; } - - body { - margin: 0px; - padding: 0px; - height: 100%; - width: 100%; - font-family: 'Lucida Sans Unicode', 'Lucida Grande', Sans-Serif, Verdana, Arial; - font-size: 12px; - } - - #leftcol { - float: left; - width: 200px; - margin-left: 0px; - margin-top: 17px; - color: #000; - padding: 3px; - height: 100%; - } - - #leftcol .box_head h3 { - text-transform: uppercase; - padding: 0px; - margin: 0px; - font-family: georgia; - font-size: 18px; - color: #dddddd; - border-top: 4px solid #dddddd; - border-bottom: 4px solid #cccccc; - padding-left: 10px; - padding-top: 10px; - padding-bottom: 10px; - background-image: url('images/stripesbg.png'); - margin-bottom: 10px; - } - - #leftcol .box_head input { - text-transform: lowercase; - color: #333333; - } - - #leftcol .box_head { - margin-left: 7px; - background-color: #ffefd4; - border-bottom: 2px solid #eeeeee; - padding-bottom: 20px; - margin-bottom: 30px; - } - - #leftcol .box_head p a { - color: #0a2d4d; - display: block; - text-decoration: none; - border-bottom: 3px solid #fefefe; - padding-top: 20px; - text-transform: lowercase; - padding-bottom: 20px; - padding-left: 5px; - padding-right: 5px; - } - - #leftcol .box_head p a:hover { - background-color: #fafafa; - border-bottom: 3px solid #eeeeee; - color: #000000; - } - - #leftcol .box_head p { - text-align: left; - margin: 0px; - width: 170px; - padding-bottom: 0px; - padding-top: 0px; - font-size: 11px; - } - - #rightcol { - position: absolute; - left: 77%; - top: 278px; - border: 3px solid #eeeeee; - width: 200px; - z-index: 3; - color: #333333; - padding: 10px; - text-transform: lowercase; - - } - - #rightcol p { - padding: 0px; - marging: 0px; - text-align: justify; - } - - #rightcol #about img, #rightcol #linksbro img { - border: 5px solid #eeeeee; - } - - #rightcol #about h3, #rightcol #r_news h3, #rightcol #linksbro h3, #rightcol #quick_tags h3 { - background-color: #fafafa; - border: 1px dotted #e0e0e0; - font-size: 14px; - color: #104bbc; - padding: 5px; - padding-top: 10px; - font-family: Arial; - padding-bottom: 10px; - } - - #rightcol #about p a, #rightcol #r_news p a, #rightcol #linksbro p a { - color: #108eed; - } - - #rightcol #about p, #rightcol #r_news p, #rightcol #linksbro p { - font-size: 12px; - text-align: left; - } - - #content_warp { - margin: 20px 25% 0 215px; - padding: 3px; - color: #000; - background-color: #ededed; - } - - #content { - margin: 5px; - background-color: #FFFFFF; - padding: 10px; - } - - - #footer { - width: 99%; - margin-top: 30px; - height: 98px; - background-color: #101b1d; - } - - #footer td a { - color: #FF8000; - } - - #footer td a img { - border: 2px solid #108eed; - } - - #footer td p { - font-family: Verdana; - font-size: 10px; - color: #c0c0c0; - padding: 0px; - margin: 0px; - text-align: center; - padding-bottom: 10px; - } - - .s_offer { - color: #65DA33; - font-size: 20px; - font-weight: bold; - font-style: normal; - } - - .post_box { - text-transform: lowercase; - margin-bottom: 40px; - } - - #newsletter_box { - text-transform: lowercase; - margin-bottom: 10px; - margin-top: 30px; - font-style: normal; - background-color: #ffffff; - border: 5px solid #dddddd; - } - - #newsletter_head { - color: #EEEEEE; - font-family: Georgia; - background-image: url('images/stripesbg.png'); - padding: 10px; - padding-left: 30px; - border-bottom: 5px solid #dddddd; - } - - #newsletter_body { - color: #333333; - font-family: Verdana; - text-align: justify; - background-color: #FFFFFF; - padding: 10px; - font-size: 13px; - } - - .s_offer { - color: #65DA33; - font-size: 26px; - font-weight: bold; - font-style: normal; - } - - .post_title a { - color: #EEEEEE; - text-decoration: none; - } - - .post_title a:hover { - color: #c0c0c0; - } - - .post_title { - background-image: url('images/stripe_post.png'); - text-transform: uppercase; - font-size: 18px; - font-family: georgia; - padding: 10px; - border-top: 4px solid #c0c0c0; - margin: 0px; - border-bottom: 2px solid #ffffdd; - } - - .post_det { - text-transform: none; - margin: 0px; - border-top: 1px solid #f0f0f0; - padding: 0px; - padding-top: 5px; - color: #999999; - font-size: 10px; - font-family: verdana; - margin-bottom: 20px; - background-color: #eeeeee; - padding-bottom: 5px; - padding-left: 10px; - text-align: left; - border-bottom: 2px solid #dddddd; - } - - .post_det a { - color: #999999; - text-decoration: none; - } - - - .subtle { - text-transform: lowercase; - font-size: 10px; - font-family: verdana; - color: #108eed; - text-align: justify; - } - - #top_menu #navlist, #top_menu #navlist li { - padding:0px; - margin: 0px; - padding-top: 14px; - text-transform: lowercase; - padding-bottom: 17px; - padding-left: 30px; - border-left: 1px solid #65cdef; - } - - #top_menu #navlist, #top_menu #navlist li #first { - - border-left: 0px; - - } - - #top_menu #navlist { - padding-left: 30px; - background-color: #1dabd9; - border-top: 5px solid #0e96c3; - border-bottom: 5px solid #0e96c3; - } - - #top_menu #navlist li { - color: #444444; - font-size: 10px; - display: inline; - list-style-type: none; - padding-right: 30px; - } - - #top_menu #navlist li a { - text-decoration: none; - font-family: Verdana; - color: #fafafa; - font-size: 12px; - font-weight: bold; - } - - #top_menu #navlist li a:hover { - color: #333333; - } - - .post_content a { - color: #108eed; - } - - ul#tagcloud { padding:0; margin:0; text-align:center; list-style:none; } - ul#tagcloud li { display:inline; font-size:70%; color:#ccc; background: none; padding: 0;} - ul#tagcloud li a, ul#tagcloud li a:link { text-decoration:none; } - ul#tagcloud li a:hover { text-decoration:underline; } - ul#tagcloud li.t1 a { color:#797979; font-size: 120%; } - ul#tagcloud li.t2 a { color:#6d6d6d; font-size: 160%; } - ul#tagcloud li.t3 a { color:#616161; font-size: 190%; } - ul#tagcloud li.t4 a { color:#555555; font-size: 210%; } - ul#tagcloud li.t5 a { color:#484848; font-size: 230%; } - ul#tagcloud li.t6 a { color:#3c3c3c; font-size: 250%; } - ul#tagcloud li.t7 a { color:#303030; font-size: 270%; } - ul#tagcloud li.t8 a { color:#242424; font-size: 290%; } - ul#tagcloud li.t9 a { color:#181818; font-size: 310%; } - ul#tagcloud li.t10 a { color:#0c0c0c; font-size: 330%; } \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/vladmirated.min.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/vladmirated.min.css deleted file mode 100644 index a59e500..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css/vladmirated.min.css +++ /dev/null @@ -1,79 +0,0 @@ -#comments_inviter -#close_me{clear:both;text-align:center;border-top:1px solid #eee;padding-top:10px}#comments_inviter #close_me -span{color:#108eed;cursor:pointer;font-weight:bold}#comments_inviter -img{float:left;margin-right:3px;margin-bottom:10px}#comments_inviter{width:200px;background-color:#FFF;border:4px -solid #eee;font-size:10px;font-family:verdana;padding:10px;color:#333}.one_com{background-color:#FAFAFA;padding:10px;margin-bottom:20px;border:1px -solid #EEE}.one_com .com_says, .one_com -.com_det{text-transform:lowercase;color:#333;padding:0px;font-family:verdana;margin:0px;font-size:13px;font-weight:bold}.flvPlayer{text-align:center;border:5px -solid #ddd;width:320px}.one_com -.com_det{font-size:10px;font-weight:normal;margin-bottom:20px;padding-bottom:10px;border-bottom:8px solid #eee}.one_com .com_det -a{text-decoration:none}.one_com -.com_txt{background-color:#fff;margin-bottom:10px;border-bottom:2px solid #eee}.one_com .com_txt -p{font-family:verdana;font-size:13px;color:#777;margin:0px;padding:5px;padding-bottom:10px;text-transform:lowercase}.one_com .com_says -a{color:#333}.one_com .com_det -a{color:#333}.post_box -.related_posts{}.post_box .related_posts -p{padding:0px;margin:0px;padding-bottom:20px;padding-left:35px;font-family:verdana}.post_box .related_posts -a{color:#108eed}.post_nav_2 -p{text-align:center;color:#ccc;font-family:verdana}.post_box .related_posts h3, #comments_box #respond, .comments_posted -h3{padding:0px;margin:0px;font-size:18px;color:#FF8000;padding-top:30px;margin-bottom:20px;width:300px;border-bottom:5px solid #e0e0e0}.comments_posted{margin-bottom:50px}.comments_posted -h3{padding:0px;margin:0px;margin-bottom:20px}.cmt_txtarea{width:300px;height:100px}#comments_box -#respond{padding-top:0px;margin-bottom:0px}.pagetitle{color:#65DA33;text-align:center}#searchform{padding:0px;margin:0px}.si{background-color:#FFE;border:1px -solid #e0e0e0}#rightcol #r_news, #rightcol #linksbro, #rightcol -#quick_tags{margin-top:30px;padding-bottom:10px}#post_nav -p{padding:0px;margin:0px;padding-bottom:5px}#post_nav{text-align:left;padding-bottom:15px}#post_nav a, .post_nav_2 p -a{text-decoration:none;font-family:Verdana;font-size:12px;color:#108eed}#post_nav a:hover, .post_nav_2 p a:hover{text-decoration:underline;color:#FF8000}#rightcol -#about{padding-bottom:10px}#rightcol #r_news -input{color:#333;font-size:12px}#header{height:200px;width:100%;background-image:url('images/header_bg.jpg');background-repeat:x-repeat}#header -img{float:right;margin-right:-3px;z-index:100}.tags{text-transform:lowercase;color:#333;font-family:arial;font-size:12px;border-top:2px dotted #EEE;width:300px;padding-top:20px;padding-bottom:0px;margin-top:0px;padding-left:20px;padding-right:20px}.tags -a{color:#108eed}.tags -p{text-align:left;margin:0px;padding:0px}blockquote -strong{font-family:verdana;display:block;margin-top:10px;color:#F00;font-style:italic;text-align:right}blockquote{margin:0px;background-color:#eee;border:2px -solid #ddd;padding:24px;padding-top:10px;padding-left:60px;padding-bottom:10px;font-size:13px;color:#333;margin-bottom:30px;margin-top:10px}html>body #header -img{margin-right:0px}#subscribe -h3{color:#f00;margin-top:30px;padding:20px}.post_actions -a{color:#108eed}.post_actions{border-top:4px solid #DDD;border-bottom:1px solid #EEE;text-align:center;background-color:#FFD;color:#ddd;white-space:no-wrap;padding-left:20px;padding-bottom:5px;text-transform:capitalize}#subscribe -td{color:#333;font-size:12px;text-transform:lowercase}#subscribe -input{font-size:13px;color:#333}.post_content{font-size:13px;margin-top:10px;padding-bottom:10px;text-align:justify;font-family:verdana}.post_content -p{margin:0px;padding:0px;padding-bottom:20px;line-height:20px}#header -h1{z-index:200;margin:0px;position:absolute;float:left;text-transform:lowercase;padding:0px;font-size:45px;margin-top:70px;margin-left:40px}#header h1 -a{white-space:no-wrap;text-decoration:none;color:#FAFAFA;display:block}#header h1 a:hover{color:#FAFAFA;border-bottom:3px dotted #FAFAFA}html>body #header -h1{margin-left:60px}body{margin:0px;padding:0px;height:100%;width:100%;font-family:'Lucida Sans Unicode','Lucida Grande',Sans-Serif,Verdana,Arial;font-size:12px}#leftcol{float:left;width:200px;margin-left:0px;margin-top:17px;color:#000;padding:3px;height:100%}#leftcol .box_head -h3{text-transform:uppercase;padding:0px;margin:0px;font-family:georgia;font-size:18px;color:#ddd;border-top:4px solid #ddd;border-bottom:4px solid #ccc;padding-left:10px;padding-top:10px;padding-bottom:10px;background-image:url('images/stripesbg.png');margin-bottom:10px}#leftcol .box_head -input{text-transform:lowercase;color:#333}#leftcol -.box_head{margin-left:7px;background-color:#ffefd4;border-bottom:2px solid #eee;padding-bottom:20px;margin-bottom:30px}#leftcol .box_head p -a{color:#0a2d4d;display:block;text-decoration:none;border-bottom:3px solid #fefefe;padding-top:20px;text-transform:lowercase;padding-bottom:20px;padding-left:5px;padding-right:5px}#leftcol .box_head p a:hover{background-color:#fafafa;border-bottom:3px solid #eee;color:#000}#leftcol .box_head -p{text-align:left;margin:0px;width:170px;padding-bottom:0px;padding-top:0px;font-size:11px}#rightcol{position:absolute;left:77%;top:278px;border:3px -solid #eee;width:200px;z-index:3;color:#333;padding:10px;text-transform:lowercase}#rightcol -p{padding:0px;marging:0px;text-align:justify}#rightcol #about img, #rightcol #linksbro -img{border:5px -solid #eee}#rightcol #about h3, #rightcol #r_news h3, #rightcol #linksbro h3, #rightcol #quick_tags -h3{background-color:#fafafa;border:1px -dotted #e0e0e0;font-size:14px;color:#104bbc;padding:5px;padding-top:10px;font-family:Arial;padding-bottom:10px}#rightcol #about p a, #rightcol #r_news p a, #rightcol #linksbro p -a{color:#108eed}#rightcol #about p, #rightcol #r_news p, #rightcol #linksbro -p{font-size:12px;text-align:left}#content_warp{margin:20px -25% 0 215px;padding:3px;color:#000;background-color:#ededed}#content{margin:5px;background-color:#FFF;padding:10px}#footer{width:99%;margin-top:30px;height:98px;background-color:#101b1d}#footer td -a{color:#FF8000}#footer td a -img{border:2px -solid #108eed}#footer td -p{font-family:Verdana;font-size:10px;color:#c0c0c0;padding:0px;margin:0px;text-align:center;padding-bottom:10px}.s_offer{color:#65DA33;font-size:20px;font-weight:bold;font-style:normal}.post_box{text-transform:lowercase;margin-bottom:40px}#newsletter_box{text-transform:lowercase;margin-bottom:10px;margin-top:30px;font-style:normal;background-color:#fff;border:5px -solid #ddd}#newsletter_head{color:#EEE;font-family:Georgia;background-image:url('images/stripesbg.png');padding:10px;padding-left:30px;border-bottom:5px solid #ddd}#newsletter_body{color:#333;font-family:Verdana;text-align:justify;background-color:#FFF;padding:10px;font-size:13px}.s_offer{color:#65DA33;font-size:26px;font-weight:bold;font-style:normal}.post_title -a{color:#EEE;text-decoration:none}.post_title a:hover{color:#c0c0c0}.post_title{background-image:url('images/stripe_post.png');text-transform:uppercase;font-size:18px;font-family:georgia;padding:10px;border-top:4px solid #c0c0c0;margin:0px;border-bottom:2px solid #ffd}.post_det{text-transform:none;margin:0px;border-top:1px solid #f0f0f0;padding:0px;padding-top:5px;color:#999;font-size:10px;font-family:verdana;margin-bottom:20px;background-color:#eee;padding-bottom:5px;padding-left:10px;text-align:left;border-bottom:2px solid #ddd}.post_det -a{color:#999;text-decoration:none}.subtle{text-transform:lowercase;font-size:10px;font-family:verdana;color:#108eed;text-align:justify}#top_menu #navlist, #top_menu #navlist -li{padding:0px;margin:0px;padding-top:14px;text-transform:lowercase;padding-bottom:17px;padding-left:30px;border-left:1px solid #65cdef}#top_menu #navlist, #top_menu #navlist li -#first{border-left:0px}#top_menu -#navlist{padding-left:30px;background-color:#1dabd9;border-top:5px solid #0e96c3;border-bottom:5px solid #0e96c3}#top_menu #navlist -li{color:#444;font-size:10px;display:inline;list-style-type:none;padding-right:30px}#top_menu #navlist li -a{text-decoration:none;font-family:Verdana;color:#fafafa;font-size:12px;font-weight:bold}#top_menu #navlist li a:hover{color:#333}.post_content -a{color:#108eed}ul#tagcloud{padding:0;margin:0;text-align:center;list-style:none}ul#tagcloud -li{display:inline;font-size:70%;color:#ccc;background:none;padding:0}ul#tagcloud li a, ul#tagcloud li a:link{text-decoration:none}ul#tagcloud li a:hover{text-decoration:underline}ul#tagcloud li.t1 -a{color:#797979;font-size:120%}ul#tagcloud li.t2 -a{color:#6d6d6d;font-size:160%}ul#tagcloud li.t3 -a{color:#616161;font-size:190%}ul#tagcloud li.t4 -a{color:#555;font-size:210%}ul#tagcloud li.t5 -a{color:#484848;font-size:230%}ul#tagcloud li.t6 -a{color:#3c3c3c;font-size:250%}ul#tagcloud li.t7 -a{color:#303030;font-size:270%}ul#tagcloud li.t8 -a{color:#242424;font-size:290%}ul#tagcloud li.t9 -a{color:#181818;font-size:310%}ul#tagcloud li.t10 -a{color:#0c0c0c;font-size:330%} \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css_uriRewriter/exp.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css_uriRewriter/exp.css deleted file mode 100644 index 22c109f..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css_uriRewriter/exp.css +++ /dev/null @@ -1,17 +0,0 @@ -@import "/_test_files/css_uriRewriter/foo.css"; -@import '/_test_files/css_uriRewriter/bar/foo.css' print; -@import '/_test_files/bar/foo.css' print; -@import '/foo.css' print; -@import '/css/foo.css'; /* abs, should not alter */ -@import 'http://foo.com/css/foo.css'; /* scheme, should not alter */ -@import url(/_test_files/foo.css) tv, projection; -@import url("/css/foo.css"); /* abs, should not alter */ -@import url(/css2/foo.css); /* abs, should not alter */ -@import url(foo:bar); /* scheme, should not alter */ -foo {background:url('/_test_files/css_uriRewriter/bar/foo.png')} -foo {background:url('http://foo.com/css/foo.css');} /* scheme, should not alter */ -foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */ -foo {background:url(foo:bar);} /* scheme, should not alter */ -foo {background:url("/_test_files/css_uriRewriter/foo bar.jpg");} -@import url('/_test_files/css_uriRewriter/foo bar.css'); -@import "/_test_files/css_uriRewriter/foo bar.css"; diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css_uriRewriter/exp_prepend.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css_uriRewriter/exp_prepend.css deleted file mode 100644 index ce31df1..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css_uriRewriter/exp_prepend.css +++ /dev/null @@ -1,17 +0,0 @@ -@import "http://cnd.com/A/B/foo.css"; -@import 'http://cnd.com/A/B/bar/foo.css' print; -@import 'http://cnd.com/A/bar/foo.css' print; -@import 'http://cnd.com/foo.css' print; -@import '/css/foo.css'; /* abs, should not alter */ -@import 'http://foo.com/css/foo.css'; /* scheme, should not alter */ -@import url(http://cnd.com/A/foo.css) tv, projection; -@import url("/css/foo.css"); /* abs, should not alter */ -@import url(/css2/foo.css); /* abs, should not alter */ -@import url(foo:bar); /* scheme, should not alter */ -foo {background:url('http://cnd.com/A/B/bar/foo.png')} -foo {background:url('http://foo.com/css/foo.css');} /* scheme, should not alter */ -foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */ -foo {background:url(foo:bar);} /* scheme, should not alter */ -foo {background:url("http://cnd.com/A/B/foo bar.jpg");} -@import url('http://cnd.com/A/B/foo bar.css'); -@import "http://cnd.com/A/B/foo bar.css"; diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css_uriRewriter/exp_prepend2.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css_uriRewriter/exp_prepend2.css deleted file mode 100644 index 087d94d..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css_uriRewriter/exp_prepend2.css +++ /dev/null @@ -1,17 +0,0 @@ -@import "//cnd.com/A/B/foo.css"; -@import '//cnd.com/A/B/bar/foo.css' print; -@import '//cnd.com/A/bar/foo.css' print; -@import '//cnd.com/foo.css' print; -@import '/css/foo.css'; /* abs, should not alter */ -@import 'http://foo.com/css/foo.css'; /* scheme, should not alter */ -@import url(//cnd.com/A/foo.css) tv, projection; -@import url("/css/foo.css"); /* abs, should not alter */ -@import url(/css2/foo.css); /* abs, should not alter */ -@import url(foo:bar); /* scheme, should not alter */ -foo {background:url('//cnd.com/A/B/bar/foo.png')} -foo {background:url('http://foo.com/css/foo.css');} /* scheme, should not alter */ -foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */ -foo {background:url(foo:bar);} /* scheme, should not alter */ -foo {background:url("//cnd.com/A/B/foo bar.jpg");} -@import url('//cnd.com/A/B/foo bar.css'); -@import "//cnd.com/A/B/foo bar.css"; diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css_uriRewriter/in.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css_uriRewriter/in.css deleted file mode 100644 index 3bdce36..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/css_uriRewriter/in.css +++ /dev/null @@ -1,17 +0,0 @@ -@import "foo.css"; -@import 'bar/foo.css' print; -@import '../bar/foo.css' print; -@import '../../foo.css' print; -@import '/css/foo.css'; /* abs, should not alter */ -@import 'http://foo.com/css/foo.css'; /* scheme, should not alter */ -@import url(../foo.css) tv, projection; -@import url("/css/foo.css"); /* abs, should not alter */ -@import url(/css2/foo.css); /* abs, should not alter */ -@import url(foo:bar); /* scheme, should not alter */ -foo {background:url('bar/foo.png')} -foo {background:url('http://foo.com/css/foo.css');} /* scheme, should not alter */ -foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */ -foo {background:url(foo:bar);} /* scheme, should not alter */ -foo {background:url("foo bar.jpg");} -@import url('foo bar.css'); -@import "foo bar.css"; diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/html/before.html b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/html/before.html deleted file mode 100644 index 3b06d18..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/html/before.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - - - css Zen Garden: The Beauty in CSS Design - - - - - - - - - - - - -

Browser != IE

-
- -
-	White  space  is  important   here!
-		
-
-

A demonstration of what can be accomplished visually through CSS-based design. Select any style sheet from the list to load it into this page.

-

Download the sample html file and css file

-
- -
- - \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/html/before.min.html b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/html/before.min.html deleted file mode 100644 index 7ec603d..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/html/before.min.html +++ /dev/null @@ -1,38 +0,0 @@ -css Zen Garden: The Beauty in CSS Design -

Browser != IE

css Zen Garden

The Beauty of CSS -Design

-	White  space  is  important   here!
-		

A demonstration of what can be accomplished visually through CSS-based design. Select any style sheet from the list to load it into this page.

Download the sample html file and css file

\ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/html/before2.html b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/html/before2.html deleted file mode 100644 index 4ca7f19..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/html/before2.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - - css Zen Garden: The Beauty in CSS Design - - - - - - - - - - - - -

Browser != IE

-
- -
-	White  space  is  important   here!
-		
-
-

A demonstration of what can be accomplished visually through CSS-based design. Select any style sheet from the list to load it into this page.

-

Download the sample html file and css file

-
- -Preserve at least 1 char of whitespace near scripts in case of document.write(). -
- - \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/html/before2.min.html b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/html/before2.min.html deleted file mode 100644 index 0e1680f..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/html/before2.min.html +++ /dev/null @@ -1,38 +0,0 @@ -css Zen Garden: The Beauty in CSS Design -

Browser != IE

css Zen Garden

The Beauty of CSS -Design

-	White  space  is  important   here!
-		

A demonstration of what can be accomplished visually through CSS-based design. Select any style sheet from the list to load it into this page.

Download the sample html file and css file

Preserve at least 1 char of whitespace near scripts in case of document.write().
\ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/htmlHelper_groupsConfig.php b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/htmlHelper_groupsConfig.php deleted file mode 100644 index 7f5153d..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/htmlHelper_groupsConfig.php +++ /dev/null @@ -1,8 +0,0 @@ - array( - '//_test_files/css/paths_prepend.css' - ,'//_test_files/css/styles.css' - ) -); diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/importProcessor/css/1/adjacent.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/importProcessor/css/1/adjacent.css deleted file mode 100644 index 80ceaaf..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/importProcessor/css/1/adjacent.css +++ /dev/null @@ -1,3 +0,0 @@ -/* @import url('bad.css' ) bad; */ -adjacent2 foo { background: red url(/red.gif); } -adjacent2 bar { background: url('../green.gif') } \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/importProcessor/css/1/tv.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/importProcessor/css/1/tv.css deleted file mode 100644 index 8542d74..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/importProcessor/css/1/tv.css +++ /dev/null @@ -1,4 +0,0 @@ -@import url( adjacent.css ) all; -@import '../input.css'; -tv foo { background: red url(/red.gif); } -tv bar { background: url('../green.gif') } \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/importProcessor/css/adjacent.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/importProcessor/css/adjacent.css deleted file mode 100644 index d666a25..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/importProcessor/css/adjacent.css +++ /dev/null @@ -1,4 +0,0 @@ -@import url(../../css/styles.css); -@import url(http://example.com/hello.css); -adjacent foo { background: red url(/red.gif); } -adjacent bar { background: url('../green.gif') } \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/importProcessor/css/input.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/importProcessor/css/input.css deleted file mode 100644 index 1534733..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/importProcessor/css/input.css +++ /dev/null @@ -1,5 +0,0 @@ -@import url(adjacent.css) screen; -@import "1/tv.css" tv, projection; -@import "../lib/css/example.css"; -input foo { background: red url(/red.gif); } -input bar { background: url('../green.gif') } \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/importProcessor/css/output.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/importProcessor/css/output.css deleted file mode 100644 index ca7d872..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/importProcessor/css/output.css +++ /dev/null @@ -1,52 +0,0 @@ -@media screen { -@charset "utf-8"; - -/* some CSS to try to exercise things in general */ - -@import url(/more.css); - - body, td, th { - font-family: Verdana , "Bitstream Vera Sans" , Arial Narrow, sans-serif ; - - font-size : 12px; -} - -.nav { - margin-left: 20%; -} -#main-nav { - background-color: red; - border: 1px solid #00ff77; -} - -div#content -h1 + p { - padding-top: 0; - margin-top: 0; -} - -@media all and (min-width: 640px) { - #media-queries-1 { background-color: #0f0; } -} - -@media screen and (max-width: 2000px) { - #media-queries-2 { background-color: #0f0; } -} -@import url(http://example.com/hello.css); -adjacent foo { background: red url(/red.gif); } -adjacent bar { background: url('../green.gif') } -} - -@media tv,projection { -/* @import url('1/bad.css') bad; */ -adjacent2 foo { background: red url(/red.gif); } -adjacent2 bar { background: url('green.gif') } -@import '../input.css'; -tv foo { background: red url(/red.gif); } -tv bar { background: url('green.gif') } -} - -input.test bar { background: url('../lib/img/green.gif') } - -input foo { background: red url(/red.gif); } -input bar { background: url('../green.gif') } \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/importProcessor/lib/css/example.css b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/importProcessor/lib/css/example.css deleted file mode 100644 index 7e3ceb7..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/importProcessor/lib/css/example.css +++ /dev/null @@ -1 +0,0 @@ -input.test bar { background: url('../img/green.gif') } diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/js/before.min_plus.js b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/js/before.min_plus.js deleted file mode 100644 index 6f06c6e..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/js/before.min_plus.js +++ /dev/null @@ -1,22 +0,0 @@ -/* is.js - - (c) 2001 Douglas Crockford - 2001 June 3 -*/ -var is={ie:navigator.appName=='Microsoft Internet Explorer',java:navigator.javaEnabled(),ns:navigator.appName=='Netscape',ua:navigator.userAgent.toLowerCase(),version:parseFloat(navigator.appVersion.substr(21))||parseFloat(navigator.appVersion),win:navigator.platform=='Win32'} -/** - * preserve this comment, too - */ -is.mac=is.ua.indexOf('mac')>=0;if(is.ua.indexOf('opera')>=0){is.ie=is.ns=false;is.opera=true;} -if(is.ua.indexOf('gecko')>=0){is.ie=is.ns=false;is.gecko=true;}/*@cc_on - /*@if (@_win32) - if (is.ie && is.win) - document.write("PASS: IE/win honored conditional comment.
"); - @else @*/if(is.ie&&is.win) -document.write("FAIL: IE/win did not honor multi-line conditional comment.
");else -document.write("PASS: Non-IE/win browser ignores multi-line conditional comment.
");/*@end -@*/var recognizesCondComm=true;//@cc_on/* -recognizesCondComm=false;//@cc_on*/ -if((is.ie&&is.win)==recognizesCondComm) -document.write("PASS: IE/win honored single-line conditional comment.
");else -document.write("FAIL: Non-IE/win browser did not ignore single-line conditional comment.
"); \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/js/condcomm.min_plus.js b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/js/condcomm.min_plus.js deleted file mode 100644 index d8c1ed3..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/js/condcomm.min_plus.js +++ /dev/null @@ -1,13 +0,0 @@ -var isWin; -/*@cc_on - @if (@_win32) - isWin = true; - @else @*/ - isWin = false; - /*@end -@*/ - -var recognizesCondComm = true; -//@cc_on/* -recognizesCondComm = false; -//@cc_on*/ \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/js/issue132.js b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/js/issue132.js deleted file mode 100644 index 4ccfb15..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/js/issue132.js +++ /dev/null @@ -1,7 +0,0 @@ -// from jQuery tablesorter -ts.addParser({ - id: "currency", - is: function(s) { - return /^[£$€?.]/.test(s); - }, -}); diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/js/issue132.min.js b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/js/issue132.min.js deleted file mode 100644 index 7215187..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/js/issue132.min.js +++ /dev/null @@ -1 +0,0 @@ -ts.addParser({id:"currency",is:function(s){return /^[£$€?.]/.test(s);},}); \ No newline at end of file diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/js/issue141.min.js b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/js/issue141.min.js deleted file mode 100644 index 10aa56e..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/js/issue141.min.js +++ /dev/null @@ -1,3 +0,0 @@ -// The MinApp controller should cause this file to not be minified -// since the basename of the filepath matches the default noMinPattern - diff --git a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/js/jquery-1.2.3.js b/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/js/jquery-1.2.3.js deleted file mode 100644 index c5a3337..0000000 --- a/minimee/library/vendor/mrclay/minify/min_unit_tests/_test_files/js/jquery-1.2.3.js +++ /dev/null @@ -1,3408 +0,0 @@ -(function(){ -/*! - * jQuery 1.2.3 - New Wave Javascript - * - * Copyright (c) 2008 John Resig (jquery.com) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. - * - * $Date: 2008-02-06 00:21:25 -0500 (Wed, 06 Feb 2008) $ - * $Rev: 4663 $ - */ - -// Map over jQuery in case of overwrite -if ( window.jQuery ) - var _jQuery = window.jQuery; - -var jQuery = window.jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - return new jQuery.prototype.init( selector, context ); -}; - -// Map over the $ in case of overwrite -if ( window.$ ) - var _$ = window.$; - -// Map the jQuery namespace to the '$' one -window.$ = jQuery; - -// A simple way to check for HTML strings or ID strings -// (both of which we optimize for) -var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/; - -// Is it a simple selector -var isSimple = /^.[^:#\[\.]*$/; - -jQuery.fn = jQuery.prototype = { - init: function( selector, context ) { - // Make sure that a selection was provided - selector = selector || document; - - // Handle $(DOMElement) - if ( selector.nodeType ) { - this[0] = selector; - this.length = 1; - return this; - - // Handle HTML strings - } else if ( typeof selector == "string" ) { - // Are we dealing with HTML string or an ID? - var match = quickExpr.exec( selector ); - - // Verify a match, and that no context was specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) - selector = jQuery.clean( [ match[1] ], context ); - - // HANDLE: $("#id") - else { - var elem = document.getElementById( match[3] ); - - // Make sure an element was located - if ( elem ) - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id != match[3] ) - return jQuery().find( selector ); - - // Otherwise, we inject the element directly into the jQuery object - else { - this[0] = elem; - this.length = 1; - return this; - } - - else - selector = []; - } - - // HANDLE: $(expr, [context]) - // (which is just equivalent to: $(content).find(expr) - } else - return new jQuery( context ).find( selector ); - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) - return new jQuery( document )[ jQuery.fn.ready ? "ready" : "load" ]( selector ); - - return this.setArray( - // HANDLE: $(array) - selector.constructor == Array && selector || - - // HANDLE: $(arraylike) - // Watch for when an array-like object, contains DOM nodes, is passed in as the selector - (selector.jquery || selector.length && selector != window && !selector.nodeType && selector[0] != undefined && selector[0].nodeType) && jQuery.makeArray( selector ) || - - // HANDLE: $(*) - [ selector ] ); - }, - - // The current version of jQuery being used - jquery: "1.2.3", - - // The number of elements contained in the matched element set - size: function() { - return this.length; - }, - - // The number of elements contained in the matched element set - length: 0, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num == undefined ? - - // Return a 'clean' array - jQuery.makeArray( this ) : - - // Return just the object - this[ num ]; - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - // Build a new jQuery matched element set - var ret = jQuery( elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - // Return the newly-formed element set - return ret; - }, - - // Force the current matched set of elements to become - // the specified array of elements (destroying the stack in the process) - // You should use pushStack() in order to do this, but maintain the stack - setArray: function( elems ) { - // Resetting the length to 0, then using the native Array push - // is a super-fast way to populate an object with array-like properties - this.length = 0; - Array.prototype.push.apply( this, elems ); - - return this; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - var ret = -1; - - // Locate the position of the desired element - this.each(function(i){ - if ( this == elem ) - ret = i; - }); - - return ret; - }, - - attr: function( name, value, type ) { - var options = name; - - // Look for the case where we're accessing a style value - if ( name.constructor == String ) - if ( value == undefined ) - return this.length && jQuery[ type || "attr" ]( this[0], name ) || undefined; - - else { - options = {}; - options[ name ] = value; - } - - // Check to see if we're setting style values - return this.each(function(i){ - // Set all the styles - for ( name in options ) - jQuery.attr( - type ? - this.style : - this, - name, jQuery.prop( this, options[ name ], type, i, name ) - ); - }); - }, - - css: function( key, value ) { - // ignore negative width and height values - if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 ) - value = undefined; - return this.attr( key, value, "curCSS" ); - }, - - text: function( text ) { - if ( typeof text != "object" && text != null ) - return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) ); - - var ret = ""; - - jQuery.each( text || this, function(){ - jQuery.each( this.childNodes, function(){ - if ( this.nodeType != 8 ) - ret += this.nodeType != 1 ? - this.nodeValue : - jQuery.fn.text( [ this ] ); - }); - }); - - return ret; - }, - - wrapAll: function( html ) { - if ( this[0] ) - // The elements to wrap the target around - jQuery( html, this[0].ownerDocument ) - .clone() - .insertBefore( this[0] ) - .map(function(){ - var elem = this; - - while ( elem.firstChild ) - elem = elem.firstChild; - - return elem; - }) - .append(this); - - return this; - }, - - wrapInner: function( html ) { - return this.each(function(){ - jQuery( this ).contents().wrapAll( html ); - }); - }, - - wrap: function( html ) { - return this.each(function(){ - jQuery( this ).wrapAll( html ); - }); - }, - - append: function() { - return this.domManip(arguments, true, false, function(elem){ - if (this.nodeType == 1) - this.appendChild( elem ); - }); - }, - - prepend: function() { - return this.domManip(arguments, true, true, function(elem){ - if (this.nodeType == 1) - this.insertBefore( elem, this.firstChild ); - }); - }, - - before: function() { - return this.domManip(arguments, false, false, function(elem){ - this.parentNode.insertBefore( elem, this ); - }); - }, - - after: function() { - return this.domManip(arguments, false, true, function(elem){ - this.parentNode.insertBefore( elem, this.nextSibling ); - }); - }, - - end: function() { - return this.prevObject || jQuery( [] ); - }, - - find: function( selector ) { - var elems = jQuery.map(this, function(elem){ - return jQuery.find( selector, elem ); - }); - - return this.pushStack( /[^+>] [^+>]/.test( selector ) || selector.indexOf("..") > -1 ? - jQuery.unique( elems ) : - elems ); - }, - - clone: function( events ) { - // Do the clone - var ret = this.map(function(){ - if ( jQuery.browser.msie && !jQuery.isXMLDoc(this) ) { - // IE copies events bound via attachEvent when - // using cloneNode. Calling detachEvent on the - // clone will also remove the events from the orignal - // In order to get around this, we use innerHTML. - // Unfortunately, this means some modifications to - // attributes in IE that are actually only stored - // as properties will not be copied (such as the - // the name attribute on an input). - var clone = this.cloneNode(true), - container = document.createElement("div"); - container.appendChild(clone); - return jQuery.clean([container.innerHTML])[0]; - } else - return this.cloneNode(true); - }); - - // Need to set the expando to null on the cloned set if it exists - // removeData doesn't work here, IE removes it from the original as well - // this is primarily for IE but the data expando shouldn't be copied over in any browser - var clone = ret.find("*").andSelf().each(function(){ - if ( this[ expando ] != undefined ) - this[ expando ] = null; - }); - - // Copy the events from the original to the clone - if ( events === true ) - this.find("*").andSelf().each(function(i){ - if (this.nodeType == 3) - return; - var events = jQuery.data( this, "events" ); - - for ( var type in events ) - for ( var handler in events[ type ] ) - jQuery.event.add( clone[ i ], type, events[ type ][ handler ], events[ type ][ handler ].data ); - }); - - // Return the cloned set - return ret; - }, - - filter: function( selector ) { - return this.pushStack( - jQuery.isFunction( selector ) && - jQuery.grep(this, function(elem, i){ - return selector.call( elem, i ); - }) || - - jQuery.multiFilter( selector, this ) ); - }, - - not: function( selector ) { - if ( selector.constructor == String ) - // test special case where just one selector is passed in - if ( isSimple.test( selector ) ) - return this.pushStack( jQuery.multiFilter( selector, this, true ) ); - else - selector = jQuery.multiFilter( selector, this ); - - var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType; - return this.filter(function() { - return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector; - }); - }, - - add: function( selector ) { - return !selector ? this : this.pushStack( jQuery.merge( - this.get(), - selector.constructor == String ? - jQuery( selector ).get() : - selector.length != undefined && (!selector.nodeName || jQuery.nodeName(selector, "form")) ? - selector : [selector] ) ); - }, - - is: function( selector ) { - return selector ? - jQuery.multiFilter( selector, this ).length > 0 : - false; - }, - - hasClass: function( selector ) { - return this.is( "." + selector ); - }, - - val: function( value ) { - if ( value == undefined ) { - - if ( this.length ) { - var elem = this[0]; - - // We need to handle select boxes special - if ( jQuery.nodeName( elem, "select" ) ) { - var index = elem.selectedIndex, - values = [], - options = elem.options, - one = elem.type == "select-one"; - - // Nothing was selected - if ( index < 0 ) - return null; - - // Loop through all the selected options - for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { - var option = options[ i ]; - - if ( option.selected ) { - // Get the specifc value for the option - value = jQuery.browser.msie && !option.attributes.value.specified ? option.text : option.value; - - // We don't need an array for one selects - if ( one ) - return value; - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - - // Everything else, we just grab the value - } else - return (this[0].value || "").replace(/\r/g, ""); - - } - - return undefined; - } - - return this.each(function(){ - if ( this.nodeType != 1 ) - return; - - if ( value.constructor == Array && /radio|checkbox/.test( this.type ) ) - this.checked = (jQuery.inArray(this.value, value) >= 0 || - jQuery.inArray(this.name, value) >= 0); - - else if ( jQuery.nodeName( this, "select" ) ) { - var values = value.constructor == Array ? - value : - [ value ]; - - jQuery( "option", this ).each(function(){ - this.selected = (jQuery.inArray( this.value, values ) >= 0 || - jQuery.inArray( this.text, values ) >= 0); - }); - - if ( !values.length ) - this.selectedIndex = -1; - - } else - this.value = value; - }); - }, - - html: function( value ) { - return value == undefined ? - (this.length ? - this[0].innerHTML : - null) : - this.empty().append( value ); - }, - - replaceWith: function( value ) { - return this.after( value ).remove(); - }, - - eq: function( i ) { - return this.slice( i, i + 1 ); - }, - - slice: function() { - return this.pushStack( Array.prototype.slice.apply( this, arguments ) ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function(elem, i){ - return callback.call( elem, i, elem ); - })); - }, - - andSelf: function() { - return this.add( this.prevObject ); - }, - - data: function( key, value ){ - var parts = key.split("."); - parts[1] = parts[1] ? "." + parts[1] : ""; - - if ( value == null ) { - var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); - - if ( data == undefined && this.length ) - data = jQuery.data( this[0], key ); - - return data == null && parts[1] ? - this.data( parts[0] ) : - data; - } else - return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){ - jQuery.data( this, key, value ); - }); - }, - - removeData: function( key ){ - return this.each(function(){ - jQuery.removeData( this, key ); - }); - }, - - domManip: function( args, table, reverse, callback ) { - var clone = this.length > 1, elems; - - return this.each(function(){ - if ( !elems ) { - elems = jQuery.clean( args, this.ownerDocument ); - - if ( reverse ) - elems.reverse(); - } - - var obj = this; - - if ( table && jQuery.nodeName( this, "table" ) && jQuery.nodeName( elems[0], "tr" ) ) - obj = this.getElementsByTagName("tbody")[0] || this.appendChild( this.ownerDocument.createElement("tbody") ); - - var scripts = jQuery( [] ); - - jQuery.each(elems, function(){ - var elem = clone ? - jQuery( this ).clone( true )[0] : - this; - - // execute all scripts after the elements have been injected - if ( jQuery.nodeName( elem, "script" ) ) { - scripts = scripts.add( elem ); - } else { - // Remove any inner scripts for later evaluation - if ( elem.nodeType == 1 ) - scripts = scripts.add( jQuery( "script", elem ).remove() ); - - // Inject the elements into the document - callback.call( obj, elem ); - } - }); - - scripts.each( evalScript ); - }); - } -}; - -// Give the init function the jQuery prototype for later instantiation -jQuery.prototype.init.prototype = jQuery.prototype; - -function evalScript( i, elem ) { - if ( elem.src ) - jQuery.ajax({ - url: elem.src, - async: false, - dataType: "script" - }); - - else - jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" ); - - if ( elem.parentNode ) - elem.parentNode.removeChild( elem ); -} - -jQuery.extend = jQuery.fn.extend = function() { - // copy reference to target object - var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options; - - // Handle a deep copy situation - if ( target.constructor == Boolean ) { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target != "object" && typeof target != "function" ) - target = {}; - - // extend jQuery itself if only one argument is passed - if ( length == 1 ) { - target = this; - i = 0; - } - - for ( ; i < length; i++ ) - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) - // Extend the base object - for ( var name in options ) { - // Prevent never-ending loop - if ( target === options[ name ] ) - continue; - - // Recurse if we're merging object values - if ( deep && options[ name ] && typeof options[ name ] == "object" && target[ name ] && !options[ name ].nodeType ) - target[ name ] = jQuery.extend( target[ name ], options[ name ] ); - - // Don't bring in undefined values - else if ( options[ name ] != undefined ) - target[ name ] = options[ name ]; - - } - - // Return the modified object - return target; -}; - -var expando = "jQuery" + (new Date()).getTime(), uuid = 0, windowData = {}; - -// exclude the following css properties to add px -var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i; - -jQuery.extend({ - noConflict: function( deep ) { - window.$ = _$; - - if ( deep ) - window.jQuery = _jQuery; - - return jQuery; - }, - - // See test/unit/core.js for details concerning this function. - isFunction: function( fn ) { - return !!fn && typeof fn != "string" && !fn.nodeName && - fn.constructor != Array && /function/i.test( fn + "" ); - }, - - // check if an element is in a (or is an) XML document - isXMLDoc: function( elem ) { - return elem.documentElement && !elem.body || - elem.tagName && elem.ownerDocument && !elem.ownerDocument.body; - }, - - // Evalulates a script in a global context - globalEval: function( data ) { - data = jQuery.trim( data ); - - if ( data ) { - // Inspired by code by Andrea Giammarchi - // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html - var head = document.getElementsByTagName("head")[0] || document.documentElement, - script = document.createElement("script"); - - script.type = "text/javascript"; - if ( jQuery.browser.msie ) - script.text = data; - else - script.appendChild( document.createTextNode( data ) ); - - head.appendChild( script ); - head.removeChild( script ); - } - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase(); - }, - - cache: {}, - - data: function( elem, name, data ) { - elem = elem == window ? - windowData : - elem; - - var id = elem[ expando ]; - - // Compute a unique ID for the element - if ( !id ) - id = elem[ expando ] = ++uuid; - - // Only generate the data cache if we're - // trying to access or manipulate it - if ( name && !jQuery.cache[ id ] ) - jQuery.cache[ id ] = {}; - - // Prevent overriding the named cache with undefined values - if ( data != undefined ) - jQuery.cache[ id ][ name ] = data; - - // Return the named cache data, or the ID for the element - return name ? - jQuery.cache[ id ][ name ] : - id; - }, - - removeData: function( elem, name ) { - elem = elem == window ? - windowData : - elem; - - var id = elem[ expando ]; - - // If we want to remove a specific section of the element's data - if ( name ) { - if ( jQuery.cache[ id ] ) { - // Remove the section of cache data - delete jQuery.cache[ id ][ name ]; - - // If we've removed all the data, remove the element's cache - name = ""; - - for ( name in jQuery.cache[ id ] ) - break; - - if ( !name ) - jQuery.removeData( elem ); - } - - // Otherwise, we want to remove all of the element's data - } else { - // Clean up the element expando - try { - delete elem[ expando ]; - } catch(e){ - // IE has trouble directly removing the expando - // but it's ok with using removeAttribute - if ( elem.removeAttribute ) - elem.removeAttribute( expando ); - } - - // Completely remove the data cache - delete jQuery.cache[ id ]; - } - }, - - // args is for internal usage only - each: function( object, callback, args ) { - if ( args ) { - if ( object.length == undefined ) { - for ( var name in object ) - if ( callback.apply( object[ name ], args ) === false ) - break; - } else - for ( var i = 0, length = object.length; i < length; i++ ) - if ( callback.apply( object[ i ], args ) === false ) - break; - - // A special, fast, case for the most common use of each - } else { - if ( object.length == undefined ) { - for ( var name in object ) - if ( callback.call( object[ name ], name, object[ name ] ) === false ) - break; - } else - for ( var i = 0, length = object.length, value = object[0]; - i < length && callback.call( value, i, value ) !== false; value = object[++i] ){} - } - - return object; - }, - - prop: function( elem, value, type, i, name ) { - // Handle executable functions - if ( jQuery.isFunction( value ) ) - value = value.call( elem, i ); - - // Handle passing in a number to a CSS property - return value && value.constructor == Number && type == "curCSS" && !exclude.test( name ) ? - value + "px" : - value; - }, - - className: { - // internal only, use addClass("class") - add: function( elem, classNames ) { - jQuery.each((classNames || "").split(/\s+/), function(i, className){ - if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) ) - elem.className += (elem.className ? " " : "") + className; - }); - }, - - // internal only, use removeClass("class") - remove: function( elem, classNames ) { - if (elem.nodeType == 1) - elem.className = classNames != undefined ? - jQuery.grep(elem.className.split(/\s+/), function(className){ - return !jQuery.className.has( classNames, className ); - }).join(" ") : - ""; - }, - - // internal only, use is(".class") - has: function( elem, className ) { - return jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1; - } - }, - - // A method for quickly swapping in/out CSS properties to get correct calculations - swap: function( elem, options, callback ) { - var old = {}; - // Remember the old values, and insert the new ones - for ( var name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - callback.call( elem ); - - // Revert the old values - for ( var name in options ) - elem.style[ name ] = old[ name ]; - }, - - css: function( elem, name, force ) { - if ( name == "width" || name == "height" ) { - var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ]; - - function getWH() { - val = name == "width" ? elem.offsetWidth : elem.offsetHeight; - var padding = 0, border = 0; - jQuery.each( which, function() { - padding += parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0; - border += parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0; - }); - val -= Math.round(padding + border); - } - - if ( jQuery(elem).is(":visible") ) - getWH(); - else - jQuery.swap( elem, props, getWH ); - - return Math.max(0, val); - } - - return jQuery.curCSS( elem, name, force ); - }, - - curCSS: function( elem, name, force ) { - var ret; - - // A helper method for determining if an element's values are broken - function color( elem ) { - if ( !jQuery.browser.safari ) - return false; - - var ret = document.defaultView.getComputedStyle( elem, null ); - return !ret || ret.getPropertyValue("color") == ""; - } - - // We need to handle opacity special in IE - if ( name == "opacity" && jQuery.browser.msie ) { - ret = jQuery.attr( elem.style, "opacity" ); - - return ret == "" ? - "1" : - ret; - } - // Opera sometimes will give the wrong display answer, this fixes it, see #2037 - if ( jQuery.browser.opera && name == "display" ) { - var save = elem.style.outline; - elem.style.outline = "0 solid black"; - elem.style.outline = save; - } - - // Make sure we're using the right name for getting the float value - if ( name.match( /float/i ) ) - name = styleFloat; - - if ( !force && elem.style && elem.style[ name ] ) - ret = elem.style[ name ]; - - else if ( document.defaultView && document.defaultView.getComputedStyle ) { - - // Only "float" is needed here - if ( name.match( /float/i ) ) - name = "float"; - - name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase(); - - var getComputedStyle = document.defaultView.getComputedStyle( elem, null ); - - if ( getComputedStyle && !color( elem ) ) - ret = getComputedStyle.getPropertyValue( name ); - - // If the element isn't reporting its values properly in Safari - // then some display: none elements are involved - else { - var swap = [], stack = []; - - // Locate all of the parent display: none elements - for ( var a = elem; a && color(a); a = a.parentNode ) - stack.unshift(a); - - // Go through and make them visible, but in reverse - // (It would be better if we knew the exact display type that they had) - for ( var i = 0; i < stack.length; i++ ) - if ( color( stack[ i ] ) ) { - swap[ i ] = stack[ i ].style.display; - stack[ i ].style.display = "block"; - } - - // Since we flip the display style, we have to handle that - // one special, otherwise get the value - ret = name == "display" && swap[ stack.length - 1 ] != null ? - "none" : - ( getComputedStyle && getComputedStyle.getPropertyValue( name ) ) || ""; - - // Finally, revert the display styles back - for ( var i = 0; i < swap.length; i++ ) - if ( swap[ i ] != null ) - stack[ i ].style.display = swap[ i ]; - } - - // We should always get a number back from opacity - if ( name == "opacity" && ret == "" ) - ret = "1"; - - } else if ( elem.currentStyle ) { - var camelCase = name.replace(/\-(\w)/g, function(all, letter){ - return letter.toUpperCase(); - }); - - ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ]; - - // From the awesome hack by Dean Edwards - // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 - - // If we're not dealing with a regular pixel number - // but a number that has a weird ending, we need to convert it to pixels - if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) { - // Remember the original values - var style = elem.style.left, runtimeStyle = elem.runtimeStyle.left; - - // Put in the new values to get a computed value out - elem.runtimeStyle.left = elem.currentStyle.left; - elem.style.left = ret || 0; - ret = elem.style.pixelLeft + "px"; - - // Revert the changed values - elem.style.left = style; - elem.runtimeStyle.left = runtimeStyle; - } - } - - return ret; - }, - - clean: function( elems, context ) { - var ret = []; - context = context || document; - // !context.createElement fails in IE with an error but returns typeof 'object' - if (typeof context.createElement == 'undefined') - context = context.ownerDocument || context[0] && context[0].ownerDocument || document; - - jQuery.each(elems, function(i, elem){ - if ( !elem ) - return; - - if ( elem.constructor == Number ) - elem = elem.toString(); - - // Convert html string into DOM nodes - if ( typeof elem == "string" ) { - // Fix "XHTML"-style tags in all browsers - elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){ - return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? - all : - front + ">"; - }); - - // Trim whitespace, otherwise indexOf won't work as expected - var tags = jQuery.trim( elem ).toLowerCase(), div = context.createElement("div"); - - var wrap = - // option or optgroup - !tags.indexOf("", "" ] || - - !tags.indexOf("", "" ] || - - tags.match(/^<(thead|tbody|tfoot|colg|cap)/) && - [ 1, "", "
" ] || - - !tags.indexOf("", "" ] || - - // matched above - (!tags.indexOf("", "" ] || - - !tags.indexOf("", "" ] || - - // IE can't serialize and \ No newline at end of file diff --git a/minimee/library/vendor/selvinortiz/zit/.gitignore b/minimee/library/vendor/selvinortiz/zit/.gitignore new file mode 100644 index 0000000..c4525ae --- /dev/null +++ b/minimee/library/vendor/selvinortiz/zit/.gitignore @@ -0,0 +1,2 @@ +vendor +Guardfile diff --git a/minimee/library/vendor/selvinortiz/zit/README.md b/minimee/library/vendor/selvinortiz/zit/README.md index 9fa7629..e16aca5 100644 --- a/minimee/library/vendor/selvinortiz/zit/README.md +++ b/minimee/library/vendor/selvinortiz/zit/README.md @@ -14,6 +14,11 @@ Tiny dependency management library for **PHP 5.3** *by* [Selvin Ortiz](http://tw ### Changelog +---- +#### 0.5.2 +- Adds changes from pull request #1 +- Updates some composer properties + ---- #### 0.5.1 - Adds `static::$instances` diff --git a/minimee/library/vendor/selvinortiz/zit/composer.json b/minimee/library/vendor/selvinortiz/zit/composer.json index e203339..92a1864 100644 --- a/minimee/library/vendor/selvinortiz/zit/composer.json +++ b/minimee/library/vendor/selvinortiz/zit/composer.json @@ -8,7 +8,7 @@ { "name": "Selvin Ortiz", "email": "selvin@selvin.co", - "homepage": "http://twitter.com/selvinortiz", + "homepage": "http://selv.in", "role": "Developer" } ], diff --git a/minimee/library/vendor/selvinortiz/zit/src/SelvinOrtiz/Zit/Zit.php b/minimee/library/vendor/selvinortiz/zit/src/SelvinOrtiz/Zit/Zit.php index 0cbe722..202f3f4 100644 --- a/minimee/library/vendor/selvinortiz/zit/src/SelvinOrtiz/Zit/Zit.php +++ b/minimee/library/vendor/selvinortiz/zit/src/SelvinOrtiz/Zit/Zit.php @@ -2,15 +2,15 @@ namespace SelvinOrtiz\Zit; /** - * @=SelvinOrtiz\Zit - * * Tiny dependency management library for PHP 5.3 * - * @author Selvin Ortiz - * @package Zit - * @version 0.5.0 - * @category DI, IoC (PHP) - * @copyright 2014 Selvin Ortiz + * Class Zit + * + * @author Selvin Ortiz - http://selv.in + * @package SelvinOrtiz\Zit + * @version 0.5.2 + * @category DI, IoC (PHP) + * @copyright 2014-2015 Selvin Ortiz */ class Zit implements IZit @@ -20,7 +20,7 @@ class Zit implements IZit protected $services = array(); protected $callables = array(); - protected function __construct() {} + protected function __construct() {} protected function __clone() {} /** @@ -108,14 +108,7 @@ protected function pop($id, $args=array() ) public function __get($id) { - if (property_exists($this, $id)) - { - return $this->{$id}; - } - else - { - return $this->pop($id); - } + return $this->pop($id); } public function __call($id, $args=array()) diff --git a/minimee/library/vendor/selvinortiz/zit/tests/ZitTest.php b/minimee/library/vendor/selvinortiz/zit/tests/ZitTest.php index 0a5fc60..f18ff51 100644 --- a/minimee/library/vendor/selvinortiz/zit/tests/ZitTest.php +++ b/minimee/library/vendor/selvinortiz/zit/tests/ZitTest.php @@ -52,4 +52,17 @@ public function testExtend() $this->assertTrue( $zit->myCallable() === 12345 ); $this->assertTrue( Zit::myCallable() === 12345 ); } + + public function testStashWithSameIdAsProtectedProperty() + { + $zit = Zit::getInstance(); + + $instance = new \stdClass; + $instance->id = 'testServices'; + + $zit->stash('services', $instance); + + $this->assertTrue($zit->services instanceof \stdClass); + $this->assertSame('testServices', $zit->services->id); + } } From 4924a72a8fcc0ec3ec5021337bb9956e93d59c6e Mon Sep 17 00:00:00 2001 From: John D Wells Date: Tue, 5 Apr 2016 21:31:35 +0100 Subject: [PATCH 13/18] Add a test to see if spaces in `calc()` are preserved. --- minimee/tests/assets/css/style.3.css | 3 ++ minimee/tests/assets/css/style.3.min.css | 1 + minimee/tests/services/MinimeeServiceTest.php | 39 +++++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 minimee/tests/assets/css/style.3.css create mode 100644 minimee/tests/assets/css/style.3.min.css diff --git a/minimee/tests/assets/css/style.3.css b/minimee/tests/assets/css/style.3.css new file mode 100644 index 0000000..c95072d --- /dev/null +++ b/minimee/tests/assets/css/style.3.css @@ -0,0 +1,3 @@ +* { + padding-right: calc(24px + 2.25em); +} \ No newline at end of file diff --git a/minimee/tests/assets/css/style.3.min.css b/minimee/tests/assets/css/style.3.min.css new file mode 100644 index 0000000..977041a --- /dev/null +++ b/minimee/tests/assets/css/style.3.min.css @@ -0,0 +1 @@ +*{padding-right:calc(24px + 2.25em)} \ No newline at end of file diff --git a/minimee/tests/services/MinimeeServiceTest.php b/minimee/tests/services/MinimeeServiceTest.php index 017a2c4..3b042dd 100755 --- a/minimee/tests/services/MinimeeServiceTest.php +++ b/minimee/tests/services/MinimeeServiceTest.php @@ -136,6 +136,45 @@ public function testAppendToCacheBase() } + public function testSpacesInCalcPreserved() { + + minimee()->extend('makeLocalAssetModel', function() { + $localAssetModelMock = m::mock('Craft\Minimee_LocalAssetModel')->makePartial(); + $localAssetModelMock->shouldReceive('exists')->andReturn(true); + $localAssetModelMock->shouldReceive('getContents')->andReturn(file_get_contents(__DIR__ . '/../assets/css/style.3.css')); + + return $localAssetModelMock; + }); + + minimee()->extend('makeSettingsModel', function() { + $settingsModelMock = m::mock('Craft\Minimee_SettingsModel'); + $settingsModelMock->shouldReceive('validate')->andReturn(true); + $settingsModelMock->shouldReceive('attributeNames')->andreturn(array( + 'minifyCssEnabled', + 'cssPrependUrlEnabled', + 'cssPrependUrl' + )); + + $settingsModelMock->shouldReceive('getAttribute')->with('minifyCssEnabled')->andreturn(true); + $settingsModelMock->shouldReceive('getAttribute')->with('cssPrependUrlEnabled')->andreturn(true); + $settingsModelMock->shouldReceive('getAttribute')->with('cssPrependUrl')->andreturn('/path/to/cache/'); + + return $settingsModelMock; + }); + + minimee()->service->settings = minimee()->makeSettingsModel(); + minimee()->service->type = MinimeeType::Css; + + $asset = minimee()->makeLocalAssetModel(); + + $minifyCssAsset = $this->getMethod(minimee()->service, 'minifyCssAsset'); + + $result = $minifyCssAsset->invokeArgs(minimee()->service, array($asset)); + + $assertEquals = file_get_contents(__DIR__ . '/../assets/css/style.3.min.css'); + $this->assertEquals($assertEquals, $result); + } + protected function _invokeMinifyCssAsset($minifyCssEnabled, $cssPrependUrlEnabled, $cssPrependUrl) { $assetContents = file_get_contents(__DIR__ . '/../assets/css/style.2.css'); From 078f6816c25c87528261fa9fce216d338e71e26d Mon Sep 17 00:00:00 2001 From: John D Wells Date: Tue, 5 Apr 2016 21:31:57 +0100 Subject: [PATCH 14/18] Tweak instructions for cssPrependUrl. --- minimee/templates/settings.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/minimee/templates/settings.html b/minimee/templates/settings.html index d2f8edb..e779e79 100755 --- a/minimee/templates/settings.html +++ b/minimee/templates/settings.html @@ -183,7 +183,7 @@ id: 'cssPrependUrl', name: 'cssPrependUrl', placeholder : 'e.g. http://cdn.domain.com/assets/css', - instructions : 'Default is the URL & path to the asset being minified.' | t, + instructions : 'Default is the URL & path to the asset being minified. Root-relative URIs are recommended.' | t, value: settings.cssPrependUrl }) }} From 1cf5ef2da94c40f5622ae8d3e72d8477d6b5432b Mon Sep 17 00:00:00 2001 From: John D Wells Date: Fri, 15 Apr 2016 13:59:27 +0100 Subject: [PATCH 15/18] Swap the order of magnification & URL Rewriting to match how mrclay does it. Should make no functional difference, it's just more consistent when comparing against his code. --- minimee/services/MinimeeService.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/minimee/services/MinimeeService.php b/minimee/services/MinimeeService.php index 5717a4d..43cdd3a 100755 --- a/minimee/services/MinimeeService.php +++ b/minimee/services/MinimeeService.php @@ -640,6 +640,11 @@ protected function minifyCssAsset($asset) { $contents = $asset->contents; + if($this->settings->minifyCssEnabled) + { + $contents = \Minify_CSS::minify($contents); + } + if($this->settings->cssPrependUrlEnabled) { $cssPrependUrl = $this->settings->cssPrependUrl; @@ -649,12 +654,7 @@ protected function minifyCssAsset($asset) $cssPrependUrl = dirname($asset->filenameUrl) . '/'; } - $contents = \Minify_CSS_UriRewriter::prepend($asset->contents, $cssPrependUrl); - } - - if($this->settings->minifyCssEnabled) - { - $contents = \Minify_CSS::minify($contents); + $contents = \Minify_CSS_UriRewriter::prepend($contents, $cssPrependUrl); } return $contents; From 7e5c4f74f1e6218eb2b8c0697bb88ddc8a6dac1f Mon Sep 17 00:00:00 2001 From: John D Wells Date: Fri, 15 Apr 2016 13:59:54 +0100 Subject: [PATCH 16/18] Remove trailing whitespace. --- minimee/services/MinimeeService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/minimee/services/MinimeeService.php b/minimee/services/MinimeeService.php index 43cdd3a..0b0c3a0 100755 --- a/minimee/services/MinimeeService.php +++ b/minimee/services/MinimeeService.php @@ -406,7 +406,7 @@ protected function isUrl($string) * @return this */ protected function flightcheck() - { + { if(empty(self::$_pluginSettings)) { throw new Minimee_InfoException(Craft::t('Minimee is not installed.')); From 4842ebdf120c8a5333fe9a5a77a1d20aeb8cb23e Mon Sep 17 00:00:00 2001 From: John D Wells Date: Fri, 15 Apr 2016 14:08:53 +0100 Subject: [PATCH 17/18] Directly use CSSmin instead of going "through" Minify_CSS. This will set us up for potentially having to install tubalmartin/cssmin when Minify 3.x drops. --- minimee/services/MinimeeService.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/minimee/services/MinimeeService.php b/minimee/services/MinimeeService.php index 0b0c3a0..95edead 100755 --- a/minimee/services/MinimeeService.php +++ b/minimee/services/MinimeeService.php @@ -642,7 +642,8 @@ protected function minifyCssAsset($asset) if($this->settings->minifyCssEnabled) { - $contents = \Minify_CSS::minify($contents); + $compressor = new \CSSmin(); + $contents = $compressor->run($contents); } if($this->settings->cssPrependUrlEnabled) From f14adbe01a159a0c87617405c29d19c7f07a839a Mon Sep 17 00:00:00 2001 From: John D Wells Date: Wed, 20 Apr 2016 21:25:06 +0100 Subject: [PATCH 18/18] Version bump to v0.9.7. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f4d81d8..ffa082e 100755 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Minimee for Craft - v0.9.6 +# Minimee for Craft - v0.9.7 A [Craft CMS](http://buildwithcraft.com) port of the popular [Minimee](https://github.com/johndwells/Minimee) add-on for ExpressionEngine.