Add function for Envelope

2-transfer-tools
Bram 2023-12-18 17:19:12 +01:00
parent 447a18ab04
commit 5bd95699d2
1 changed files with 29 additions and 2 deletions

View File

@ -1,6 +1,6 @@
module Internal.Values.Envelope exposing module Internal.Values.Envelope exposing
( Envelope, init ( Envelope, init
, map, mapMaybe , map, mapMaybe, mapList
, Settings, mapSettings, extractSettings , Settings, mapSettings, extractSettings
, mapContext , mapContext
, getContent, extract , getContent, extract
@ -18,7 +18,7 @@ settings that can be adjusted manually.
## Manipulate ## Manipulate
@docs map, mapMaybe @docs map, mapMaybe, mapList
## Settings ## Settings
@ -247,6 +247,26 @@ mapSettings f (Envelope data) =
} }
{-| Map the contents of a function, where the result is wrapped in a `List`
type. This can be useful when you are mapping to a list of individual values
that you would all like to see enveloped.
type alias User =
{ name : String, age : Int }
type alias Company =
{ name : String, employees : List User }
getEmployees : Envelope Company -> List (Envelope User)
getEmployees envelope =
mapList .employees envelope
-}
mapList : (a -> List b) -> Envelope a -> List (Envelope b)
mapList f =
map f >> toList
{-| Map the contents of a function, where the result is wrapped in a `Maybe` {-| Map the contents of a function, where the result is wrapped in a `Maybe`
type. This can be useful when you are not guaranteed to find the value you're type. This can be useful when you are not guaranteed to find the value you're
looking for. looking for.
@ -267,6 +287,13 @@ mapMaybe f =
map f >> toMaybe map f >> toMaybe
toList : Envelope (List a) -> List (Envelope a)
toList (Envelope data) =
List.map
(\content -> map (always content) (Envelope data))
data.content
toMaybe : Envelope (Maybe a) -> Maybe (Envelope a) toMaybe : Envelope (Maybe a) -> Maybe (Envelope a)
toMaybe (Envelope data) = toMaybe (Envelope data) =
Maybe.map Maybe.map