summaryrefslogtreecommitdiff
path: root/lib/lua-term/term
diff options
context:
space:
mode:
Diffstat (limited to 'lib/lua-term/term')
-rw-r--r--lib/lua-term/term/colors.lua83
-rw-r--r--lib/lua-term/term/cursor.lua35
-rw-r--r--lib/lua-term/term/init.lua51
3 files changed, 169 insertions, 0 deletions
diff --git a/lib/lua-term/term/colors.lua b/lib/lua-term/term/colors.lua
new file mode 100644
index 00000000..76f8b2e0
--- /dev/null
+++ b/lib/lua-term/term/colors.lua
@@ -0,0 +1,83 @@
+-- Copyright (c) 2009 Rob Hoelz <rob@hoelzro.net>
+--
+-- Permission is hereby granted, free of charge, to any person obtaining a copy
+-- of this software and associated documentation files (the "Software"), to deal
+-- in the Software without restriction, including without limitation the rights
+-- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+-- copies of the Software, and to permit persons to whom the Software is
+-- furnished to do so, subject to the following conditions:
+--
+-- The above copyright notice and this permission notice shall be included in
+-- all copies or substantial portions of the Software.
+--
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+-- THE SOFTWARE.
+
+local pairs = pairs
+local tostring = tostring
+local setmetatable = setmetatable
+local schar = string.char
+
+local colors = {}
+
+local colormt = {}
+
+function colormt:__tostring()
+ return self.value
+end
+
+function colormt:__concat(other)
+ return tostring(self) .. tostring(other)
+end
+
+function colormt:__call(s)
+ return self .. s .. colors.reset
+end
+
+local function makecolor(value)
+ return setmetatable({ value = schar(27) .. '[' .. tostring(value) .. 'm' }, colormt)
+end
+
+local colorvalues = {
+ -- attributes
+ reset = 0,
+ clear = 0,
+ default = 0,
+ bright = 1,
+ dim = 2,
+ underscore = 4,
+ blink = 5,
+ reverse = 7,
+ hidden = 8,
+
+ -- foreground
+ black = 30,
+ red = 31,
+ green = 32,
+ yellow = 33,
+ blue = 34,
+ magenta = 35,
+ cyan = 36,
+ white = 37,
+
+ -- background
+ onblack = 40,
+ onred = 41,
+ ongreen = 42,
+ onyellow = 43,
+ onblue = 44,
+ onmagenta = 45,
+ oncyan = 46,
+ onwhite = 47,
+}
+
+for c, v in pairs(colorvalues) do
+ colors[c] = makecolor(v)
+end
+
+return colors
diff --git a/lib/lua-term/term/cursor.lua b/lib/lua-term/term/cursor.lua
new file mode 100644
index 00000000..e37864c7
--- /dev/null
+++ b/lib/lua-term/term/cursor.lua
@@ -0,0 +1,35 @@
+-- Copyright (c) 2009 Rob Hoelz <rob@hoelzro.net>
+--
+-- Permission is hereby granted, free of charge, to any person obtaining a copy
+-- of this software and associated documentation files (the "Software"), to deal
+-- in the Software without restriction, including without limitation the rights
+-- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+-- copies of the Software, and to permit persons to whom the Software is
+-- furnished to do so, subject to the following conditions:
+--
+-- The above copyright notice and this permission notice shall be included in
+-- all copies or substantial portions of the Software.
+--
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+-- THE SOFTWARE.
+
+local term = require 'term.core'
+
+local cursor = {
+ ['goto'] = term.maketermfunc '%d;%dH',
+ goup = term.maketermfunc '%dA',
+ godown = term.maketermfunc '%dB',
+ goright = term.maketermfunc '%dC',
+ goleft = term.maketermfunc '%dD',
+ save = term.maketermfunc 's',
+ restore = term.maketermfunc 'u',
+}
+
+cursor.jump = cursor['goto']
+
+return cursor
diff --git a/lib/lua-term/term/init.lua b/lib/lua-term/term/init.lua
new file mode 100644
index 00000000..bd2024bd
--- /dev/null
+++ b/lib/lua-term/term/init.lua
@@ -0,0 +1,51 @@
+-- Copyright (c) 2009 Rob Hoelz <rob@hoelzro.net>
+--
+-- Permission is hereby granted, free of charge, to any person obtaining a copy
+-- of this software and associated documentation files (the "Software"), to deal
+-- in the Software without restriction, including without limitation the rights
+-- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+-- copies of the Software, and to permit persons to whom the Software is
+-- furnished to do so, subject to the following conditions:
+--
+-- The above copyright notice and this permission notice shall be included in
+-- all copies or substantial portions of the Software.
+--
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+-- THE SOFTWARE.
+
+local term = require 'term.core'
+local sformat = string.format
+local iotype = io.type
+local stdout = io.stdout
+
+function term.maketermfunc(sequence_fmt)
+ sequence_fmt = '\027[' .. sequence_fmt
+
+ local func
+
+ func = function(handle, ...)
+ if iotype(handle) ~= 'file' then
+ return func(stdout, handle, ...)
+ end
+
+ return handle:write(sformat(sequence_fmt, ...))
+ end
+
+ return func
+end
+
+term.colors = require 'term.colors'
+term.cursor = require 'term.cursor'
+
+term.clear = term.maketermfunc '2J'
+term.cleareol = term.maketermfunc 'K'
+term.clearend = term.maketermfunc 'J'
+
+term.maketermfunc = nil
+
+return term