local M = {}
local function parse_major_minor(s)
if type(s) ~= "string" then
return nil, nil
end
local major, minor = string.match(s, "(%d+)%.(%d+)")
if major == nil then
return nil, nil
end
return tonumber(major), tonumber(minor)
end
local function luajit_version(jit)
local vn = jit.version_num
if type(vn) == "number" then
local major = math.floor(vn / 10000)
local minor = math.floor((vn % 10000) / 100)
return 200 + major * 10 + minor
end
local major, minor = parse_major_minor(jit.version)
if major ~= nil then
return 200 + major * 10 + minor
end
return 221
end
local function lua_version()
local major, minor = parse_major_minor(_VERSION)
if major ~= nil then
return 100 + major * 10 + minor
end
return 151
end
function M.get()
local jit = rawget(_G, "jit")
if jit ~= nil then
return luajit_version(jit)
end
return lua_version()
end
return M