Difference between revisions of "Including simplelib in a Project"
m |
m (→Dofile Call) |
||
Line 2: | Line 2: | ||
The simplelib.lua file belongs in the lib/ subdirectory of the openeuo root directory. To use simplelib, include the following line at the top of the dependent script: | The simplelib.lua file belongs in the lib/ subdirectory of the openeuo root directory. To use simplelib, include the following line at the top of the dependent script: | ||
− | local sl = dofile(getinstalldir()..' | + | local sl = dofile(getinstalldir()..'lib/simplelib.lua') |
That's all it takes to begin using simplelib. This initializes the library and assigns its interface to the local variable sl. In order to avoid usage errors, the interface is a special table which guards against user modification. Attempting to add new keys to the table or referencing non-existent keys will result in an error. | That's all it takes to begin using simplelib. This initializes the library and assigns its interface to the local variable sl. In order to avoid usage errors, the interface is a special table which guards against user modification. Attempting to add new keys to the table or referencing non-existent keys will result in an error. |
Revision as of 11:19, 24 November 2010
Contents
Dofile Call
The simplelib.lua file belongs in the lib/ subdirectory of the openeuo root directory. To use simplelib, include the following line at the top of the dependent script:
local sl = dofile(getinstalldir()..'lib/simplelib.lua')
That's all it takes to begin using simplelib. This initializes the library and assigns its interface to the local variable sl. In order to avoid usage errors, the interface is a special table which guards against user modification. Attempting to add new keys to the table or referencing non-existent keys will result in an error.
Version
You can check the version of simplelib with the interface method slversion():
local v = sl.slversion()
Version will always be a monotonically increasing real number.
A Note on the Object Model
See Programming in Lua -- Private Objects to understand the employed object model. Objects are implemented as closures, so the colon calling syntax typically seen in object oriented lua code e.g. object:method() is never valid to use with simplelib objects or tables. Just use the dot operator, e.g. object.method(). This applies to the object returned by the initial dofile call, as well.
Further, private metatables are set on all interfaces to deny any accidental deletion and overwriting and to raise errors if invocation is attempted on non-existent (or misspelled) methods. For this reason bulk importation of the library names into the _G environment is discouraged as control and capture of logical errors is diminished.
Intermediary Library Authors
Calling dofile() on simplelib.lua multiple times is unnecessary but will cause no harm unless the global environment guard variable simple_lib_soliton__ is overwritten. That's the only value/variable defined by simplelib in _G (or other calling environment) by default. Calling simple_lib_soliton__ returns the unique interface table of simplelib.