namibia
df0489e1eeeeab5a9bd44e1d84fce49924fe1bac
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
<?php /** * Class Minify_YUICompressor * @package Minify */ /** * Compress Javascript/CSS using the YUI Compressor * * You must set $jarFile and $tempDir before calling the minify functions. * Also, depending on your shell's environment, you may need to specify * the full path to java in $javaExecutable or use putenv() to setup the * Java environment. * * <code> * Minify_YUICompressor::$jarFile = '/path/to/yuicompressor-2.4.6.jar'; * Minify_YUICompressor::$tempDir = '/tmp'; * $code = Minify_YUICompressor::minifyJs( * $code * ,array('nomunge' => true, 'line-break' => 1000) * ); * </code> * * Note: In case you run out stack (default is 512k), you may increase stack size in $options: * array('stack-size' => '2048k') * * @todo unit tests, $options docs * * @package Minify * @author Stephen Clay <steve@mrclay.org> */ class Minify_YUICompressor { /** * Filepath of the YUI Compressor jar file. This must be set before * calling minifyJs() or minifyCss(). * * @var string */ public static $jarFile = null; /** * Writable temp directory. This must be set before calling minifyJs() * or minifyCss(). * * @var string */ public static $tempDir = null; /** * Filepath of "java" executable (may be needed if not in shell's PATH) * * @var string */ public static $javaExecutable = 'java'; /** * Minify a Javascript string * * @param string $js * * @param array $options (verbose is ignored) * * @see http://www.julienlecomte.net/yuicompressor/README * * @return string */ public static function minifyJs($js, $options = array()) { return self::_minify('js', $js, $options); } /** * Minify a CSS string * * @param string $css * * @param array $options (verbose is ignored) * * @see http://www.julienlecomte.net/yuicompressor/README * * @return string */ public static function minifyCss($css, $options = array()) { return self::_minify('css', $css, $options); } private static function _minify($type, $content, $options) { self::_prepare(); if (! ($tmpFile = tempnam(self::$tempDir, 'yuic_'))) { throw new Exception('Minify_YUICompressor : could not create temp file.'); } file_put_contents($tmpFile, $content); exec(self::_getCmd($options, $type, $tmpFile), $output, $result_code); unlink($tmpFile); if ($result_code != 0) { throw new Exception('Minify_YUICompressor : YUI compressor execution failed.'); } return implode("\n", $output); } private static function _getCmd($userOptions, $type, $tmpFile) { $o = array_merge( array( 'charset' => '' ,'line-break' => 5000 ,'type' => $type ,'nomunge' => false ,'preserve-semi' => false ,'disable-optimizations' => false ,'stack-size' => '' ) ,$userOptions ); $cmd = self::$javaExecutable . (!empty($o['stack-size']) ? ' -Xss' . $o['stack-size'] : '') . ' -jar ' . escapeshellarg(self::$jarFile) . " --type {$type}" . (preg_match('/^[\\da-zA-Z0-9\\-]+$/', $o['charset']) ? " --charset {$o['charset']}" : '') . (is_numeric($o['line-break']) && $o['line-break'] >= 0 ? ' --line-break ' . (int)$o['line-break'] : ''); if ($type === 'js') { foreach (array('nomunge', 'preserve-semi', 'disable-optimizations') as $opt) { $cmd .= $o[$opt] ? " --{$opt}" : ''; } } return $cmd . ' ' . escapeshellarg($tmpFile); } private static function _prepare() { if (! is_file(self::$jarFile)) { throw new Exception('Minify_YUICompressor : $jarFile('.self::$jarFile.') is not a valid file.'); } if (! is_readable(self::$jarFile)) { throw new Exception('Minify_YUICompressor : $jarFile('.self::$jarFile.') is not readable.'); } if (! is_dir(self::$tempDir)) { throw new Exception('Minify_YUICompressor : $tempDir('.self::$tempDir.') is not a valid direcotry.'); } if (! is_writable(self::$tempDir)) { throw new Exception('Minify_YUICompressor : $tempDir('.self::$tempDir.') is not writable.'); } } } |
Commits for namibiapublic/min/lib/Minify/YUICompressor.php
Revision | Author | Commited | Message |
---|---|---|---|
df0489 ... | Mark | Fri 14 Oct, 2016 10:01:00 +0000 | initial commit |