getto-systems / elm-command / Getto.Command.Transition

utility fo model -> Cmd msg

Definition


type alias Transition model msg =
model -> Platform.Cmd.Cmd msg

function of generate Cmd msg from model


type Prop big small

set of getter (big -> small) and setter (small -> big -> big)

Construction

none : Transition model msg

create 'Do nothing' Transition

prop : Get big small -> Set big small -> Prop big small

construct Prop from getter and setter

type alias Model =
  { name : String
  }

name_ = Transition.prop .name (\v m -> { m | name = v })

Apply

exec : Transition model msg -> model -> ( model, Platform.Cmd.Cmd msg )

execute Transition

model |> Transition.exec Transition.none
-- ( model, Cmd.none )

update : Prop big small -> (small -> ( small, msg )) -> big -> ( big, msg )

update small that described by Prop

type alias Model =
  { sub : String
  }

sub_ = Transition.prop .sub (\v m -> { m | sub = v })

updateSub model = ( model ++ ", world", Transition.none )

{ sub = "hello" } |> Transition.update sub_ updateSub
-- ( { sub = "hello, world" }, Transition msg )

Helpers

batch : List (Transition model msg) -> model -> Platform.Cmd.Cmd msg

batch Transition

[ Transition.none
, Transition.none
] |> Transition.batch

map : (msg -> super) -> ( model, Transition m msg ) -> ( model, Transition m super )

map ( model, Transition ) tuple

type Msg
  = Sub SubMsg

updateSub : model -> ( model, Transition model SubMsg )

model |> updateSub |> Transition.map Sub
-- ( model, Transition model Msg )

compose : (a -> model) -> ( a, Transition m msg ) -> ( model, Transition m msg )

compose ( model, Transition ) tuples

type alias Model =
  { sub : SubModel
  }

Transition.compose
  Model
    ( subModel, Transition.none )

compose2 : (a -> b -> model) -> ( a, Transition m msg ) -> ( b, Transition m msg ) -> ( model, Transition m msg )

compose ( model, Transition ) tuples

type alias Model =
  { sub   : SubModel
  , other : OtherModel
  }

Transition.compose
  Model
    ( subModel,   Transition.none )
    ( otherModel, Transition.none )

compose3 : (a -> b -> c -> model) -> ( a, Transition m msg ) -> ( b, Transition m msg ) -> ( c, Transition m msg ) -> ( model, Transition m msg )

compose with 3 args

compose4 : (a -> b -> c -> d -> model) -> ( a, Transition m msg ) -> ( b, Transition m msg ) -> ( c, Transition m msg ) -> ( d, Transition m msg ) -> ( model, Transition m msg )

compose with 4 args

compose5 : (a -> b -> c -> d -> e -> model) -> ( a, Transition m msg ) -> ( b, Transition m msg ) -> ( c, Transition m msg ) -> ( d, Transition m msg ) -> ( e, Transition m msg ) -> ( model, Transition m msg )

compose with 5 args

compose6 : (a -> b -> c -> d -> e -> f -> model) -> ( a, Transition m msg ) -> ( b, Transition m msg ) -> ( c, Transition m msg ) -> ( d, Transition m msg ) -> ( e, Transition m msg ) -> ( f, Transition m msg ) -> ( model, Transition m msg )

compose with 6 args

compose7 : (a -> b -> c -> d -> e -> f -> g -> model) -> ( a, Transition m msg ) -> ( b, Transition m msg ) -> ( c, Transition m msg ) -> ( d, Transition m msg ) -> ( e, Transition m msg ) -> ( f, Transition m msg ) -> ( g, Transition m msg ) -> ( model, Transition m msg )

compose with 7 args

compose8 : (a -> b -> c -> d -> e -> f -> g -> h -> model) -> ( a, Transition m msg ) -> ( b, Transition m msg ) -> ( c, Transition m msg ) -> ( d, Transition m msg ) -> ( e, Transition m msg ) -> ( f, Transition m msg ) -> ( g, Transition m msg ) -> ( h, Transition m msg ) -> ( model, Transition m msg )

compose with 8 args