changeset 1518:f989778ca9e1

stringify, json_string
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 19 Jun 2020 17:50:25 -0600
parents 04615093b19d
children 3ebf9781707c
files src/goodjava/json/JsonToString.java src/luan/modules/parsers/LuanToString.java
diffstat 2 files changed, 15 insertions(+), 27 deletions(-) [+]
line wrap: on
line diff
--- a/src/goodjava/json/JsonToString.java	Tue Jun 09 12:36:16 2020 -0600
+++ b/src/goodjava/json/JsonToString.java	Fri Jun 19 17:50:25 2020 -0600
@@ -8,9 +8,6 @@
 public final class JsonToString {
 	public boolean compressed = false;
 
-	private String colon;
-	private String comma;
-
 	public static final class JsonException extends RuntimeException {
 		private JsonException(String msg) {
 			super(msg);
@@ -18,8 +15,6 @@
 	}
 
 	public String toString(Object obj) throws JsonException {
-		colon = compressed ? ":" : ": ";
-		comma = compressed ? "," : ", ";
 		StringBuilder sb = new StringBuilder();
 		toString(obj,sb,0);
 		if( !compressed )
@@ -123,7 +118,8 @@
 			toString(list.get(0),sb,indented+1);
 			final int n = list.size();
 			for( int i=1; i<n; i++ ) {
-				sb.append(comma);
+				sb.append(',');
+				indent(sb,indented+1);
 				toString(list.get(i),sb,indented+1);
 			}
 			indent(sb,indented);
@@ -153,7 +149,7 @@
 		if( !(key instanceof String) )
 			throw new JsonException("table keys must be strings but got "+key.getClass().getSimpleName()+" ("+key+"="+entry.getValue()+")");
 		toString((String)key,sb);
-		sb.append(colon);
+		sb.append( compressed ? ":" : ": " );
 		toString(entry.getValue(),sb,indented);
 	}
 
--- 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' );