mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2024-06-24 22:23:21 +00:00
![SquidDev](/assets/img/avatar_default.png)
We now use illuaminate[1]'s linting facilities to check the rom and bios.lua for a couple of common bugs and other problems. Right now this doesn't detect any especially important bugs, though it has caught lots of small things (unused variables, some noisy code). In the future, the linter will grow in scope and features, which should allow us to be stricter and catch most issues. As a fun aside, we started off with ~150 bugs, and illuaminate was able to fix all but 30 of them, which is pretty neat. [1]: https://github.com/SquidDev/illuaminate
61 lines
1.7 KiB
Lua
61 lines
1.7 KiB
Lua
local expect = dofile("rom/modules/main/cc/expect.lua").expect
|
|
|
|
local native = term.native and term.native() or term
|
|
local redirectTarget = native
|
|
|
|
local function wrap( _sFunction )
|
|
return function( ... )
|
|
return redirectTarget[ _sFunction ]( ... )
|
|
end
|
|
end
|
|
|
|
local term = {}
|
|
|
|
term.redirect = function( target )
|
|
expect(1, target, "table")
|
|
if target == term or target == _G.term then
|
|
error( "term is not a recommended redirect target, try term.current() instead", 2 )
|
|
end
|
|
for k,v in pairs( native ) do
|
|
if type( k ) == "string" and type( v ) == "function" then
|
|
if type( target[k] ) ~= "function" then
|
|
target[k] = function()
|
|
error( "Redirect object is missing method "..k..".", 2 )
|
|
end
|
|
end
|
|
end
|
|
end
|
|
local oldRedirectTarget = redirectTarget
|
|
redirectTarget = target
|
|
return oldRedirectTarget
|
|
end
|
|
|
|
term.current = function()
|
|
return redirectTarget
|
|
end
|
|
|
|
term.native = function()
|
|
-- NOTE: please don't use this function unless you have to.
|
|
-- If you're running in a redirected or multitasked enviorment, term.native() will NOT be
|
|
-- the current terminal when your program starts up. It is far better to use term.current()
|
|
return native
|
|
end
|
|
|
|
-- Some methods shouldn't go through redirects, so we move them to the main
|
|
-- term API.
|
|
for _, method in ipairs { "nativePaletteColor", "nativePaletteColour"} do
|
|
term[method] = native[method]
|
|
native[method] = nil
|
|
end
|
|
|
|
for k,v in pairs( native ) do
|
|
if type( k ) == "string" and type( v ) == "function" and term[k] == nil then
|
|
term[k] = wrap( k )
|
|
end
|
|
end
|
|
|
|
local env = _ENV
|
|
for k,v in pairs( term ) do
|
|
env[k] = v
|
|
end
|