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); } }
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); }