batteries/init.lua

93 lines
2.2 KiB
Lua

--[[
batteries for lua
if required as the "entire library" (ie by this file), puts everything into
global namespace by default as it'll presumably be commonly used
if not, several of the modules work as normal lua modules and return a table
for local-friendly use
the others that modify some global table can be talked into behaving as normal
lua modules as well by setting appropriate globals prior to inclusion
you can avoid modifying any global namespace by setting
BATTERIES_NO_GLOBALS = true
before requiring, then everything can be accessed as eg
batteries.table.stable_sort
]]
local path = ...
local function require_relative(p)
return require(table.concat({path, p}, "."))
end
if BATTERIES_NO_GLOBALS then
--define local tables for everything to go into
BATTERIES_MATH_MODULE = {}
BATTERIES_TABLE_MODULE = {}
BATTERIES_FUNCTIONAL_MODULE = {}
end
local _class = require_relative("class")
local _math = require_relative("math")
local _table = require_relative("table")
local _stable_sort = require_relative("stable_sort")
local _functional = require_relative("functional")
local _sequence = require_relative("sequence")
local _vec2 = require_relative("vec2")
local _vec3 = require_relative("vec3")
local _intersect = require_relative("intersect")
local _unique_mapping = require_relative("unique_mapping")
local _state_machine = require_relative("state_machine")
local _async = require_relative("async")
local _manual_gc = require_relative("manual_gc")
local _colour = require_relative("colour")
--export globally if required
if not BATTERIES_NO_GLOBALS then
class = _class
sequence = _sequence
vec2 = _vec2
vec3 = _vec3
intersect = _intersect
unique_mapping = _unique_mapping
state_machine = _state_machine
async = _async
manual_gc = _manual_gc
--support both spellings
colour = _colour
color = _colour
end
--either way, export to package registry
return {
class = _class,
math = _math,
table = _table,
stable_sort = _stable_sort,
functional = _functional,
sequence = _sequence,
vec2 = _vec2,
vec3 = _vec3,
intersect = _intersect,
unique_mapping = _unique_mapping,
state_machine = _state_machine,
async = _async,
manual_gc = _manual_gc,
colour = _colour,
}