From dce1b8df91a026947a4f625643deb978bef81422 Mon Sep 17 00:00:00 2001 From: Steve Clay Date: Fri, 1 May 2009 17:11:44 +0000 Subject: [PATCH] minifyTextarea.php : set charset, + HTML rendering option Fixed source array casting in controllers Files, Groups, MinApp Changed default from "UTF-8" to "utf-8" --- min/lib/Minify.php | 2 +- min/lib/Minify/Controller/Base.php | 2 +- min/lib/Minify/Controller/Files.php | 9 +++- min/lib/Minify/Controller/Groups.php | 10 ++++- min/lib/Minify/Controller/MinApp.php | 10 ++++- min/lib/Minify/Controller/Page.php | 3 -- min_extras/tools/minifyTextarea.php | 67 +++++++++++++++++++++++----- min_unit_tests/test_Minify.php | 6 +-- 8 files changed, 86 insertions(+), 23 deletions(-) diff --git a/min/lib/Minify.php b/min/lib/Minify.php index 364ee81..e01a88e 100644 --- a/min/lib/Minify.php +++ b/min/lib/Minify.php @@ -105,7 +105,7 @@ class Minify { * 'encodeLevel' : level of encoding compression (0 to 9, default 9) * * 'contentTypeCharset' : appended to the Content-Type header sent. Set to a falsey - * value to remove. (default 'UTF-8') + * value to remove. (default 'utf-8') * * 'maxAge' : set this to the number of seconds the client should use its cache * before revalidating with the server. This sets Cache-Control: max-age and the diff --git a/min/lib/Minify/Controller/Base.php b/min/lib/Minify/Controller/Base.php index 20b1ce3..84889b3 100644 --- a/min/lib/Minify/Controller/Base.php +++ b/min/lib/Minify/Controller/Base.php @@ -45,7 +45,7 @@ abstract class Minify_Controller_Base { ,'encodeMethod' => null // determine later ,'encodeLevel' => 9 ,'minifierOptions' => array() // no minifier options - ,'contentTypeCharset' => 'UTF-8' + ,'contentTypeCharset' => 'utf-8' ,'maxAge' => 1800 // 30 minutes ,'rewriteCssUris' => true ,'bubbleCssImports' => false diff --git a/min/lib/Minify/Controller/Files.php b/min/lib/Minify/Controller/Files.php index b1b0e59..83f028a 100644 --- a/min/lib/Minify/Controller/Files.php +++ b/min/lib/Minify/Controller/Files.php @@ -40,7 +40,14 @@ class Minify_Controller_Files extends Minify_Controller_Base { */ public function setupSources($options) { // strip controller options - $files = (array)$options['files']; + + $files = $options['files']; + // if $files is a single object, casting will break it + if (is_object($files)) { + $files = array($files); + } elseif (! is_array($files)) { + $files = (array)$files; + } unset($options['files']); $sources = array(); diff --git a/min/lib/Minify/Controller/Groups.php b/min/lib/Minify/Controller/Groups.php index 02c9003..1ac5770 100644 --- a/min/lib/Minify/Controller/Groups.php +++ b/min/lib/Minify/Controller/Groups.php @@ -59,7 +59,15 @@ class Minify_Controller_Groups extends Minify_Controller_Base { return $options; } $sources = array(); - foreach ((array)$groups[$pi] as $file) { + + $files = $groups[$pi]; + // if $files is a single object, casting will break it + if (is_object($files)) { + $files = array($files); + } elseif (! is_array($files)) { + $files = (array)$files; + } + foreach ($files as $file) { if ($file instanceof Minify_Source) { $sources[] = $file; continue; diff --git a/min/lib/Minify/Controller/MinApp.php b/min/lib/Minify/Controller/MinApp.php index 07fed5c..9582d29 100644 --- a/min/lib/Minify/Controller/MinApp.php +++ b/min/lib/Minify/Controller/MinApp.php @@ -40,7 +40,15 @@ class Minify_Controller_MinApp extends Minify_Controller_Base { $this->log("A group configuration for \"{$_GET['g']}\" was not set"); return $options; } - foreach ((array)$cOptions['groups'][$_GET['g']] as $file) { + + $files = $cOptions['groups'][$_GET['g']]; + // if $files is a single object, casting will break it + if (is_object($files)) { + $files = array($files); + } elseif (! is_array($files)) { + $files = (array)$files; + } + foreach ($files as $file) { if ($file instanceof Minify_Source) { $sources[] = $file; continue; diff --git a/min/lib/Minify/Controller/Page.php b/min/lib/Minify/Controller/Page.php index 8a384e0..fa4599a 100644 --- a/min/lib/Minify/Controller/Page.php +++ b/min/lib/Minify/Controller/Page.php @@ -59,9 +59,6 @@ class Minify_Controller_Page extends Minify_Controller_Base { } $this->sources[] = new Minify_Source($sourceSpec); - // may not be needed - //$options['minifier'] = array('Minify_HTML', 'minify'); - $options['contentType'] = Minify::TYPE_HTML; return $options; } diff --git a/min_extras/tools/minifyTextarea.php b/min_extras/tools/minifyTextarea.php index 7c7767e..110b463 100644 --- a/min_extras/tools/minifyTextarea.php +++ b/min_extras/tools/minifyTextarea.php @@ -1,17 +1,52 @@ ]*>)@i' + ,'$1' + ,$textIn + ); + } + $sourceSpec['content'] = $textIn; + $sourceSpec['id'] = 'foo'; + if (isset($_POST['minJs'])) { + $sourceSpec['minifyOptions']['jsMinifier'] = array('JSMin', 'minify'); + require 'JSMin.php'; + } + if (isset($_POST['minCss'])) { + $sourceSpec['minifyOptions']['cssMinifier'] = array('Minify_CSS', 'minify'); + require 'Minify/CSS.php'; + } + $source = new Minify_Source($sourceSpec); + require_once 'Minify/Logger.php'; + require_once 'FirePHP.php'; + Minify_Logger::setLogger(FirePHP::getInstance(true)); + Minify::serve('Files', array( + 'files' => $source + ,'contentType' => Minify::TYPE_HTML + )); + exit(); +} + +$classes = array('Minify_HTML', 'Minify_CSS', 'JSMin', 'JSMinPlus'); + +if (isset($_POST['method']) && in_array($_POST['method'], $classes)) { // easier to just require them all require 'Minify/HTML.php'; require 'Minify/CSS.php'; @@ -31,6 +66,10 @@ if (isset($_POST['textIn']) && in_array($_POST['method'], $classes)) { $inOutBytes[1] = strlen($textOut); } +header('Content-Type: text/html; charset=utf-8'); +?> +minifyTextarea + @@ -39,17 +78,21 @@ if (isset($inOutBytes)) { "; } - ?> -
-

Minify with: - +

+

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

diff --git a/min_unit_tests/test_Minify.php b/min_unit_tests/test_Minify.php index ef18f04..4c61003 100644 --- a/min_unit_tests/test_Minify.php +++ b/min_unit_tests/test_Minify.php @@ -72,7 +72,7 @@ function test_Minify() 'ETag' => "\"pub{$lastModified}\"", 'Cache-Control' => 'max-age=86400, public, must-revalidate', 'Content-Length' => strlen($content), - 'Content-Type' => 'application/x-javascript; charset=UTF-8', + 'Content-Type' => 'application/x-javascript; charset=utf-8', ) ); $output = Minify::serve('Files', array( @@ -170,7 +170,7 @@ function test_Minify() // Test minifying CSS and responding with Etag/Last-Modified - Minify::setCache(); + Minify::setCache(null); // don't allow conditional headers unset($_SERVER['HTTP_IF_NONE_MATCH'], $_SERVER['HTTP_IF_MODIFIED_SINCE']); @@ -187,7 +187,7 @@ function test_Minify() 'ETag' => "\"pub{$lastModified}\"", 'Cache-Control' => 'max-age=0, public, must-revalidate', 'Content-Length' => strlen($expectedContent), - 'Content-Type' => 'text/css; charset=UTF-8', + 'Content-Type' => 'text/css; charset=utf-8', ) ); $output = Minify::serve('Files', array(