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