diff --git a/createphar.php b/createphar.php new file mode 100644 index 0000000..50cf31d --- /dev/null +++ b/createphar.php @@ -0,0 +1,55 @@ +isFile() && $file->getFilename() != ".." && $file->getFilename() != ".") { + $pathBefore = substr($file->getPath(), 0, strlen($dir)); + $pathAfter = substr($file->getPath(), strlen($dir) + 1); + $pathTo = "\\" . $suffix . ($pathAfter !== false ? ($pathAfter . "\\") : "") . $file->getFilename(); + $phar->addFromString($pathTo, file_get_contents($file->getPath() . "/" . $file->getFilename())); + } + } + } + + if (isset($composer["require"])) { + while(list($library, $ver) = each($composer["require"])) { + if (file_exists($dirName . "\\vendor\\" . $library)) { + $dir = $dirName . "\\vendor\\" . $library; + $rp = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir)); + } + foreach ($rp as $file) { + if ($file->isFile() && $file->getFilename() != ".." && $file->getFilename() != ".") { + $pathBefore = substr($file->getPath(), 0, strlen($dir)); + $pathAfter = substr($file->getPath(), strlen($dir) + 1); + $pathTo = "\\" . $suffix . ($pathAfter !== false ? ($pathAfter . "\\") : "") . $file->getFilename(); + $phar->addFromString($pathTo, file_get_contents($file->getPath() . "/" . $file->getFilename())); + } + } + } + } + + $stubSource = "addFromString("TMLoader.php", $stubSource); + $phar->setStub($phar->createDefaultStub('TMLoader.php')); diff --git a/grinfeld_phpjsonable.phar b/grinfeld_phpjsonable.phar new file mode 100644 index 0000000..84663cf Binary files /dev/null and b/grinfeld_phpjsonable.phar differ diff --git a/src/parsers/json/Reader.php b/src/parsers/json/Reader.php index 179e40e..f6a685c 100644 --- a/src/parsers/json/Reader.php +++ b/src/parsers/json/Reader.php @@ -221,11 +221,15 @@ private function parseMap(&$m) { } else if ($c != self::SPACE_CHAR && $c != self::TAB_CHAR && $c != "\r" && $c != "\n") { $sb = ""; // searching key + $prevC = $c; do { if ($c === false) throw new \Exception("Reached end of stream - un-parsed data"); - if ($c != self::ELEM_DELIM && $c != "\r" && $c != "\n") + if ($prevC == "\\" && $c == "\\") { + + } else if ($c != self::ELEM_DELIM && $c != "\r" && $c != "\n") $sb = $sb . $c; + $prevC = $c; } while (false !== ($c = $this->in->nextChar()) && $c != self::VALUE_DELIM); $key = trim($sb); if (self::startsWith($key, self::CHAR_CHAR) || self::startsWith($key, self::STRING_CHAR))