Mercurial Hosting > luan
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 } |