mirror of
https://github.com/CCLeonOS/LeonOS.git
synced 2026-03-03 15:01:12 +00:00
添加 LeonOS 的基本实现,包括: - 核心 API 模块(colors, disk, gps, keys, multishell, parallel, rednet, redstone, settings, vector) - 命令行程序(about, alias, bg, clear, copy, delete, edit, fg, help, list, lua, mkdir, move, paint, peripherals, programs, reboot, set, shutdown, threads) - 系统启动脚本和包管理 - 文档(README.md, LICENSE) - 开发工具(devbin)和更新程序 实现功能: - 完整的线程管理系统 - 兼容 ComputerCraft 的 API 设计 - 改进的 shell 和命令补全系统 - 多标签终端支持 - 设置管理系统
51 lines
1.2 KiB
Lua
51 lines
1.2 KiB
Lua
-- cc.expect
|
|
|
|
local _expect = {}
|
|
|
|
local function checkType(index, valueType, value, ...)
|
|
local expected = table.pack(...)
|
|
local isType = false
|
|
|
|
for i=1, expected.n, 1 do
|
|
if type(value) == expected[i] then
|
|
isType = true
|
|
break
|
|
end
|
|
end
|
|
|
|
if not isType then
|
|
error(string.format("bad %s %s (%s expected, got %s)", valueType,
|
|
index, table.concat(expected, " or "), type(value)), 3)
|
|
end
|
|
|
|
return value
|
|
end
|
|
|
|
function _expect.expect(index, value, ...)
|
|
return checkType(("#%d"):format(index), "argument", value, ...)
|
|
end
|
|
|
|
function _expect.field(tbl, index, ...)
|
|
_expect.expect(1, tbl, "table")
|
|
_expect.expect(2, index, "string")
|
|
return checkType(("%q"):format(index), "field", tbl[index], ...)
|
|
end
|
|
|
|
function _expect.range(num, min, max)
|
|
_expect.expect(1, num, "number")
|
|
_expect.expect(2, min, "number", "nil")
|
|
_expect.expect(3, max, "number", "nil")
|
|
min = min or -math.huge
|
|
max = max or math.huge
|
|
if num < min or num > max then
|
|
error(("number outside of range (expected %d to be within %d and %d")
|
|
:format(num, min, max), 2)
|
|
end
|
|
end
|
|
|
|
setmetatable(_expect, {__call = function(_, ...)
|
|
return _expect.expect(...)
|
|
end})
|
|
|
|
return _expect
|