update examples. fix bugs

This commit is contained in:
2026-02-03 12:53:52 -05:00
parent 9150c90ad1
commit 426a0c4715
15 changed files with 867 additions and 1148 deletions
+16 -15
View File
@@ -1,36 +1,37 @@
(ns examples.counter
"Simple counter example - demonstrates basic Elm architecture.
Mirrors bubbletea's simple example."
(:require [tui.core :as tui]))
(:require [tui.core :as tui]
[tui.events :as ev]))
;; === Model ===
(def initial-model
{:count 0})
;; === Update ===
(defn update-model [model msg]
(defn update-fn [{:keys [model event]}]
(cond
;; Quit on q or ctrl+c
(or (tui/key= msg "q")
(tui/key= msg [:ctrl \c]))
[model tui/quit]
(or (ev/key= event \q)
(ev/key= event \c #{:ctrl}))
{:model model :events [(ev/quit)]}
;; Increment on up/k
(or (tui/key= msg :up)
(tui/key= msg "k"))
[(update model :count inc) nil]
(or (ev/key= event :up)
(ev/key= event \k))
{:model (update model :count inc)}
;; Decrement on down/j
(or (tui/key= msg :down)
(tui/key= msg "j"))
[(update model :count dec) nil]
(or (ev/key= event :down)
(ev/key= event \j))
{:model (update model :count dec)}
;; Reset on r
(tui/key= msg "r")
[(assoc model :count 0) nil]
(ev/key= event \r)
{:model (assoc model :count 0)}
:else
[model nil]))
{:model model}))
;; === View ===
(defn view [{:keys [count]} _size]
@@ -51,6 +52,6 @@
(defn -main [& _args]
(println "Starting counter...")
(let [final-model (tui/run {:init initial-model
:update update-model
:update update-fn
:view view})]
(println "Final count:" (:count final-model))))