comparison src/luan/modules/parsers/LuanToString.java @ 1562:b89212fd04b5

remove table.luan
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 08 Nov 2020 16:50:59 -0700
parents 83249ce59d13
children 8fbcc4747091
comparison
equal deleted inserted replaced
1561:e1a13e707bf3 1562:b89212fd04b5
17 public boolean numberTypes = false; 17 public boolean numberTypes = false;
18 public boolean compressed = false; 18 public boolean compressed = false;
19 public boolean longStrings = false; 19 public boolean longStrings = false;
20 public boolean inline = false; 20 public boolean inline = false;
21 21
22 void applyOptions(LuanTable options) throws LuanException { 22 void applyOptions(Luan luan,LuanTable options) throws LuanException {
23 Boolean b; 23 Boolean b;
24 b = (Boolean)options.get("strict"); 24 b = (Boolean)options.get(luan,"strict");
25 if( b != null ) 25 if( b != null )
26 strict = b; 26 strict = b;
27 b = (Boolean)options.get("number_types"); 27 b = (Boolean)options.get(luan,"number_types");
28 if( b != null ) 28 if( b != null )
29 numberTypes = b; 29 numberTypes = b;
30 b = (Boolean)options.get("compressed"); 30 b = (Boolean)options.get(luan,"compressed");
31 if( b != null ) 31 if( b != null )
32 compressed = b; 32 compressed = b;
33 b = (Boolean)options.get("long_strings"); 33 b = (Boolean)options.get(luan,"long_strings");
34 if( b != null ) 34 if( b != null )
35 longStrings = b; 35 longStrings = b;
36 b = (Boolean)options.get("inline"); 36 b = (Boolean)options.get(luan,"inline");
37 if( b != null ) 37 if( b != null )
38 inline = b; 38 inline = b;
39 } 39 }
40 40
41 public Settings cloneSettings() { 41 public Settings cloneSettings() {
60 throw new LuanException("options values must be boolean"); 60 throw new LuanException("options values must be boolean");
61 } 61 }
62 } 62 }
63 63
64 public final Settings settingsInit = new Settings(); 64 public final Settings settingsInit = new Settings();
65 private final Luan luan;
65 private final LuanTable subOptions; 66 private final LuanTable subOptions;
66 67
67 public LuanToString(LuanTable options,LuanTable subOptions) throws LuanException { 68 public LuanToString(Luan luan,LuanTable options,LuanTable subOptions) throws LuanException {
69 this.luan = luan;
68 this.subOptions = subOptions; 70 this.subOptions = subOptions;
69 if( options != null ) { 71 if( options != null ) {
70 checkOptions(options); 72 checkOptions(options);
71 settingsInit.applyOptions(options); 73 settingsInit.applyOptions(luan,options);
72 } 74 }
73 if( subOptions != null ) { 75 if( subOptions != null ) {
74 for( Map.Entry entry : subOptions.iterable() ) { 76 for( Map.Entry entry : subOptions.iterable() ) {
75 /* 77 /*
76 if( !(entry.getKey() instanceof String) ) 78 if( !(entry.getKey() instanceof String) )
179 toString( key, sb, indented, keySettings ); 181 toString( key, sb, indented, keySettings );
180 sb.append( ']' ); 182 sb.append( ']' );
181 } 183 }
182 sb.append( settings.compressed ? "=" : " = " ); 184 sb.append( settings.compressed ? "=" : " = " );
183 if( subOptions != null ) { 185 if( subOptions != null ) {
184 LuanTable options = (LuanTable)subOptions.get(key); 186 LuanTable options = (LuanTable)subOptions.get(luan,key);
185 if( options != null ) { 187 if( options != null ) {
186 settings = settings.cloneSettings(); 188 settings = settings.cloneSettings();
187 settings.applyOptions(options); 189 settings.applyOptions(luan,options);
188 } 190 }
189 } 191 }
190 toString( entry.getValue(), sb, indented, settings ); 192 toString( entry.getValue(), sb, indented, settings );
191 } 193 }
192 194
205 sb.append( Luan.toString(n) ); 207 sb.append( Luan.toString(n) );
206 if( settings.numberTypes ) 208 if( settings.numberTypes )
207 sb.append( ')' ); 209 sb.append( ')' );
208 } 210 }
209 211
210 public static void addNumberTypes(LuanTable env) { 212 public static void addNumberTypes(Luan luan,LuanTable env) {
211 try { 213 try {
212 LuanTable module = (LuanTable)env.luan().require("luan:Number.luan"); 214 LuanTable module = (LuanTable)luan.require("luan:Number.luan");
213 env.put( "double", module.fn("double") ); 215 env.put( luan, "double", module.fn(luan,"double") );
214 env.put( "float", module.fn("float") ); 216 env.put( luan, "float", module.fn(luan,"float") );
215 env.put( "integer", module.fn("integer") ); 217 env.put( luan, "integer", module.fn(luan,"integer") );
216 env.put( "long", module.fn("long") ); 218 env.put( luan, "long", module.fn(luan,"long") );
217 } catch(LuanException e) { 219 } catch(LuanException e) {
218 throw new LuanRuntimeException(e); 220 throw new LuanRuntimeException(e);
219 } 221 }
220 } 222 }
221 223