about summary refs log tree commit diff stats
path: root/sieve.tlv
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2022-03-06 02:42:34 -0800
committerKartik K. Agaram <vc@akkartik.com>2022-03-06 02:42:34 -0800
commita8d0c1a56a82684ec0db7b4fa622b3b34e50fffd (patch)
treeecc68c76c813db3894654c6e7c453cdceee409ca /sieve.tlv
parentaf9d7a16f3d14faa494bb878e99d7bb4ce0d2375 (diff)
downloadteliva-a8d0c1a56a82684ec0db7b4fa622b3b34e50fffd.tar.gz
reconcile all apps with template.tlv
They may take more or less from it (sieve.tlv in particular takes
nothing since call depth doesn't help at all there), but what they take
is in the right order so that you can compare across apps.
Diffstat (limited to 'sieve.tlv')
-rw-r--r--sieve.tlv239
1 files changed, 2 insertions, 237 deletions
diff --git a/sieve.tlv b/sieve.tlv
index 92c086a..9677af4 100644
--- a/sieve.tlv
+++ b/sieve.tlv
@@ -17,248 +17,13 @@
 # If these constraints are violated, Teliva may unceremoniously crash. Please
 # report bugs at http://akkartik.name/contact
 - __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
-    >
-    >-- insert within string
-    >function string.insert(str1, str2, pos)
-    >  return str1:sub(1,pos)..str2..str1:sub(pos+1)
-    >end
-    >
-    >function string.remove(s, pos)
-    >  return s:sub(1,pos-1)..s:sub(pos+1)
-    >end
-    >
-    >-- TODO: backport utf-8 support from Lua 5.3
-- __teliva_timestamp: original
-  debugy:
-    >debugy = 5
-- __teliva_timestamp: original
-  dbg:
-    >-- helper for debug by print; overlay debug information towards the right
-    >-- reset debugy every time you refresh screen
-    >function dbg(window, s)
-    >  local oldy = 0
-    >  local oldx = 0
-    >  oldy, oldx = window:getyx()
-    >  window:mvaddstr(debugy, 60, s)
-    >  debugy = debugy+1
-    >  window:mvaddstr(oldy, oldx, '')
-    >end
-- __teliva_timestamp: original
-  check_eq:
-    >function check_eq(x, expected, msg)
-    >  if eq(x, expected) then
-    >    Window:addch('.')
-    >  else
-    >    print('F - '..msg)
-    >    print('  expected '..str(expected)..' but got '..str(x))
-    >    teliva_num_test_failures = teliva_num_test_failures + 1
-    >    -- overlay first test failure on editors
-    >    if teliva_first_failure == nil then
-    >      teliva_first_failure = msg
-    >    end
-    >  end
-    >end
-- __teliva_timestamp: original
-  eq:
-    >function eq(a, b)
-    >  if type(a) ~= type(b) then return false end
-    >  if type(a) == 'table' then
-    >    if #a ~= #b then return false end
-    >    for k, v in pairs(a) do
-    >      if b[k] ~= v then
-    >        return false
-    >      end
-    >      return true
-    >    end
-    >  end
-    >  return a == b
-    >end
-- __teliva_timestamp: original
-  str:
-    >-- smarter tostring
-    >-- slow; used only for debugging
-    >function str(x)
-    >  if type(x) == 'table' then
-    >    local result = ''
-    >    result = result..#x..'{'
-    >    for k, v in pairs(x) do
-    >      result = result..str(k)..'='..str(v)..', '
-    >    end
-    >    result = result..'}'
-    >    return result
-    >  end
-    >  return tostring(x)
-    >end
-- __teliva_timestamp: original
-  map:
-    >-- only for arrays
-    >function map(l, f)
-    >  result = {}
-    >  for _, x in ipairs(l) do
-    >    table.insert(result, f(x))
-    >  end
-    >  return result
-    >end
-- __teliva_timestamp: original
-  reduce:
-    >-- only for arrays
-    >function reduce(l, f, init)
-    >  result = init
-    >  for _, x in ipairs(l) do
-    >    result = f(result, x)
-    >  end
-    >  return result
-    >end
-- __teliva_timestamp: original
-  filter:
-    >-- only for arrays
-    >function filter(l, f)
-    >  result = {}
-    >  for _, x in ipairs(l) do
-    >    if f(x) then
-    >      table.insert(result, x)
-    >    end
-    >  end
-    >  return result
-    >end
-- __teliva_timestamp: original
-  find_index:
-    >function find_index(arr, x)
-    >  for n, y in ipairs(arr) do
-    >    if x == y then
-    >      return n
-    >    end
-    >  end
-    >end
-- __teliva_timestamp: original
-  trim:
-    >function trim(s)
-    >  return s:gsub('^%s*', ''):gsub('%s*$', '')
-    >end
-- __teliva_timestamp: original
-  split:
-    >function split(s, d)
-    >  result = {}
-    >  for match in (s..d):gmatch("(.-)"..d) do
-    >    table.insert(result, match);
-    >  end
-    >  return result
-    >end
-- __teliva_timestamp:
-    >Mon Feb 21 17:45:04 2022
-  sort_string:
-    >function sort_string(s)
-    >  tmp = {}
-    >  for i=1,#s do
-    >    table.insert(tmp, s[i])
-    >  end
-    >  table.sort(tmp)
-    >  local result = ''
-    >  for _, c in pairs(tmp) do
-    >    result = result..c
-    >  end
-    >  return result
-    >end
-    >
-    >function test_sort_string(s)
-    >  check_eq(sort_string(''), '', 'test_sort_string: empty')
-    >  check_eq(sort_string('ba'), 'ab', 'test_sort_string: non-empty')
-    >  check_eq(sort_string('abba'), 'aabb', 'test_sort_string: duplicates')
-    >end
-- __teliva_timestamp: original
-  append:
-    >-- concatenate list 'elems' into 'l', modifying 'l' in the process
-    >function append(l, elems)
-    >  for i=1,#elems do
-    >    l[#l+1] = elems[i]
-    >  end
-    >end
-- __teliva_timestamp: original
-  Window:
-    >Window = curses.stdscr()
-- __teliva_timestamp: original
-  render:
-    >function render(window)
-    >  window:clear()
-    >  -- draw stuff to screen here
-    >  window:attron(curses.A_BOLD)
-    >  window:mvaddstr(1, 5, "example app")
-    >  window:attrset(curses.A_NORMAL)
-    >  for i=0,15 do
-    >    window:attrset(curses.color_pair(i))
-    >    window:mvaddstr(3+i, 5, "========================")
-    >  end
-    >  window:refresh()
-    >end
-- __teliva_timestamp: original
   menu:
     >-- To show app-specific hotkeys in the menu bar, add hotkey/command
     >-- arrays of strings to the menu array.
     >menu = {}
 - __teliva_timestamp: original
-  update:
-    >function update(window)
-    >  local key = window: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)
-    >end
-- __teliva_timestamp: original
-  main:
-    >function main()
-    >  init_colors()
-    >
-    >  while true do
-    >    render(Window)
-    >    update(Window)
-    >  end
-    >end
+  Window:
+    >Window = curses.stdscr()
 - __teliva_timestamp: original
   doc:blurb:
     >To show a brief description of the app on the 'big picture' screen, put the text in a special buffer called 'doc:blurb'.