Mercurial Hosting > luan
comparison core/src/luan/modules/IoLuan.java @ 462:2e79b47d02a2
remove all command line options;
add add_extension boolean arg to scheme fns;
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Wed, 06 May 2015 16:54:20 -0600 |
parents | 5b36f663a1b8 |
children | f1601a4ce1aa |
comparison
equal
deleted
inserted
replaced
461:e12841f7edef | 462:2e79b47d02a2 |
---|---|
490 public static LuanTable string(LuanState luan,String s) throws LuanException { | 490 public static LuanTable string(LuanState luan,String s) throws LuanException { |
491 Utils.checkNotNull(luan,s); | 491 Utils.checkNotNull(luan,s); |
492 return new LuanString(s).table(); | 492 return new LuanString(s).table(); |
493 } | 493 } |
494 | 494 |
495 public static LuanTable file(LuanState luan,String name) throws LuanException { | 495 public static LuanTable file(LuanState luan,String name,Boolean addExtension) throws LuanException { |
496 if( addExtension != null && addExtension ) | |
497 name += ".luan"; | |
496 File file = new File(name); | 498 File file = new File(name); |
497 return new LuanFile(file).table(); | 499 return new LuanFile(file).table(); |
498 } | 500 } |
499 | 501 |
500 public static LuanTable classpath(LuanState luan,String name) throws LuanException { | 502 public static LuanTable classpath(LuanState luan,String name,Boolean addExtension) throws LuanException { |
501 if( name.contains("//") ) | 503 if( name.contains("//") ) |
502 return null; | 504 return null; |
505 if( addExtension != null && addExtension ) | |
506 name += ".luan"; | |
503 String path = name; | 507 String path = name; |
504 check(luan,"classpath:"+path); | 508 check(luan,"classpath:"+path); |
505 URL url; | 509 URL url; |
506 if( !path.contains("#") ) { | 510 if( !path.contains("#") ) { |
507 url = ClassLoader.getSystemResource(path); | 511 url = ClassLoader.getSystemResource(path); |
526 return new LuanUrl(url).table(); | 530 return new LuanUrl(url).table(); |
527 | 531 |
528 return null; | 532 return null; |
529 } | 533 } |
530 | 534 |
531 private static LuanTable url(String url) throws IOException { | 535 private static LuanTable url(String url,Boolean addExtension) throws IOException { |
536 if( addExtension != null && addExtension ) | |
537 url += ".luan"; | |
532 return new LuanUrl(new URL(url)).table(); | 538 return new LuanUrl(new URL(url)).table(); |
533 } | 539 } |
534 | 540 |
535 public static LuanTable http(String path) throws IOException { | 541 public static LuanTable http(String path,Boolean addExtension) throws IOException { |
536 return url("http:"+path); | 542 return url("http:"+path,addExtension); |
537 } | 543 } |
538 | 544 |
539 public static LuanTable https(String path) throws IOException { | 545 public static LuanTable https(String path,Boolean addExtension) throws IOException { |
540 return url("https:"+path); | 546 return url("https:"+path,addExtension); |
541 } | 547 } |
542 | 548 |
543 public static LuanTable luan(LuanState luan,String path) throws LuanException { | 549 public static LuanTable luan(LuanState luan,String path,Boolean addExtension) throws LuanException { |
544 return classpath( luan, "luan/modules/" + path ); | 550 return classpath( luan, "luan/modules/" + path, addExtension ); |
545 } | 551 } |
546 | 552 |
547 public static LuanTable stdin(LuanState luan) throws LuanException { | 553 public static LuanTable stdin(LuanState luan) throws LuanException { |
548 LuanTable io = (LuanTable)PackageLuan.require(luan,"luan:Io"); | 554 LuanTable io = (LuanTable)PackageLuan.require(luan,"luan:Io"); |
549 return (LuanTable)io.get(luan,"stdin"); | 555 return (LuanTable)io.get(luan,"stdin"); |
551 | 557 |
552 public static LuanTable newSchemes() { | 558 public static LuanTable newSchemes() { |
553 LuanTable schemes = new LuanTable(); | 559 LuanTable schemes = new LuanTable(); |
554 try { | 560 try { |
555 add( schemes, "string", LuanState.class, String.class ); | 561 add( schemes, "string", LuanState.class, String.class ); |
556 add( schemes, "file", LuanState.class, String.class ); | 562 add( schemes, "file", LuanState.class, String.class, Boolean.class ); |
557 add( schemes, "classpath", LuanState.class, String.class ); | 563 add( schemes, "classpath", LuanState.class, String.class, Boolean.class ); |
558 add( schemes, "socket", LuanState.class, String.class ); | 564 add( schemes, "socket", LuanState.class, String.class ); |
559 add( schemes, "http", String.class ); | 565 add( schemes, "http", String.class, Boolean.class ); |
560 add( schemes, "https", String.class ); | 566 add( schemes, "https", String.class, Boolean.class ); |
561 add( schemes, "luan", LuanState.class, String.class ); | 567 add( schemes, "luan", LuanState.class, String.class, Boolean.class ); |
562 add( schemes, "stdin", LuanState.class ); | 568 add( schemes, "stdin", LuanState.class ); |
563 } catch(NoSuchMethodException e) { | 569 } catch(NoSuchMethodException e) { |
564 throw new RuntimeException(e); | 570 throw new RuntimeException(e); |
565 } | 571 } |
566 return schemes; | 572 return schemes; |
574 if( t == null ) | 580 if( t == null ) |
575 return newSchemes(); | 581 return newSchemes(); |
576 return t; | 582 return t; |
577 } | 583 } |
578 | 584 |
579 public static LuanTable uri(LuanState luan,String name) throws LuanException { | 585 public static LuanTable uri(LuanState luan,String name,Boolean addExtension) throws LuanException { |
580 int i = name.indexOf(':'); | 586 int i = name.indexOf(':'); |
581 if( i == -1 ) | 587 if( i == -1 ) |
582 throw luan.exception( "invalid Io name '"+name+"', missing scheme" ); | 588 throw luan.exception( "invalid Io.uri name '"+name+"', missing scheme" ); |
583 String scheme = name.substring(0,i); | 589 String scheme = name.substring(0,i); |
584 String location = name.substring(i+1); | 590 String location = name.substring(i+1); |
585 LuanTable schemes = schemes(luan); | 591 LuanTable schemes = schemes(luan); |
586 LuanFunction opener = (LuanFunction)schemes.get(luan,scheme); | 592 LuanFunction opener = (LuanFunction)schemes.get(luan,scheme); |
587 if( opener == null ) | 593 if( opener == null ) |
588 throw luan.exception( "invalid scheme '"+scheme+"' in '"+name+"'" ); | 594 throw luan.exception( "invalid scheme '"+scheme+"' in '"+name+"'" ); |
589 return (LuanTable)Luan.first(luan.call(opener,"<open \""+name+"\">",new Object[]{location})); | 595 return (LuanTable)Luan.first(luan.call(opener,"<open \""+name+"\">",new Object[]{location,addExtension})); |
590 } | 596 } |
591 | 597 |
592 public static final class LuanSocket extends LuanIO { | 598 public static final class LuanSocket extends LuanIO { |
593 private final Socket socket; | 599 private final Socket socket; |
594 | 600 |