From 974ceffa4ca945c530e6438a807116a6af891267 Mon Sep 17 00:00:00 2001 From: Steve Clay Date: Sun, 29 Mar 2009 22:57:35 +0000 Subject: [PATCH] JSMin.php : trimmed output, better exception messages Removed unnecessary wrapper Minify_Javascript --- min/lib/JSMin.php | 9 ++-- min/lib/Minify/Controller/Base.php | 2 +- min/lib/Minify/Controller/Page.php | 4 +- min/lib/Minify/Javascript.php | 31 ----------- min/lib/Minify/Packer.php | 6 +-- min_extras/tools/minifyFile.php | 4 +- min_unit_tests/test_JSMin.php | 63 +++++++++++++++++++++++ min_unit_tests/test_Minify.php | 2 +- min_unit_tests/test_Minify_HTML.php | 6 +-- min_unit_tests/test_Minify_Javascript.php | 35 ------------- min_unit_tests/test_MyMin.php | 23 --------- min_unit_tests/test_all.php | 2 +- 12 files changed, 81 insertions(+), 106 deletions(-) delete mode 100644 min/lib/Minify/Javascript.php create mode 100644 min_unit_tests/test_JSMin.php delete mode 100644 min_unit_tests/test_Minify_Javascript.php delete mode 100644 min_unit_tests/test_MyMin.php diff --git a/min/lib/JSMin.php b/min/lib/JSMin.php index 6fc9992..770e1c6 100644 --- a/min/lib/JSMin.php +++ b/min/lib/JSMin.php @@ -119,6 +119,7 @@ class JSMin { } $this->action($command); } + $this->output = trim($this->output); return $this->output; } @@ -136,7 +137,7 @@ class JSMin { case self::ACTION_DELETE_A: $this->a = $this->b; if ($this->a === "'" || $this->a === '"') { // string literal - $str = ''; // in case needed for exception + $str = $this->a; // in case needed for exception while (true) { $this->output .= $this->a; $this->a = $this->get(); @@ -145,7 +146,7 @@ class JSMin { } if (ord($this->a) <= self::ORD_LF) { throw new JSMin_UnterminatedStringException( - 'Contents: ' . var_export($str, true)); + 'Unterminated String: ' . var_export($str, true)); } $str .= $this->a; if ($this->a === '\\') { @@ -172,7 +173,7 @@ class JSMin { $pattern .= $this->a; } elseif (ord($this->a) <= self::ORD_LF) { throw new JSMin_UnterminatedRegExpException( - 'Contents: '. var_export($pattern, true)); + 'Unterminated RegExp: '. var_export($pattern, true)); } $this->output .= $this->a; } @@ -284,7 +285,7 @@ class JSMin { return ' '; } } elseif ($get === null) { - throw new JSMin_UnterminatedCommentException('Contents: ' . var_export($comment, true)); + throw new JSMin_UnterminatedCommentException('Unterminated Comment: ' . var_export('/*' . $comment, true)); } $comment .= $get; } diff --git a/min/lib/Minify/Controller/Base.php b/min/lib/Minify/Controller/Base.php index 6520a9b..20b1ce3 100644 --- a/min/lib/Minify/Controller/Base.php +++ b/min/lib/Minify/Controller/Base.php @@ -71,7 +71,7 @@ abstract class Minify_Controller_Base { * @return array minifier callbacks for common types */ public function getDefaultMinifers() { - $ret[Minify::TYPE_JS] = array('Minify_Javascript', 'minify'); + $ret[Minify::TYPE_JS] = array('JSMin', 'minify'); $ret[Minify::TYPE_CSS] = array('Minify_CSS', 'minify'); $ret[Minify::TYPE_HTML] = array('Minify_HTML', 'minify'); return $ret; diff --git a/min/lib/Minify/Controller/Page.php b/min/lib/Minify/Controller/Page.php index b1ff9fd..2773bbb 100644 --- a/min/lib/Minify/Controller/Page.php +++ b/min/lib/Minify/Controller/Page.php @@ -52,7 +52,7 @@ class Minify_Controller_Page extends Minify_Controller_Base { // this will be the 2nd argument passed to Minify_HTML::minify() $sourceSpec['minifyOptions'] = array( 'cssMinifier' => array('Minify_CSS', 'minify') - ,'jsMinifier' => array('Minify_Javascript', 'minify') + ,'jsMinifier' => array('JSMin', 'minify') ); $this->_loadCssJsMinifiers = true; unset($options['minifyAll']); @@ -77,7 +77,7 @@ class Minify_Controller_Page extends Minify_Controller_Base { // Minify will not call for these so we must manually load // them when Minify/HTML.php is called for. require 'Minify/CSS.php'; - require 'Minify/Javascript.php'; + require 'JSMin.php'; } parent::loadMinifier($minifierCallback); // load Minify/HTML.php } diff --git a/min/lib/Minify/Javascript.php b/min/lib/Minify/Javascript.php deleted file mode 100644 index c372f9e..0000000 --- a/min/lib/Minify/Javascript.php +++ /dev/null @@ -1,31 +0,0 @@ - - */ -class Minify_Javascript { - - /** - * Minify a Javascript string - * - * @param string $js - * - * @param array $options available options (none currently) - * - * @return string - */ - public static function minify($js, $options = array()) - { - return trim(JSMin::minify($js)); - } -} - diff --git a/min/lib/Minify/Packer.php b/min/lib/Minify/Packer.php index 380689b..949c3ee 100644 --- a/min/lib/Minify/Packer.php +++ b/min/lib/Minify/Packer.php @@ -7,9 +7,9 @@ * include_path). * @link http://joliclic.free.fr/php/javascript-packer/en/ * - * Be aware that, as long as HTTP encoding is used, scripts minified - * with Minify_Javascript (JSMin) will provide better client-side - * performance, as they need not be unpacked in client-side code. + * Be aware that, as long as HTTP encoding is used, scripts minified with JSMin + * will provide better client-side performance, as they need not be unpacked in + * client-side code. * * @package Minify */ diff --git a/min_extras/tools/minifyFile.php b/min_extras/tools/minifyFile.php index 6644f1f..3b4e691 100644 --- a/min_extras/tools/minifyFile.php +++ b/min_extras/tools/minifyFile.php @@ -8,7 +8,7 @@ if (isset($_FILES['subject']['name']) // easier to just require them all require 'Minify/HTML.php'; require 'Minify/CSS.php'; - require 'Minify/Javascript.php'; + require 'JSMin.php'; $arg2 = null; switch ($m[1]) { @@ -24,7 +24,7 @@ if (isset($_FILES['subject']['name']) $type = 'HTML'; $arg2 = array( 'cssMinifier' => array('Minify_CSS', 'minify') - ,'jsMinifier' => array('Minify_Javascript', 'minify') + ,'jsMinifier' => array('JSMin', 'minify') ); } $func = array('Minify_' . $type, 'minify'); diff --git a/min_unit_tests/test_JSMin.php b/min_unit_tests/test_JSMin.php new file mode 100644 index 0000000..56d07a2 --- /dev/null +++ b/min_unit_tests/test_JSMin.php @@ -0,0 +1,63 @@ +getMessage(); + } + $passed = assertTrue($eClass === $expClass && $eMsg === $expMessage, + 'JSMin : throw on ' . $label); + if (! $passed && __FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) { + echo "\n ---" , $e, "\n\n"; + } +} + +test_JSMin(); diff --git a/min_unit_tests/test_Minify.php b/min_unit_tests/test_Minify.php index b377dd1..4e92ad6 100644 --- a/min_unit_tests/test_Minify.php +++ b/min_unit_tests/test_Minify.php @@ -63,7 +63,7 @@ function test_Minify() $expected = array( 'success' => true ,'statusCode' => 200 - // Minify_Javascript always converts to \n line endings + // JSMin always converts to \n line endings ,'content' => $content ,'headers' => array ( 'Expires' => gmdate('D, d M Y H:i:s \G\M\T', $tomorrow), diff --git a/min_unit_tests/test_Minify_HTML.php b/min_unit_tests/test_Minify_HTML.php index 1159044..69aeff5 100644 --- a/min_unit_tests/test_Minify_HTML.php +++ b/min_unit_tests/test_Minify_HTML.php @@ -3,7 +3,7 @@ require_once '_inc.php'; require_once 'Minify/HTML.php'; require_once 'Minify/CSS.php'; -require_once 'Minify/Javascript.php'; +require_once 'JSMin.php'; function test_HTML() { @@ -15,7 +15,7 @@ function test_HTML() $time = microtime(true); $minOutput = Minify_HTML::minify($src, array( 'cssMinifier' => array('Minify_CSS', 'minify') - ,'jsMinifier' => array('Minify_Javascript', 'minify') + ,'jsMinifier' => array('JSMin', 'minify') )); $time = microtime(true) - $time; @@ -38,7 +38,7 @@ function test_HTML() $time = microtime(true); $minOutput = Minify_HTML::minify($src, array( 'cssMinifier' => array('Minify_CSS', 'minify') - ,'jsMinifier' => array('Minify_Javascript', 'minify') + ,'jsMinifier' => array('JSMin', 'minify') )); $time = microtime(true) - $time; diff --git a/min_unit_tests/test_Minify_Javascript.php b/min_unit_tests/test_Minify_Javascript.php deleted file mode 100644 index 33b8a0e..0000000 --- a/min_unit_tests/test_Minify_Javascript.php +++ /dev/null @@ -1,35 +0,0 @@ -