/**
  * Minify a CSS string
  * 
  * @param string $css
  * 
  * @param array $options To enable URL rewriting, set the value
  * for key 'prependRelativePath'.
  * 
  * @return string
  */
 protected static function _minify($css, $options)
 {
     // preserve empty comment after '>'
     // http://www.webdevout.net/css-hacks#in_css-selectors
     $css = preg_replace('/>\\/\\*\\s*\\*\\//', '>/*keep*/', $css);
     // preserve empty comment between property and value
     // http://css-discuss.incutio.com/?page=BoxModelHack
     $css = preg_replace('/\\/\\*\\s*\\*\\/\\s*:/', '/*keep*/:', $css);
     $css = preg_replace('/:\\s*\\/\\*\\s*\\*\\//', ':/*keep*/', $css);
     // apply callback to all valid comments (and strip out surrounding ws
     self::$_inHack = false;
     $css = preg_replace_callback('/\\s*\\/\\*([\\s\\S]*?)\\*\\/\\s*/', array('Minify_CSS', '_commentCB'), $css);
     // compress whitespace.
     $css = preg_replace('/\\s+/', ' ', $css);
     // leave needed comments
     $css = str_replace('/*keep*/', '/**/', $css);
     // remove ws around { }
     $css = preg_replace('/\\s*{\\s*/', '{', $css);
     $css = preg_replace('/;?\\s*}\\s*/', '}', $css);
     // remove ws between rules
     $css = preg_replace('/\\s*;\\s*/', ';', $css);
     // remove ws around urls
     $css = preg_replace('/url\\([\\s]*([^\\)]+?)[\\s]*\\)/', 'url($1)', $css);
     // remove ws between rules and colons
     $css = preg_replace('/\\s*([{;])\\s*([\\w\\-]+)\\s*:\\s*\\b/', '$1$2:', $css);
     // remove ws in selectors
     $css = preg_replace_callback('/(?:\\s*[^~>+,\\s]+\\s*[,>+~])+\\s*[^~>+,\\s]+{/', array('Minify_CSS', '_selectorsCB'), $css);
     // minimize hex colors
     $css = preg_replace('/([^=])#([a-f\\d])\\2([a-f\\d])\\3([a-f\\d])\\4([\\s;\\}])/i', '$1#$2$3$4$5', $css);
     $rewrite = false;
     if (isset($options['prependRelativePath'])) {
         self::$_tempPrepend = $options['prependRelativePath'];
         $rewrite = true;
     } elseif (isset($options['currentPath'])) {
         self::$_tempCurrentPath = $options['currentPath'];
         $rewrite = true;
     }
     if ($rewrite) {
         $css = preg_replace_callback('/@import ([\'"])(.*?)[\'"]\\s*;/', array('Minify_CSS', '_urlCB'), $css);
         $css = preg_replace_callback('/url\\(([^\\)]+)\\)/', array('Minify_CSS', '_urlCB'), $css);
     }
     self::$_tempPrepend = self::$_tempCurrentPath = '';
     return trim($css);
 }