diff options
author | elioat <elioat@tilde.institute> | 2022-10-07 23:57:59 +0000 |
---|---|---|
committer | elioat <elioat@tilde.institute> | 2022-10-07 23:57:59 +0000 |
commit | f7dc77b3763ac444fa54e110639fadc6ba70174b (patch) | |
tree | 104c0fca807f88fff3564dfb696f1761d0426b5b | |
parent | 1a6af4c104ea9d168f947ce082d0f6336f8ea036 (diff) | |
download | tour-f7dc77b3763ac444fa54e110639fadc6ba70174b.tar.gz |
*
-rw-r--r-- | forth/pomo.forth | 4 | ||||
-rw-r--r-- | lua/app.lua | 33 | ||||
-rw-r--r-- | lua/pomo.lua | 71 |
3 files changed, 106 insertions, 2 deletions
diff --git a/forth/pomo.forth b/forth/pomo.forth index f568bb9..aaed3f7 100644 --- a/forth/pomo.forth +++ b/forth/pomo.forth @@ -32,8 +32,8 @@ VARIABLE REST-TIME ( FIXME: reset POMO-TIME and REST-TIME once they've reached 0 ) : POMO-LOOP BEGIN - PAGE - POMO-TIME @ CHECK-POMO-TIME? 1SEC + PAGE + POMO-TIME @ CHECK-POMO-TIME? 1SEC PAGE POMO-TIME @ REST-TIME @ + 0= UNTIL diff --git a/lua/app.lua b/lua/app.lua new file mode 100644 index 0000000..6f01af8 --- /dev/null +++ b/lua/app.lua @@ -0,0 +1,33 @@ +local pomo = require "pomo" + +local remain_active = true; + +local function listener() + io.write('\n=====\nPomo Pomo Pomo!\n=====\n\n') + io.write('(s)tart a timer\n') + io.write('(q)uit the program\n') + io.write('\n* ') + local external_input = io.read() + return external_input +end + +local function clear_screen() + os.execute("clear") -- FIXME: this won't work across systems, I don't think +end + +local function process_input(input) + input = string.lower(input) + if (input == 's' or input == 'p' or input == 'start' or input == 'pomo') then + pomo() + elseif (input == 'quit' or input == 'q' or input == 'exit') then + remain_active = false + else + io.write('\nUnknown input, ' .. input .. '"\n') + end +end + +while (remain_active) do + local person_input = listener() + clear_screen() + process_input(person_input) +end diff --git a/lua/pomo.lua b/lua/pomo.lua new file mode 100644 index 0000000..75e4c1e --- /dev/null +++ b/lua/pomo.lua @@ -0,0 +1,71 @@ +-- title: pomo +-- author: eli_oat +-- about: a very tiny pomodoro timer + +local pomo = { + _version = "2022.03" +} + +local defaults = { + pomoTime = 1500, -- time for a pomodoro in seconds + restTime = 600, -- time for a short rest in seconds + longRestTime = 900, -- time for a long rest in sseconds + pomoCount = 0 -- used to count pomodoros before a long rest +} + +local pomoTime = defaults.pomoTime +local restTime = defaults.restTime +local longRestTime = defaults.longRestTime +local pomoCount = defaults.pomoCount + +local function sleep (a) + local sec = tonumber(os.clock() + a) + while (os.clock() < sec) do + end +end + +local function prettyTime (timeInSeconds) + local minutes = math.floor(timeInSeconds / 60) + local seconds = timeInSeconds % 60 + local timeDisplay = string.format('%02d:%02d', minutes, seconds) + return timeDisplay +end + +function pomo () + os.execute('clear') + repeat + io.write('🍅 ' .. prettyTime(pomoTime) .. '\n') + pomoTime = pomoTime - 1 + sleep(1) + os.execute('clear') + until pomoTime == 0 + + while pomoTime == 0 and pomoCount < 4 do + io.write('😴 ' .. prettyTime(restTime) .. '\n') + restTime = restTime - 1 + sleep(1) + os.execute('clear') + while restTime == 0 do + restTime = defaults.restTime + pomoTime = defaults.pomoTime + pomoCount = pomoCount + 1 + pomo() + end + end + + while pomoCount == 4 do + io.write('🍹 LONG REST! ' .. prettyTime(longRestTime) .. '\n') + longRestTime = longRestTime - 1 + sleep(1) + os.execute('clear') + while longRestTime == 0 do + restTime = defaults.restTime + pomoTime = defaults.pomoTime + longRestTime = defaults.longRestTime + pomoCount = defaults.pomoCount + pomo() + end + end +end + +return pomo |