Simple datastructure which allows you to reset to it's original value.
It's kinda like Editable
(http://package.elm-lang.org/packages/stoeffel/editable/latest), but simpler and there is no way to override its original value.
Wraps a type in a Resetable.
You can construct a Resetable
using init
.
init : a -> Resetable a
Creates a Resetable and initializes its value.
Resetable.init "a"
value : Resetable a -> a
Get the current value of a Resetable.
Resetable.init "a"
|> Resetable.value
--> "a"
map : (a -> a) -> Resetable a -> Resetable a
Map a resetable value. This allows you to change the value without loosing its original value.
Resetable.init "hello"
|> Resetable.map String.toUpper
|> Resetable.value
--> "HELLO"
update : a -> Resetable a -> Resetable a
Update a resetable value. This allows you to change the value without loosing its original value.
Resetable.init "hello"
|> Resetable.update "world"
|> Resetable.value
--> "world"
reset : Resetable a -> Resetable a
Reset a Resetable to its original value.
Resetable.init "hello"
|> Resetable.map String.toUpper
|> Resetable.reset
|> Resetable.value
--> "hello"
changed : Resetable a -> Basics.Bool
Check if the value has changed.
Resetable.init "hello"
|> Resetable.changed
--> False
Resetable.init "hello"
|> Resetable.update "world"
|> Resetable.changed
--> True