Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/chadtech/random-pipeline
This is a package that makes getting random values a little bit easier in Elm.
https://github.com/chadtech/random-pipeline
elm ran
Last synced: 1 day ago
JSON representation
This is a package that makes getting random values a little bit easier in Elm.
- Host: GitHub
- URL: https://github.com/chadtech/random-pipeline
- Owner: Chadtech
- License: other
- Created: 2018-01-29T18:48:30.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2018-08-25T14:33:37.000Z (over 6 years ago)
- Last Synced: 2024-11-06T04:40:57.668Z (about 2 months ago)
- Topics: elm, ran
- Language: Elm
- Homepage: https://package.elm-lang.org/packages/Chadtech/random-pipeline/latest/
- Size: 3.91 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Random Pipeline
This is a package that makes getting random values a little bit easier in Elm.
Heres a side by side comparison between `Random` and `Random.Pipeline`
```elm
-- Random
modelGenerator : Generator Model
modelGenerator =
Random.map4 Model
positionGenerator
enemiesGenerator
uuidGenerator
nameGeneratorinit : Seed -> ( Model, Seed )
init =
Random.step modelGenerator-- Random.Pipeline
import Random.Pipeline exposing (from, with)init : Seed -> ( Model, Seed )
init seed =
Model
|> from seed
|> with positionGenerator
|> with enemiesGenerator
|> with uuidGenerator
|> with nameGenerator
```A little bit cleaner right? And what if we wanted to keep the seed in our `Model` too? Just use `Random.Pipeline.finish`
```elm
import Random.Pipeline exposing (from, with, finish)init : Seed -> Model
init seed =
Model
|> from seed
|> with positionGenerator
|> with enemiesGenerator
|> with uuidGenerator
|> with nameGenerator
|> finishtype alias Model =
{ pos : Position
, enemies : List Enemy
, uuid : Uuid
, name : String
, seed : Seed
}
```It also has `always` that can hardcode values into your random generation.
```elm
import Random.Pipeline exposing (from, with, finish, always)update : Msg -> Model -> Model
update msg model =
case msg of
Restart ->
Model
|> Random.from model.seed
|> Random.with positionGenerator
|> Random.with enemiesGenerator
|> Random.always model.uuid
|> Random.always model.name
|> Random.finish
```