158 lines
2.7 KiB
Lua
158 lines
2.7 KiB
Lua
teliva_program = {
|
|
{
|
|
__teliva_timestamp = [==[
|
|
original]==],
|
|
norm = [==[
|
|
function norm()
|
|
window:attrset(curses.A_NORMAL)
|
|
end]==],
|
|
},
|
|
{
|
|
__teliva_timestamp = [==[
|
|
original]==],
|
|
bold = [==[
|
|
function bold()
|
|
window:attron(curses.A_BOLD)
|
|
end]==],
|
|
},
|
|
{
|
|
__teliva_timestamp = [==[
|
|
original]==],
|
|
rv = [==[
|
|
function rv()
|
|
window:attron(curses.A_REVERSE)
|
|
end]==],
|
|
},
|
|
{
|
|
__teliva_timestamp = [==[
|
|
original]==],
|
|
color = [==[
|
|
function color(i)
|
|
window:attron(curses.color_pair(i))
|
|
end]==],
|
|
},
|
|
{
|
|
__teliva_timestamp = [==[
|
|
original]==],
|
|
abbreviations = [==[
|
|
clear = curses.clear
|
|
refresh = curses.refresh
|
|
getch = curses.getch
|
|
addch = curses.addch
|
|
mvaddch = curses.mvaddch
|
|
pr = curses.addstr
|
|
mpr = curses.mvaddstr
|
|
str = tostring
|
|
num = tonumber
|
|
]==],
|
|
},
|
|
{
|
|
__teliva_timestamp = [==[
|
|
original]==],
|
|
str_helpers = [==[
|
|
-- some string helpers from http://lua-users.org/wiki/StringIndexing
|
|
|
|
-- index characters using []
|
|
getmetatable('').__index = function(str,i)
|
|
if type(i) == 'number' then
|
|
return string.sub(str,i,i)
|
|
else
|
|
return string[i]
|
|
end
|
|
end
|
|
|
|
-- ranges using (), selected bytes using {}
|
|
getmetatable('').__call = function(str,i,j)
|
|
if type(i)~='table' then
|
|
return string.sub(str,i,j)
|
|
else
|
|
local t={}
|
|
for k,v in ipairs(i) do
|
|
t[k]=string.sub(str,v,v)
|
|
end
|
|
return table.concat(t)
|
|
end
|
|
end
|
|
|
|
-- iterate over an ordered sequence
|
|
function q(x)
|
|
if type(x) == 'string' then
|
|
return x:gmatch('.')
|
|
else
|
|
return ipairs(x)
|
|
end
|
|
end
|
|
|
|
-- TODO: backport utf-8 support from Lua 5.3
|
|
]==],
|
|
},
|
|
{
|
|
__teliva_timestamp = [==[
|
|
original]==],
|
|
window = [==[
|
|
window = curses.stdscr()]==],
|
|
},
|
|
{
|
|
__teliva_timestamp = [==[
|
|
original]==],
|
|
render = [==[
|
|
function render(window)
|
|
clear()
|
|
-- draw stuff to screen here
|
|
for line in io.lines("input") do
|
|
pr(line)
|
|
pr("\n")
|
|
end
|
|
refresh()
|
|
end]==],
|
|
},
|
|
{
|
|
__teliva_timestamp = [==[
|
|
original]==],
|
|
menu = [==[
|
|
menu = {}]==],
|
|
},
|
|
{
|
|
__teliva_timestamp = [==[
|
|
original]==],
|
|
update = [==[
|
|
function update(window)
|
|
local key = curses.getch()
|
|
-- process key here
|
|
end]==],
|
|
},
|
|
{
|
|
__teliva_timestamp = [==[
|
|
original]==],
|
|
init_colors = [==[
|
|
function init_colors()
|
|
for i=0,7 do
|
|
curses.init_pair(i, i, -1)
|
|
end
|
|
curses.init_pair(8, 7, 0)
|
|
curses.init_pair(9, 7, 1)
|
|
curses.init_pair(10, 7, 2)
|
|
curses.init_pair(11, 7, 3)
|
|
curses.init_pair(12, 7, 4)
|
|
curses.init_pair(13, 7, 5)
|
|
curses.init_pair(14, 7, 6)
|
|
curses.init_pair(15, -1, 15)
|
|
curses.init_pair(255, 15, 1) -- reserved for Teliva error messages
|
|
end]==],
|
|
},
|
|
{
|
|
main = [==[
|
|
function main()
|
|
init_colors()
|
|
|
|
while true do
|
|
render(window)
|
|
update(window)
|
|
end
|
|
end
|
|
]==],
|
|
__teliva_timestamp = [==[
|
|
original]==],
|
|
},
|
|
}
|