changeset 1580:2975c932864d

require options
author Franklin Schmidt <fschmidt@gmail.com>
date Wed, 10 Feb 2021 23:56:59 -0700
parents dd881eb03d87
children dbf63bef4b86
files src/luan/Luan.java src/luan/impl/Compiled.java src/luan/impl/LuanParser.java src/luan/modules/Boot.luan src/luan/modules/PackageLuan.java src/luan/modules/http/LuanHandler.java
diffstat 6 files changed, 18 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/src/luan/Luan.java	Wed Feb 10 22:49:47 2021 -0700
+++ b/src/luan/Luan.java	Wed Feb 10 23:56:59 2021 -0700
@@ -158,7 +158,11 @@
 	}
 
 	public Object require(String modName) throws LuanException {
-		return PackageLuan.require(this,modName);
+		return require(modName,null);
+	}
+
+	public Object require(String modName,LuanTable options) throws LuanException {
+		return PackageLuan.require(this,modName,options);
 	}
 
 	public String luanToString(Object obj) throws LuanException {
--- a/src/luan/impl/Compiled.java	Wed Feb 10 22:49:47 2021 -0700
+++ b/src/luan/impl/Compiled.java	Wed Feb 10 23:56:59 2021 -0700
@@ -133,7 +133,7 @@
 	}
 
 
-	private static final int VERSION = 6;
+	private static final int VERSION = 7;
 	private static final File tmpDir;
 	static {
 		File f = new File(System.getProperty("java.io.tmpdir"));
--- a/src/luan/impl/LuanParser.java	Wed Feb 10 22:49:47 2021 -0700
+++ b/src/luan/impl/LuanParser.java	Wed Feb 10 23:56:59 2021 -0700
@@ -387,7 +387,7 @@
 		if( exprs == null )
 			return null;
 		Stmts stmt = new Stmts();
-		stmt.add( "Luan.checkFunction(luan.index(PackageLuan.require(luan,\"luan:Io.luan\"),\"template_write\")).call(luan," );
+		stmt.add( "Luan.checkFunction(luan.index(luan.require(\"luan:Io.luan\"),\"template_write\")).call(luan," );
 		stmt.addAll( exprs.array() );
 		stmt.add( ");  " );
 		return stmt;
--- a/src/luan/modules/Boot.luan	Wed Feb 10 22:49:47 2021 -0700
+++ b/src/luan/modules/Boot.luan	Wed Feb 10 23:56:59 2021 -0700
@@ -244,8 +244,8 @@
 Boot.uri = uri
 
 
-function Boot.read(uri_str)  -- for PackageLuan.java
-	local u = uri(uri_str)
+function Boot.read(uri_str,options)  -- for PackageLuan.java
+	local u = uri(uri_str,options)
 	if u==nil or not u.exists() then
 		return nil
 	end
--- a/src/luan/modules/PackageLuan.java	Wed Feb 10 22:49:47 2021 -0700
+++ b/src/luan/modules/PackageLuan.java	Wed Feb 10 23:56:59 2021 -0700
@@ -21,7 +21,7 @@
 		LuanFunction fn = (LuanFunction)luan.registry().get("Package.require");
 		if( fn == null ) {
 			try {
-				fn = new LuanJavaFunction(PackageLuan.class.getMethod("require",Luan.class,String.class),null);
+				fn = new LuanJavaFunction(PackageLuan.class.getMethod("require",Luan.class,String.class,LuanTable.class),null);
 			} catch(NoSuchMethodException e) {
 				throw new RuntimeException(e);
 			}
@@ -39,18 +39,18 @@
 		return map;
 	}
 
-	public static Object require(Luan luan,String modName) throws LuanException {
+	public static Object require(Luan luan,String modName,LuanTable options) throws LuanException {
 		if( "java".equals(modName) ) {
 			JavaLuan.java(luan);
 			return true;
 		}
-		Object mod = load(luan,modName);
+		Object mod = load(luan,modName,options);
 		if( mod.equals(Boolean.FALSE) )
 			throw new LuanException( "module '"+modName+"' not found" );
 		return mod;
 	}
 
-	public static Object load(Luan luan,String modName) throws LuanException {
+	public static Object load(Luan luan,String modName,LuanTable options) throws LuanException {
 		Map loaded = loaded(luan);
 		Object mod = loaded.get(modName);
 		if( mod == null ) {
@@ -74,7 +74,7 @@
 				if( mod == null )
 					mod = Boolean.FALSE;
 			} else {
-				String src = read(luan,modName);
+				String src = read(luan,modName,options);
 				if( src == null ) {
 					mod = Boolean.FALSE;
 				} else {
@@ -95,7 +95,7 @@
 		return mod;
 	}
 
-	static String read(Luan luan,String uri) {
+	static String read(Luan luan,String uri,LuanTable options) {
 		LuanTable boot;
 		try {
 			boot = (LuanTable)luan.require("luan:Boot.luan");
@@ -104,7 +104,7 @@
 		}
 		Luan.Security security = Luan.setSecurity(luan,null);
 		try {
-			return (String)Luan.first(boot.fn("read").call(luan,uri));
+			return (String)Luan.first(boot.fn("read").call(luan,uri,options));
 		} catch(LuanException e) {
 			return null;
 		} finally {
--- a/src/luan/modules/http/LuanHandler.java	Wed Feb 10 22:49:47 2021 -0700
+++ b/src/luan/modules/http/LuanHandler.java	Wed Feb 10 23:56:59 2021 -0700
@@ -90,7 +90,7 @@
 		}
 		LuanLogger.startThreadLogging(luan);
 		try {
-			PackageLuan.load(luan,"site:/init.luan");
+			PackageLuan.load(luan,"site:/init.luan",null);
 		} catch(LuanException e) {
 			//e.printStackTrace();
 			String err = e.getLuanStackTraceString();
@@ -259,7 +259,7 @@
 		Luan luan;
 		synchronized(currentLuan) {
  			currentLuan.require("luan:http/Http.luan");
-			Object mod = PackageLuan.load(currentLuan,modName);
+			Object mod = PackageLuan.load(currentLuan,modName,null);
 			if( mod.equals(Boolean.FALSE) )
 				return null;
 			if( !(mod instanceof LuanFunction) )