stoeffel / resetable / Resetable

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.


type Resetable a

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