comparison src/luan/modules/StringLuan.java @ 1563:8fbcc4747091

remove LuanFunction.luan
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 09 Nov 2020 01:37:57 -0700
parents b89212fd04b5
children f7e2df85fc0a
comparison
equal deleted inserted replaced
1562:b89212fd04b5 1563:8fbcc4747091
127 127
128 public static LuanFunction gmatch(String s,String pattern) throws LuanException { 128 public static LuanFunction gmatch(String s,String pattern) throws LuanException {
129 Utils.checkNotNull(s); 129 Utils.checkNotNull(s);
130 Utils.checkNotNull(pattern,2); 130 Utils.checkNotNull(pattern,2);
131 final Matcher m = Pattern.compile(pattern).matcher(s); 131 final Matcher m = Pattern.compile(pattern).matcher(s);
132 return new LuanFunction(false) { 132 return new LuanFunction() {
133 @Override public Object call(Object[] args) { 133 @Override public Object call(Luan luan,Object[] args) {
134 if( !m.find() ) 134 if( !m.find() )
135 return null; 135 return null;
136 final int n = m.groupCount(); 136 final int n = m.groupCount();
137 if( n == 0 ) 137 if( n == 0 )
138 return m.group(); 138 return m.group();
166 StringBuffer sb = new StringBuffer(); 166 StringBuffer sb = new StringBuffer();
167 while( i<max && m.find() ) { 167 while( i<max && m.find() ) {
168 String match = m.groupCount()==0 ? m.group() : m.group(1); 168 String match = m.groupCount()==0 ? m.group() : m.group(1);
169 Object val = t.get(luan,match); 169 Object val = t.get(luan,match);
170 if( val != null ) { 170 if( val != null ) {
171 String replacement = Luan.luanToString(val); 171 String replacement = luan.luanToString(val);
172 m.appendReplacement(sb,replacement); 172 m.appendReplacement(sb,replacement);
173 } 173 }
174 i++; 174 i++;
175 } 175 }
176 m.appendTail(sb); 176 m.appendTail(sb);
189 args = new String[count]; 189 args = new String[count];
190 for( int j=0; j<count; j++ ) { 190 for( int j=0; j<count; j++ ) {
191 args[j] = m.group(j+1); 191 args[j] = m.group(j+1);
192 } 192 }
193 } 193 }
194 Object val = Luan.first( fn.call(args) ); 194 Object val = Luan.first( fn.call(luan,args) );
195 if( val != null ) { 195 if( val != null ) {
196 String replacement = Luan.luanToString(val); 196 String replacement = luan.luanToString(val);
197 m.appendReplacement(sb,replacement); 197 m.appendReplacement(sb,replacement);
198 } 198 }
199 i++; 199 i++;
200 } 200 }
201 m.appendTail(sb); 201 m.appendTail(sb);