comparison core/src/luan/modules/StringLuan.java @ 572:f1601a4ce1aa

fix stack when calling meta-methods
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 12 Jul 2015 21:34:23 -0600
parents e25ba7a2e816
children 6cc2f047019b
comparison
equal deleted inserted replaced
571:cd944b010f25 572:f1601a4ce1aa
166 LuanTable t = (LuanTable)repl; 166 LuanTable t = (LuanTable)repl;
167 int i = 0; 167 int i = 0;
168 StringBuffer sb = new StringBuffer(); 168 StringBuffer sb = new StringBuffer();
169 while( i<max && m.find() ) { 169 while( i<max && m.find() ) {
170 String match = m.groupCount()==0 ? m.group() : m.group(1); 170 String match = m.groupCount()==0 ? m.group() : m.group(1);
171 Object val = t.get(luan,match); 171 Object val = t.get(luan.JAVA,match);
172 if( val != null ) { 172 if( val != null ) {
173 String replacement = luan.toString(val); 173 String replacement = luan.JAVA.toString(val);
174 m.appendReplacement(sb,replacement); 174 m.appendReplacement(sb,replacement);
175 } 175 }
176 i++; 176 i++;
177 } 177 }
178 m.appendTail(sb); 178 m.appendTail(sb);
193 args[j] = m.group(j+1); 193 args[j] = m.group(j+1);
194 } 194 }
195 } 195 }
196 Object val = Luan.first( luan.call(fn,"repl-arg",args) ); 196 Object val = Luan.first( luan.call(fn,"repl-arg",args) );
197 if( val != null ) { 197 if( val != null ) {
198 String replacement = luan.toString(val); 198 String replacement = luan.JAVA.toString(val);
199 m.appendReplacement(sb,replacement); 199 m.appendReplacement(sb,replacement);
200 } 200 }
201 i++; 201 i++;
202 } 202 }
203 m.appendTail(sb); 203 m.appendTail(sb);
212 } 212 }
213 213
214 public static String concat(LuanState luan,Object... args) throws LuanException { 214 public static String concat(LuanState luan,Object... args) throws LuanException {
215 StringBuilder sb = new StringBuilder(); 215 StringBuilder sb = new StringBuilder();
216 for( Object arg : args ) { 216 for( Object arg : args ) {
217 sb.append( luan.toString(arg) ); 217 sb.append( luan.JAVA.toString(arg) );
218 } 218 }
219 return sb.toString(); 219 return sb.toString();
220 } 220 }
221 221
222 public static String encode(String s) { 222 public static String encode(String s) {