diff src/luan/modules/parsers/LuanToString.java @ 1518:f989778ca9e1

stringify, json_string
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 19 Jun 2020 17:50:25 -0600
parents 6a24c8b33d6b
children 0dc3be25ad20
line wrap: on
line diff
--- a/src/luan/modules/parsers/LuanToString.java	Tue Jun 09 12:36:16 2020 -0600
+++ b/src/luan/modules/parsers/LuanToString.java	Fri Jun 19 17:50:25 2020 -0600
@@ -13,12 +13,7 @@
 	public boolean numberTypes = false;
 	public boolean compressed = false;
 
-	private String equal;
-	private String comma;
-
 	public String toString(Object obj) throws LuanException {
-		equal = compressed ? "=" : " = ";
-		comma = compressed ? "," : ", ";
 		StringBuilder sb = new StringBuilder();
 		toString(obj,sb,0);
 		return sb.toString();
@@ -58,23 +53,24 @@
 		List list = tbl.asList();
 		Map map = tbl.rawMap();
 		sb.append( '{' );
-		if( !list.isEmpty() ) {
+		boolean first = true;
+		for( Object obj : list ) {
 			if( !compressed )
 				indent(sb,indented+1);
-			toString(list.get(0),sb,indented+1);
-			final int n = list.size();
-			for( int i=1; i<n; i++ ) {
-				sb.append(comma);
-				toString(list.get(i),sb,indented+1);
-			}
+			else if( first )
+				first = false;
+			else
+				sb.append( ',' );
+			toString(obj,sb,indented+1);
 		}
-		boolean first = true;
 		for( Object obj : map.entrySet() ) {
 			Map.Entry entry = (Map.Entry)obj;
-			if( compressed && first )
+			if( !compressed )
+				indent(sb,indented+1);
+			else if( first )
 				first = false;
 			else
-				indent(sb,indented+1);
+				sb.append( ',' );
 			toString(entry,sb,indented+1);
 		}
 		if( !compressed && (!list.isEmpty() || !map.isEmpty()) )
@@ -92,15 +88,11 @@
 			toString( key, sb, indented );
 			sb.append( ']' );
 		}
-		sb.append( equal );
+		sb.append( compressed ? "=" : " = " );
 		toString( entry.getValue(), sb, indented );
 	}
 
 	private void indent(StringBuilder sb,int indented) {
-		if( compressed ) {
-			sb.append( comma );
-			return;
-		}
 		sb.append( '\n' );
 		for( int i=0; i<indented; i++ ) {
 			sb.append( '\t' );