private function _encodeKeywords($script)
 {
     // escape high-ascii values already in the script (i.e. in strings)
     if ($this->_encoding > 62) {
         $script = $this->_escape95($script);
     }
     // create the parser
     $parser = new ParseMaster();
     $encode = $this->_getEncoder($this->_encoding);
     // for high-ascii, don't encode single character low-ascii
     $regexp = $this->_encoding > 62 ? '/\\w\\w+/' : '/\\w+/';
     // build the word list
     $keywords = $this->_analyze($script, $regexp, $encode);
     $encoded = $keywords['encoded'];
     // encode
     $parser->add($regexp, array('fn' => '_replace_encoded', 'data' => $encoded));
     if (empty($script)) {
         return $script;
     } else {
         //$res = $parser->exec($script);
         //$res = $this->_bootStrap($res, $keywords);
         //return $res;
         return $this->_bootStrap($parser->exec($script), $keywords);
     }
 }
Esempio n. 2
0
 private function _basicCompression($script)
 {
     $parser = new ParseMaster();
     // make safe
     $parser->escapeChar = '\\';
     // protect strings
     $parser->add('/\'[^\'\\n\\r]*\'/', self::IGNORE);
     $parser->add('/"[^"\\n\\r]*"/', self::IGNORE);
     // remove comments
     $parser->add('/\\/\\/[^\\n\\r]*[\\n\\r]/', ' ');
     $parser->add('/\\/\\*[^*]*\\*+([^\\/][^*]*\\*+)*\\//', ' ');
     // protect regular expressions
     $parser->add('/\\s+(\\/[^\\/\\n\\r\\*][^\\/\\n\\r]*\\/g?i?)/', '$2');
     // IGNORE
     $parser->add('/[^\\w\\x24\\/\'"*)\\?:]\\/[^\\/\\n\\r\\*][^\\/\\n\\r]*\\/g?i?/', self::IGNORE);
     // remove redundant semi-colons
     $parser->add('/\\(;;\\)/', self::IGNORE);
     // protect for (;;) loops
     $parser->add('/;+\\s*([};])/', '$2');
     // apply the above
     $script = $parser->exec($script);
     // remove white-space
     $parser->add('/(\\b|\\x24)\\s+(\\b|\\x24)/', '$2 $3');
     $parser->add('/([+\\-])\\s+([+\\-])/', '$2 $3');
     $parser->add('/\\s+/', '');
     // done
     return $parser->exec($script);
 }