diff src/luan/modules/parsers/LuanToString.java @ 1550:0dc3be25ad20

use_long_strings
author Franklin Schmidt <fschmidt@gmail.com>
date Sat, 03 Oct 2020 23:08:36 -0600
parents f989778ca9e1
children 46d4baaad64d
line wrap: on
line diff
--- a/src/luan/modules/parsers/LuanToString.java	Sat Oct 03 20:55:26 2020 -0600
+++ b/src/luan/modules/parsers/LuanToString.java	Sat Oct 03 23:08:36 2020 -0600
@@ -12,6 +12,7 @@
 	public boolean strict = false;
 	public boolean numberTypes = false;
 	public boolean compressed = false;
+	public boolean useLongStrings = false;
 
 	public String toString(Object obj) throws LuanException {
 		StringBuilder sb = new StringBuilder();
@@ -33,9 +34,7 @@
 			return;
 		}
 		if( obj instanceof String ) {
-			sb.append( '"' );
-			sb.append( Luan.stringEncode((String)obj) );
-			sb.append( '"' );
+			toString((String)obj,sb);
 			return;
 		}
 		if( obj instanceof LuanTable ) {
@@ -120,4 +119,23 @@
 			throw new LuanRuntimeException(e);
 		}
 	}
+
+	private void toString(String s,StringBuilder sb) {
+		if( useLongStrings && s.indexOf('\n') != -1 ) {
+			StringBuilder start = new StringBuilder("[[\n");
+			StringBuilder end = new StringBuilder("]]");
+			while( s.contains(end) ) {
+				start.insert(1,'=');
+				end.insert(1,'=');
+			}
+			sb.append(start);
+			sb.append(s);
+			sb.append(end);
+			return;
+		}
+		sb.append( '"' );
+		sb.append( Luan.stringEncode(s) );
+		sb.append( '"' );
+	}
+
 }