aboutsummaryrefslogtreecommitdiff
path: root/src/Update/UpdateTimerEdition.elm
diff options
context:
space:
mode:
Diffstat (limited to 'src/Update/UpdateTimerEdition.elm')
-rw-r--r--src/Update/UpdateTimerEdition.elm35
1 files changed, 25 insertions, 10 deletions
diff --git a/src/Update/UpdateTimerEdition.elm b/src/Update/UpdateTimerEdition.elm
index cff39f7..e9493eb 100644
--- a/src/Update/UpdateTimerEdition.elm
+++ b/src/Update/UpdateTimerEdition.elm
@@ -1,19 +1,34 @@
module Update.UpdateTimerEdition
( updateTimerEdition
+ , TimerEditionAction(..)
) where
import Char (..)
import Model.TimerEdition (..)
-updateTimerEdition : Maybe Char -> TimerEdition -> TimerEdition
-updateTimerEdition maybeChar timerEdition =
- case maybeChar of
- Just char ->
- if isDigit char
- then
- { timerEdition | numbers <- char :: timerEdition.numbers }
- else
+import Utils.List (..)
+
+type TimerEditionAction =
+ DeleteLast
+ | AddNumber KeyCode
+
+updateTimerEdition : TimerEditionAction -> TimerEdition -> TimerEdition
+updateTimerEdition action timerEdition =
+ case action of
+ DeleteLast ->
+ case maybeTail timerEdition.numbers of
+ Just tailNumbers ->
+ { timerEdition | numbers <- tailNumbers }
+ Nothing ->
+ timerEdition
+ AddNumber keyCode ->
+ case keyCodeToNumberChar keyCode of
+ Just char ->
+ if isDigit char
+ then
+ { timerEdition | numbers <- char :: timerEdition.numbers }
+ else
+ timerEdition
+ Nothing ->
timerEdition
- Nothing ->
- timerEdition