Software /
code /
prosody
Changeset
5020:ef1eb65acbba
util.envload: New module to abstract Lua 5.1's setfenv and Lua 5.2's load
author | Florian Zeitz <florob@babelmonkeys.de> |
---|---|
date | Thu, 07 Jun 2012 23:27:26 +0200 |
parents | 4923:760a1f367f02 |
children | 5021:85b2689dbcfe |
files | util/envload.lua |
diffstat | 1 files changed, 34 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /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 };