comparison 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
comparison
equal deleted inserted replaced
1549:41c32da4cbd1 1550:0dc3be25ad20
10 10
11 public final class LuanToString { 11 public final class LuanToString {
12 public boolean strict = false; 12 public boolean strict = false;
13 public boolean numberTypes = false; 13 public boolean numberTypes = false;
14 public boolean compressed = false; 14 public boolean compressed = false;
15 public boolean useLongStrings = false;
15 16
16 public String toString(Object obj) throws LuanException { 17 public String toString(Object obj) throws LuanException {
17 StringBuilder sb = new StringBuilder(); 18 StringBuilder sb = new StringBuilder();
18 toString(obj,sb,0); 19 toString(obj,sb,0);
19 return sb.toString(); 20 return sb.toString();
31 if( obj instanceof Number ) { 32 if( obj instanceof Number ) {
32 toString((Number)obj,sb); 33 toString((Number)obj,sb);
33 return; 34 return;
34 } 35 }
35 if( obj instanceof String ) { 36 if( obj instanceof String ) {
36 sb.append( '"' ); 37 toString((String)obj,sb);
37 sb.append( Luan.stringEncode((String)obj) );
38 sb.append( '"' );
39 return; 38 return;
40 } 39 }
41 if( obj instanceof LuanTable ) { 40 if( obj instanceof LuanTable ) {
42 toString((LuanTable)obj,sb,indented); 41 toString((LuanTable)obj,sb,indented);
43 return; 42 return;
118 env.put( "long", module.fn("long") ); 117 env.put( "long", module.fn("long") );
119 } catch(LuanException e) { 118 } catch(LuanException e) {
120 throw new LuanRuntimeException(e); 119 throw new LuanRuntimeException(e);
121 } 120 }
122 } 121 }
122
123 private void toString(String s,StringBuilder sb) {
124 if( useLongStrings && s.indexOf('\n') != -1 ) {
125 StringBuilder start = new StringBuilder("[[\n");
126 StringBuilder end = new StringBuilder("]]");
127 while( s.contains(end) ) {
128 start.insert(1,'=');
129 end.insert(1,'=');
130 }
131 sb.append(start);
132 sb.append(s);
133 sb.append(end);
134 return;
135 }
136 sb.append( '"' );
137 sb.append( Luan.stringEncode(s) );
138 sb.append( '"' );
139 }
140
123 } 141 }