util.envload: New module to abstract Lua 5.1's setfenv and Lua 5.2's load
authorFlorian Zeitz <florob@babelmonkeys.de>
Thu, 07 Jun 2012 23:27:26 +0200
changeset 5020 ef1eb65acbba
parent 4923 760a1f367f02
child 5021 85b2689dbcfe
util.envload: New module to abstract Lua 5.1's setfenv and Lua 5.2's load
util/envload.lua
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/util/envload.lua	Thu Jun 07 23:27:26 2012 +0200
@@ -0,0 +1,34 @@
+-- Prosody IM
+-- Copyright (C) 2008-2011 Florian Zeitz
+--
+-- This project is MIT/X11 licensed. Please see the
+-- COPYING file in the source package for more information.
+--
+
+local load, loadstring, loadfile, setfenv = load, loadstring, loadfile, setfenv;
+local envload;
+local envloadfile;
+
+if setfenv then
+	function envload(code, source, env)
+		local f, err = loadstring(code, source);
+		if f and env then setfenv(f, env); end
+		return f, err;
+	end
+
+	function envloadfile(file, env)
+		local f, err = loadfile(file);
+		if f and env then setfenv(f, env); end
+		return f, err;
+	end
+else
+	function envload(code, source, env)
+		return load(code, source, nil, env);
+	end
+
+	function envloadfile(file, env)
+		return loadfile(file, nil, env);
+	end
+end
+
+return { envload = envload, envloadfile = envloadfile };