2023-01-09 15:00:37 -05:00
|
|
|
module Route exposing (Route(..), fromUrl, toUrl)
|
|
|
|
|
|
|
|
import Url exposing (Url)
|
|
|
|
import Url.Builder
|
|
|
|
import Url.Parser exposing (Parser, map, oneOf, parse, s, top)
|
|
|
|
|
|
|
|
|
|
|
|
type Route
|
2023-01-09 15:04:51 -05:00
|
|
|
= Collection
|
2023-01-09 15:00:37 -05:00
|
|
|
| DeckList
|
|
|
|
|
|
|
|
|
|
|
|
parser : Parser (Route -> a) a
|
|
|
|
parser =
|
|
|
|
oneOf
|
2023-01-09 15:04:51 -05:00
|
|
|
[ map Collection top
|
2023-01-09 15:00:37 -05:00
|
|
|
, map Collection (s "collection")
|
|
|
|
, map DeckList (s "decks")
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
toUrl : Route -> String
|
|
|
|
toUrl route =
|
|
|
|
case route of
|
|
|
|
|
|
|
|
Collection ->
|
|
|
|
Url.Builder.absolute [ "collection" ] []
|
|
|
|
|
|
|
|
DeckList ->
|
|
|
|
Url.Builder.absolute [ "decks" ] []
|
|
|
|
|
|
|
|
|
|
|
|
fromUrl : Url.Url -> Maybe Route
|
|
|
|
fromUrl url =
|
|
|
|
parse parser url
|