comparison core/src/luan/modules/IoLuan.java @ 590:f050c30952c0

add Io.schemes.null
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 27 Aug 2015 08:35:03 -0600
parents 60c549d43988
children b4f3dbe1c6e3
comparison
equal deleted inserted replaced
589:97c8ae330efe 590:f050c30952c0
300 } 300 }
301 return tbl; 301 return tbl;
302 } 302 }
303 } 303 }
304 304
305 private static final LuanIO nullIO = new LuanIO() {
306 private final InputStream in = new InputStream() {
307 @Override public int read() {
308 return -1;
309 }
310 };
311 private final OutputStream out = new OutputStream() {
312 @Override public void write(int b) {}
313 };
314
315 @Override InputStream inputStream() {
316 return in;
317 }
318
319 @Override OutputStream outputStream() {
320 return out;
321 }
322
323 @Override public String to_string() {
324 return "<null>";
325 }
326
327 };
328
305 public static final class LuanString extends LuanIO { 329 public static final class LuanString extends LuanIO {
306 private String s; 330 private String s;
307 331
308 private LuanString(String s) { 332 private LuanString(String s) {
309 this.s = s; 333 this.s = s;
483 } catch(NoSuchMethodException e) { 507 } catch(NoSuchMethodException e) {
484 throw new RuntimeException(e); 508 throw new RuntimeException(e);
485 } 509 }
486 return tbl; 510 return tbl;
487 } 511 }
512 }
513
514 public static LuanTable null_() {
515 return nullIO.table();
488 } 516 }
489 517
490 public static LuanTable string(LuanState luan,String s) throws LuanException { 518 public static LuanTable string(LuanState luan,String s) throws LuanException {
491 Utils.checkNotNull(luan,s); 519 Utils.checkNotNull(luan,s);
492 return new LuanString(s).table(); 520 return new LuanString(s).table();
556 } 584 }
557 585
558 public static LuanTable newSchemes() { 586 public static LuanTable newSchemes() {
559 LuanTable schemes = new LuanTable(); 587 LuanTable schemes = new LuanTable();
560 try { 588 try {
589 schemes.rawPut( "null", new LuanJavaFunction(IoLuan.class.getMethod("null_"),null) );
561 add( schemes, "string", LuanState.class, String.class ); 590 add( schemes, "string", LuanState.class, String.class );
562 add( schemes, "file", LuanState.class, String.class, Boolean.class ); 591 add( schemes, "file", LuanState.class, String.class, Boolean.class );
563 add( schemes, "classpath", LuanState.class, String.class, Boolean.class ); 592 add( schemes, "classpath", LuanState.class, String.class, Boolean.class );
564 add( schemes, "socket", LuanState.class, String.class ); 593 add( schemes, "socket", LuanState.class, String.class );
565 add( schemes, "http", String.class, Boolean.class ); 594 add( schemes, "http", String.class, Boolean.class );