Welcome to mirror list, hosted at ThFree Co, Russian Federation.

init.lua « pl « lua - github.com/stevedonovan/Penlight.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: b7f84a28ba11ae0c1cdbb4171e9b7610a76525d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
--------------
-- entry point for loading all PL libraries only on demand.
-- Requiring 'pl' means that whenever a module is accesssed (e.g. utils.split)
-- then that module is dynamically loaded. The submodules are all brought into
-- the global space.
-- @class module
-- @name pl

local modules = {
    utils = true,path=true,dir=true,tablex=true,stringio=true,sip=true,
    input=true,seq=true,lexer=true,stringx=true,
    config=true,pretty=true,data=true,func=true,text=true,
    operator=true,lapp=true,array2d=true,
    comprehension=true,
    test = true, app = true, file = true, class = true, List = true,
    Map = true, Set = true, OrderedMap = true, MultiMap = true,
    Date = true,
    -- classes --
}
utils = require 'pl.utils'

for name,klass in pairs(utils.stdmt) do
    klass.__index = function(t,key)
        return require ('pl.'..name)[key]
    end;
end

local _hook
setmetatable(_G,{
    hook = function(handler)
        _hook = handler
    end,
    __index = function(t,name)
        local found = modules[name]
        -- either true, or the name of the module containing this class.
        -- either way, we load the required module and make it globally available.
        if found then
            -- e..g pretty.dump causes pl.pretty to become available as 'pretty'
            rawset(_G,name,require('pl.'..name))
            return _G[name]
        elseif _hook then
            return _hook(t,name)
        end
    end
})

if PENLIGHT_STRICT then require 'pl.strict' end