mirror of
https://github.com/dillonkearns/elm-pages-v3-beta.git
synced 2024-12-25 21:02:33 +03:00
Add distill helpers for codec packages.
This commit is contained in:
parent
c2599426bc
commit
09bd2e982e
1
elm.json
1
elm.json
@ -26,6 +26,7 @@
|
|||||||
],
|
],
|
||||||
"elm-version": "0.19.0 <= v < 0.20.0",
|
"elm-version": "0.19.0 <= v < 0.20.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"MartinSStewart/elm-serialize": "1.2.5 <= v < 2.0.0",
|
||||||
"avh4/elm-color": "1.0.0 <= v < 2.0.0",
|
"avh4/elm-color": "1.0.0 <= v < 2.0.0",
|
||||||
"danyx23/elm-mimetype": "4.0.1 <= v < 5.0.0",
|
"danyx23/elm-mimetype": "4.0.1 <= v < 5.0.0",
|
||||||
"dillonkearns/elm-bcp47-language-tag": "1.0.1 <= v < 2.0.0",
|
"dillonkearns/elm-bcp47-language-tag": "1.0.1 <= v < 2.0.0",
|
||||||
|
@ -244,9 +244,8 @@ data route =
|
|||||||
|> DataSource.fromResult
|
|> DataSource.fromResult
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|> DataSource.distill ("markdown-blocks-" ++ route.slug)
|
|> DataSource.distillSerializeCodec ("markdown-blocks-" ++ route.slug)
|
||||||
(S.encodeToJson (S.list MarkdownCodec.codec))
|
(S.list MarkdownCodec.codec)
|
||||||
(S.decodeFromJson (S.list MarkdownCodec.codec) >> Result.mapError (\_ -> "Error"))
|
|
||||||
|> DataSource.andThen
|
|> DataSource.andThen
|
||||||
(\blocks ->
|
(\blocks ->
|
||||||
blocks
|
blocks
|
||||||
|
@ -157,12 +157,7 @@ titleForSection section =
|
|||||||
|> Result.fromMaybe "Expected to find an H1 heading in this markdown."
|
|> Result.fromMaybe "Expected to find an H1 heading in this markdown."
|
||||||
|> DataSource.fromResult
|
|> DataSource.fromResult
|
||||||
)
|
)
|
||||||
|> DataSource.distill ("next-previous-" ++ section.slug)
|
|> DataSource.distillSerializeCodec ("next-previous-" ++ section.slug) NextPrevious.serialize
|
||||||
(Serialize.encodeToJson NextPrevious.serialize)
|
|
||||||
(Serialize.decodeFromJson
|
|
||||||
NextPrevious.serialize
|
|
||||||
>> Result.mapError (\_ -> "Error")
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
head :
|
head :
|
||||||
|
@ -32,9 +32,7 @@ dataSource docFiles =
|
|||||||
)
|
)
|
||||||
|> DataSource.resolve
|
|> DataSource.resolve
|
||||||
|> DataSource.map List.reverse
|
|> DataSource.map List.reverse
|
||||||
|> DataSource.distill "table-of-contents"
|
|> DataSource.distillSerializeCodec "table-of-contents" serialize
|
||||||
(S.encodeToJson serialize)
|
|
||||||
(S.decodeFromJson serialize >> Result.mapError (\_ -> "Error"))
|
|
||||||
|
|
||||||
|
|
||||||
codec : Codec (TableOfContents Data)
|
codec : Codec (TableOfContents Data)
|
||||||
|
@ -6,6 +6,7 @@ module DataSource exposing
|
|||||||
, andThen, resolve, combine
|
, andThen, resolve, combine
|
||||||
, map2, map3, map4, map5, map6, map7, map8, map9
|
, map2, map3, map4, map5, map6, map7, map8, map9
|
||||||
, distill, validate
|
, distill, validate
|
||||||
|
, distillCodec, distillSerializeCodec
|
||||||
)
|
)
|
||||||
|
|
||||||
{-| StaticHttp requests are an alternative to doing Elm HTTP requests the traditional way using the `elm/http` package.
|
{-| StaticHttp requests are an alternative to doing Elm HTTP requests the traditional way using the `elm/http` package.
|
||||||
@ -66,6 +67,7 @@ and describe your use case!
|
|||||||
|
|
||||||
-}
|
-}
|
||||||
|
|
||||||
|
import Codec
|
||||||
import Dict exposing (Dict)
|
import Dict exposing (Dict)
|
||||||
import Dict.Extra
|
import Dict.Extra
|
||||||
import Json.Decode as Decode
|
import Json.Decode as Decode
|
||||||
@ -77,6 +79,7 @@ import Pages.Secrets
|
|||||||
import Pages.StaticHttp.Request as HashRequest
|
import Pages.StaticHttp.Request as HashRequest
|
||||||
import Pages.StaticHttpRequest exposing (RawRequest(..), WhatToDo)
|
import Pages.StaticHttpRequest exposing (RawRequest(..), WhatToDo)
|
||||||
import RequestsAndPending exposing (RequestsAndPending)
|
import RequestsAndPending exposing (RequestsAndPending)
|
||||||
|
import Serialize
|
||||||
|
|
||||||
|
|
||||||
{-| Build an empty body for a StaticHttp request. See [elm/http's `Http.emptyBody`](https://package.elm-lang.org/packages/elm/http/latest/Http#emptyBody).
|
{-| Build an empty body for a StaticHttp request. See [elm/http's `Http.emptyBody`](https://package.elm-lang.org/packages/elm/http/latest/Http#emptyBody).
|
||||||
@ -237,6 +240,43 @@ distill uniqueKey encode decode dataSource =
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
{-| -}
|
||||||
|
distillSerializeCodec :
|
||||||
|
String
|
||||||
|
-> Serialize.Codec error value
|
||||||
|
-> DataSource value
|
||||||
|
-> DataSource value
|
||||||
|
distillSerializeCodec uniqueKey serializeCodec =
|
||||||
|
distill uniqueKey
|
||||||
|
(Serialize.encodeToJson serializeCodec)
|
||||||
|
(Serialize.decodeFromJson serializeCodec
|
||||||
|
>> Result.mapError
|
||||||
|
(\error ->
|
||||||
|
case error of
|
||||||
|
Serialize.DataCorrupted ->
|
||||||
|
"DataCorrupted"
|
||||||
|
|
||||||
|
Serialize.CustomError errorMessage ->
|
||||||
|
"CustomError"
|
||||||
|
|
||||||
|
Serialize.SerializerOutOfDate ->
|
||||||
|
"SerializerOutOfDate"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
{-| -}
|
||||||
|
distillCodec :
|
||||||
|
String
|
||||||
|
-> Codec.Codec value
|
||||||
|
-> DataSource value
|
||||||
|
-> DataSource value
|
||||||
|
distillCodec uniqueKey codec =
|
||||||
|
distill uniqueKey
|
||||||
|
(Codec.encodeToValue codec)
|
||||||
|
(Codec.decodeValue codec >> Result.mapError Decode.errorToString)
|
||||||
|
|
||||||
|
|
||||||
toResult : Result Pages.StaticHttpRequest.Error ( Dict String WhatToDo, b ) -> RawRequest b
|
toResult : Result Pages.StaticHttpRequest.Error ( Dict String WhatToDo, b ) -> RawRequest b
|
||||||
toResult result =
|
toResult result =
|
||||||
case result of
|
case result of
|
||||||
|
Loading…
Reference in New Issue
Block a user