diff options
Diffstat (limited to 'src/Update/UpdateTimerEdition.elm')
-rw-r--r-- | src/Update/UpdateTimerEdition.elm | 35 |
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 |