Package com.prineside.luaj.lib
Class PackageLib
- All Implemented Interfaces:
com.esotericsoftware.kryo.KryoSerializable
public class PackageLib
extends TwoArgFunction
implements com.esotericsoftware.kryo.KryoSerializable
Subclass of
LibFunction
which implements the lua standard package and module
library functions.
Lua Environment Variables
The following variables are available to lua scrips when this library has been loaded:"package.loaded"
Lua table of loaded modules."package.path"
Search path for lua scripts."package.preload"
Lua table of uninitialized preload functions."package.searchers"
Lua table of functions that search for object to load.
Java Environment Variables
These Java environment variables affect the library behavior:"luaj.package.path"
Initial value for"package.path"
. Default value is"?.lua"
Loading
Typically, this library is included as part of a call to either
Globals globals = JsePlatform.standardGlobals();
System.out.println( globals.get("require").call"foo") );
To instantiate and use it directly,
link it into your globals table via LuaValue.load(LuaValue)
using code such as:
Globals globals = new Globals();
globals.load(new JseBaseLib());
globals.load(new PackageLib());
System.out.println( globals.get("require").call("foo") );
Limitations
This library has been implemented to match as closely as possible the behavior in the corresponding library in C. However, the default filesystem search semantics are different and delegated to the bas library- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
Called last Converts package name to class name and tries to create new instance of this class, casting it to LuaValue (will fail if not instance of LuaValue)static class
static class
Called second Calls _G.package.searchpath(name, _G.package.path) and then globals.loadfile() if foundstatic class
Called first Searches in preloaded packages (_G.package.preload table)static class
require (modname) Loads the given module.static class
Nested classes/interfaces inherited from class com.prineside.luaj.LuaValue
LuaValue.NillableSerializer, LuaValue.None
Nested classes/interfaces inherited from class com.prineside.luaj.Varargs
Varargs.ArrayVarargs
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String
The default value to use for package.path.Loader that loads as a Java class.Loader that loads as a lua script using the lua path currently inLoader that loads frompreload
table if found thereFields inherited from class com.prineside.luaj.LuaFunction
s_metatable
Fields inherited from class com.prineside.luaj.LuaValue
ADD, CALL, CONCAT, DIV, EMPTYSTRING, ENV, EQ, FALSE, INDEX, LE, LEN, LT, METATABLE, MINUSONE, MOD, MODE, MUL, NEWINDEX, NIL, NILLABLE_SERIALIZER, NILS, NONE, NOVALS, ONE, POW, SUB, TBOOLEAN, TFUNCTION, TINT, TLIGHTUSERDATA, TNIL, TNONE, TNUMBER, TOSTRING, TRUE, TSTRING, TTABLE, TTHREAD, TUSERDATA, TVALUE, TYPE_NAMES, UNM, ZERO
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionPerform one-time initialization on the library by adding package functions to the supplied environment, and returning it as the return value.void
read
(com.esotericsoftware.kryo.Kryo kryo, com.esotericsoftware.kryo.io.Input input) void
setIsLoaded
(String name, LuaTable value) Allow packages to mark themselves as loadedvoid
setLuaPath
(String newLuaPath) Set the lua path used by this library instance to a new value.static String
toClassname
(String filename) Convert lua filename to valid class nameConvert to human readable String for any type.void
write
(com.esotericsoftware.kryo.Kryo kryo, com.esotericsoftware.kryo.io.Output output) Methods inherited from class com.prineside.luaj.lib.TwoArgFunction
call, call, call, invoke
Methods inherited from class com.prineside.luaj.lib.LibFunction
call
Methods inherited from class com.prineside.luaj.LuaFunction
checkfunction, classnamestub, getmetatable, isfunction, name, optfunction, strvalue, type, typename
Methods inherited from class com.prineside.luaj.LuaValue
add, add, add, and, arg, arg1, argerror, assert_, buffer, call, cBool, cDouble, cFloat, checkboolean, checkclosure, checkdouble, checkglobals, checkint, checkjstring, checklong, checknotnil, checknumber, checknumber, checkstring, checktable, checkthread, checkuserdata, checkuserdata, cInt, cNcDouble, cNcFloat, cNcInt, cObject, comparemt, concat, concat, concatmt, concatTo, concatTo, concatTo, cRegObject, cVarargs, cVarargs, cVarargs, cVarargs, cVarargs, cVarargs, cVarargs, cVarargs, div, div, div, divInto, eq, eq_b, eqmtcall, equals, error, get, get, get, gt, gt, gt, gt_b, gt_b, gt_b, gteq, gteq, gteq, gteq_b, gteq_b, gteq_b, inext, initupvalue1, invoke, invoke, invoke, invokemethod, invokemethod, invokemethod, invokemethod, isboolean, isclosure, isint, isinttype, islong, isnil, isnumber, isRegObject, isstring, istable, isthread, isuserdata, isuserdata, isvalidkey, len, length, listOf, listOf, load, lt, lt, lt, lt_b, lt_b, lt_b, lteq, lteq, lteq, lteq_b, lteq_b, lteq_b, markAsConst, metatag, method, method, method, method, method, method, mod, mod, mod, modFrom, mul, mul, mul, narg, neg, neq, neq_b, next, not, onInvoke, optboolean, optclosure, optdouble, optint, optjstring, optlong, optnumber, optstring, opttable, optthread, optuserdata, optuserdata, optvalue, or, pow, pow, pow, powWith, powWith, presize, raweq, raweq, raweq, raweq, raweq, rawget, rawget, rawget, rawlen, rawset, rawset, rawset, rawset, rawset, rawset, rawset, rawsetlist, set, set, set, set, set, set, set, setmetatable, strcmp, strcmp, strongvalue, sub, sub, sub, subargs, subFrom, subFrom, tableOf, tableOf, tableOf, tableOf, tableOf, tableOf, tailcallOf, testfor_b, toboolean, tobyte, tochar, todouble, tofloat, toint, tolong, tonumber, toshort, tostring, toString, touserdata, touserdata, userdataOf, userdataOf, valueOf, valueOf, valueOf, valueOf, valueOf, valueOf
Methods inherited from class com.prineside.luaj.Varargs
argcheck, checkboolean, checkclosure, checkdouble, checkfunction, checkint, checkjstring, checklong, checknotnil, checknumber, checkstring, checktable, checkthread, checkuserdata, checkuserdata, checkvalue, dealias, eval, isfunction, isnil, isnoneornil, isnumber, isstring, istable, isTailcall, isthread, isuserdata, isvalue, optboolean, optclosure, optdouble, optfunction, optint, optjstring, optlong, optnumber, optstring, opttable, optthread, optuserdata, optuserdata, optvalue, toboolean, tobyte, tochar, todouble, tofloat, toint, tojstring, tolong, toshort, touserdata, touserdata, type
-
Field Details
-
DEFAULT_LUA_PATH
The default value to use for package.path.- See Also:
-
preload_searcher
Loader that loads frompreload
table if found there -
lua_searcher
Loader that loads as a lua script using the lua path currently in -
java_searcher
Loader that loads as a Java class. Class must have public constructor and be a LuaValue.
-
-
Constructor Details
-
PackageLib
public PackageLib()
-
-
Method Details
-
write
public void write(com.esotericsoftware.kryo.Kryo kryo, com.esotericsoftware.kryo.io.Output output) - Specified by:
write
in interfacecom.esotericsoftware.kryo.KryoSerializable
- Overrides:
write
in classLibFunction
-
read
public void read(com.esotericsoftware.kryo.Kryo kryo, com.esotericsoftware.kryo.io.Input input) - Specified by:
read
in interfacecom.esotericsoftware.kryo.KryoSerializable
- Overrides:
read
in classLibFunction
-
call
Perform one-time initialization on the library by adding package functions to the supplied environment, and returning it as the return value. It also creates the package.preload and package.loaded tables for use by other libraries.- Specified by:
call
in classTwoArgFunction
- Parameters:
modname
- the module name supplied if this is loaded via 'require'.env
- the environment to load into, typically a Globals instance.- Returns:
- First return value
(this(arg1,arg2))
, orLuaValue.NIL
if there were none. - See Also:
-
setIsLoaded
Allow packages to mark themselves as loaded -
setLuaPath
Set the lua path used by this library instance to a new value. Merely sets the value of to be used in subsequent searches. -
tojstring
Description copied from class:LuaValue
Convert to human readable String for any type.- Overrides:
tojstring
in classLibFunction
- Returns:
- String for use by human readers based on type.
- See Also:
-
toClassname
Convert lua filename to valid class name
-