diff 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
line wrap: on
line diff
--- a/core/src/luan/modules/IoLuan.java	Wed May 06 14:51:23 2015 -0600
+++ b/core/src/luan/modules/IoLuan.java	Wed May 06 16:54:20 2015 -0600
@@ -492,14 +492,18 @@
 		return new LuanString(s).table();
 	}
 
-	public static LuanTable file(LuanState luan,String name) throws LuanException {
+	public static LuanTable file(LuanState luan,String name,Boolean addExtension) throws LuanException {
+		if( addExtension != null && addExtension )
+			name += ".luan";
 		File file = new File(name);
 		return new LuanFile(file).table();
 	}
 
-	public static LuanTable classpath(LuanState luan,String name) throws LuanException {
+	public static LuanTable classpath(LuanState luan,String name,Boolean addExtension) throws LuanException {
 		if( name.contains("//") )
 			return null;
+		if( addExtension != null && addExtension )
+			name += ".luan";
 		String path = name;
 		check(luan,"classpath:"+path);
 		URL url;
@@ -528,20 +532,22 @@
 		return null;
 	}
 
-	private static LuanTable url(String url) throws IOException {
+	private static LuanTable url(String url,Boolean addExtension) throws IOException {
+		if( addExtension != null && addExtension )
+			url += ".luan";
 		return new LuanUrl(new URL(url)).table();
 	}
 
-	public static LuanTable http(String path) throws IOException {
-		return url("http:"+path);
+	public static LuanTable http(String path,Boolean addExtension) throws IOException {
+		return url("http:"+path,addExtension);
 	}
 
-	public static LuanTable https(String path) throws IOException {
-		return url("https:"+path);
+	public static LuanTable https(String path,Boolean addExtension) throws IOException {
+		return url("https:"+path,addExtension);
 	}
 
-	public static LuanTable luan(LuanState luan,String path) throws LuanException {
-		return classpath( luan, "luan/modules/" + path );
+	public static LuanTable luan(LuanState luan,String path,Boolean addExtension) throws LuanException {
+		return classpath( luan, "luan/modules/" + path, addExtension );
 	}
 
 	public static LuanTable stdin(LuanState luan) throws LuanException {
@@ -553,12 +559,12 @@
 		LuanTable schemes = new LuanTable();
 		try {
 			add( schemes, "string", LuanState.class, String.class );
-			add( schemes, "file", LuanState.class, String.class );
-			add( schemes, "classpath", LuanState.class, String.class );
+			add( schemes, "file", LuanState.class, String.class, Boolean.class );
+			add( schemes, "classpath", LuanState.class, String.class, Boolean.class );
 			add( schemes, "socket", LuanState.class, String.class );
-			add( schemes, "http", String.class );
-			add( schemes, "https", String.class );
-			add( schemes, "luan", LuanState.class, String.class );
+			add( schemes, "http", String.class, Boolean.class );
+			add( schemes, "https", String.class, Boolean.class );
+			add( schemes, "luan", LuanState.class, String.class, Boolean.class );
 			add( schemes, "stdin", LuanState.class );
 		} catch(NoSuchMethodException e) {
 			throw new RuntimeException(e);
@@ -576,17 +582,17 @@
 		return t;
 	}
 
-	public static LuanTable uri(LuanState luan,String name) throws LuanException {
+	public static LuanTable uri(LuanState luan,String name,Boolean addExtension) throws LuanException {
 		int i = name.indexOf(':');
 		if( i == -1 )
-			throw luan.exception( "invalid Io name '"+name+"', missing scheme" );
+			throw luan.exception( "invalid Io.uri name '"+name+"', missing scheme" );
 		String scheme = name.substring(0,i);
 		String location = name.substring(i+1);
 		LuanTable schemes = schemes(luan);
 		LuanFunction opener = (LuanFunction)schemes.get(luan,scheme);
 		if( opener == null )
 			throw luan.exception( "invalid scheme '"+scheme+"' in '"+name+"'" );
-		return (LuanTable)Luan.first(luan.call(opener,"<open \""+name+"\">",new Object[]{location}));
+		return (LuanTable)Luan.first(luan.call(opener,"<open \""+name+"\">",new Object[]{location,addExtension}));
 	}
 
 	public static final class LuanSocket extends LuanIO {