2
0
Эх сурвалжийг харах

JsonPrinter do not add pretty newlines for empty objects and arrays

Dan Korostelev 11 жил өмнө
parent
commit
5dbad3783b

+ 20 - 17
std/haxe/format/JsonPrinter.hx

@@ -58,23 +58,22 @@ class JsonPrinter {
 			else if( c == Array ) {
 			else if( c == Array ) {
 				var v : Array<Dynamic> = v;
 				var v : Array<Dynamic> = v;
 				addChar('['.code);
 				addChar('['.code);
-				nind++;
+
 				var len = v.length;
 				var len = v.length;
-				if( len > 0 ) {
+				var last = len - 1;
+				for (i in 0...len)
+				{
+					if (i > 0) addChar(','.code) else nind++;
 					newl();
 					newl();
 					ipad();
 					ipad();
-					write(0, v[0]);
-					var i = 1;
-					while( i < len ) {
-						addChar(','.code);
+					write(i, v[i]);
+					if (i == last)
+					{
+						nind--;
 						newl();
 						newl();
 						ipad();
 						ipad();
-						write(i, v[i++]);
 					}
 					}
 				}
 				}
-				nind--;
-				newl();
-				ipad();
 				addChar(']'.code);
 				addChar(']'.code);
 			} else if( c == haxe.ds.StringMap ) {
 			} else if( c == haxe.ds.StringMap ) {
 				var v : haxe.ds.StringMap<Dynamic> = v;
 				var v : haxe.ds.StringMap<Dynamic> = v;
@@ -129,23 +128,27 @@ class JsonPrinter {
 	}
 	}
 
 
 	function fieldsString( v : Dynamic, fields : Array<String> ) {
 	function fieldsString( v : Dynamic, fields : Array<String> ) {
-		var first = true;
 		addChar('{'.code);
 		addChar('{'.code);
-		nind++;
-		for( f in fields ) {
+		var len = fields.length;
+		var last = len - 1;
+		for( i in 0...len ) {
+			var f = fields[i];
 			var value = Reflect.field(v,f);
 			var value = Reflect.field(v,f);
 			if( Reflect.isFunction(value) ) continue;
 			if( Reflect.isFunction(value) ) continue;
-			if( first ) first = false else addChar(','.code);
+			if( i > 0 ) addChar(','.code) else nind++;
 			newl();
 			newl();
 			ipad();
 			ipad();
 			quote(f);
 			quote(f);
 			addChar(':'.code);
 			addChar(':'.code);
 			if (pretty) addChar(' '.code);
 			if (pretty) addChar(' '.code);
 			write(f, value);
 			write(f, value);
+			if (i == last)
+			{
+				nind--;
+				newl();
+				ipad();
+			}
 		}
 		}
-		nind--;
-		newl();
-		ipad();
 		addChar('}'.code);
 		addChar('}'.code);
 	}
 	}