Ver Fonte

Fix formatting and make pretty-printing optional

Jordi Boggiano há 13 anos atrás
pai
commit
bfe28905d0
1 ficheiros alterados com 13 adições e 7 exclusões
  1. 13 7
      src/Composer/Json/JsonFile.php

+ 13 - 7
src/Composer/Json/JsonFile.php

@@ -75,8 +75,9 @@ class JsonFile
      * Writes json file.
      *
      * @param   array   $hash   writes hash into json file
+     * @param Boolean $prettyPrint If true, output is pretty-printed
      */
-    public function write(array $hash)
+    public function write(array $hash, $prettyPrint = true)
     {
         $dir = dirname($this->path);
         if (!is_dir($dir)) {
@@ -91,26 +92,31 @@ class JsonFile
                 );
             }
         }
-        file_put_contents($this->path, $this->encode($hash));
+        file_put_contents($this->path, $this->encode($hash, $prettyPrint));
     }
 
     /**
-     * Indents a flat JSON string to make it more human-readable
+     * Encodes an array into (optionally pretty-printed) JSON
      *
      * Original code for this function can be found at:
      *  http://recursive-design.com/blog/2008/03/11/format-json-with-php/
      *
      * @param array $hash Data to encode into a formatted JSON string
+     * @param Boolean $prettyPrint If true, output is pretty-printed
      * @return string Indented version of the original JSON string
      */
-    public function encode(array $hash)
+    public function encode(array $hash, $prettyPrint = true)
     {
-        if (defined('JSON_PRETTY_PRINT')) {
+        if ($prettyPrint && defined('JSON_PRETTY_PRINT')) {
             return json_encode($hash, JSON_PRETTY_PRINT);
         }
 
         $json = json_encode($hash);
 
+        if (!$prettyPrint) {
+            return $json;
+        }
+
         $result = '';
         $pos = 0;
         $strLen = strlen($json);
@@ -126,10 +132,10 @@ class JsonFile
             // Are we inside a quoted string?
             if ('"' === $char && '\\' !== $prevChar) {
                 $outOfQuotes = !$outOfQuotes;
-            } else if (':' === $char && $outOfQuotes) {
+            } elseif (':' === $char && $outOfQuotes) {
                 // Add a space after the : character
                 $char .= ' ';
-            } else if (('}' === $char || ']' === $char) && $outOfQuotes) {
+            } elseif (('}' === $char || ']' === $char) && $outOfQuotes) {
                 $pos--;
 
                 if ('{' !== $prevChar && '[' !== $prevChar) {