mirror of
https://github.com/linux-man/LoveFrames.git
synced 2024-11-26 05:14:21 +00:00
68 lines
1.3 KiB
Lua
68 lines
1.3 KiB
Lua
local module_path = ...
|
|
module_path = module_path:match("^(.-)init$") or (module_path .. '.')
|
|
|
|
local ffi_enabled, ffi = pcall(require, 'ffi')
|
|
|
|
local utf8 = {
|
|
config = {},
|
|
default = {
|
|
debug = nil,
|
|
logger = io.write,
|
|
loadstring = (loadstring or load),
|
|
unpack = (unpack or table.unpack),
|
|
cache = {
|
|
regex = setmetatable({},{
|
|
__mode = 'kv'
|
|
}),
|
|
plain = setmetatable({},{
|
|
__mode = 'kv'
|
|
}),
|
|
},
|
|
locale = nil,
|
|
int32array = function(size)
|
|
if ffi_enabled then
|
|
return ffi.new("uint32_t[?]", size + 1)
|
|
else
|
|
return {}
|
|
end
|
|
end
|
|
},
|
|
regex = {
|
|
compiletime = {
|
|
charclass = {},
|
|
begins = {},
|
|
ends = {},
|
|
modifier = {},
|
|
}
|
|
},
|
|
util = {},
|
|
}
|
|
|
|
function utf8:require(name)
|
|
local full_module_path = module_path .. name
|
|
if package.loaded[full_module_path] then
|
|
return package.loaded[full_module_path]
|
|
end
|
|
|
|
local mod = require(full_module_path)
|
|
if type(mod) == 'function' then
|
|
mod = mod(self)
|
|
package.loaded[full_module_path] = mod
|
|
end
|
|
return mod
|
|
end
|
|
|
|
function utf8:init()
|
|
for k, v in pairs(self.default) do
|
|
self.config[k] = self.config[k] or v
|
|
end
|
|
|
|
self:require "util"
|
|
self:require "primitives.init"
|
|
self:require "functions.lua53"
|
|
|
|
return self
|
|
end
|
|
|
|
return utf8
|