Skip to content

Commit

Permalink
Remove the unused 'visited' field from the parser state.
Browse files Browse the repository at this point in the history
The parser state is not exposed by this module. Considering that nothing
in the parser relies on it, we can safely omit it.
  • Loading branch information
Ed Schouten committed Apr 11, 2019
1 parent 8602f4b commit 2b8c852
Showing 1 changed file with 14 additions and 15 deletions.
29 changes: 14 additions & 15 deletions src/Url/Parser.elm
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,7 @@ type Parser a b =


type alias State value =
{ visited : List String
, unvisited : List String
{ unvisited : List String
, params : Dict String (List String)
, frag : Maybe String
, value : value
Expand Down Expand Up @@ -111,14 +110,14 @@ The path segment must be an exact match!
-}
s : String -> Parser a a
s str =
Parser <| \{ visited, unvisited, params, frag, value } ->
Parser <| \{ unvisited, params, frag, value } ->
case unvisited of
[] ->
[]

next :: rest ->
if next == str then
[ State (next :: visited) rest params frag value ]
[ State rest params frag value ]

else
[]
Expand All @@ -143,15 +142,15 @@ You can use it to define something like “only CSS files” like this:
-}
custom : String -> (String -> Maybe a) -> Parser (a -> b) b
custom tipe stringToSomething =
Parser <| \{ visited, unvisited, params, frag, value } ->
Parser <| \{ unvisited, params, frag, value } ->
case unvisited of
[] ->
[]

next :: rest ->
case stringToSomething next of
Just nextValue ->
[ State (next :: visited) rest params frag (value nextValue) ]
[ State rest params frag (value nextValue) ]

Nothing ->
[]
Expand Down Expand Up @@ -205,14 +204,14 @@ slash (Parser parseBefore) (Parser parseAfter) =
-}
map : a -> Parser a b -> Parser (b -> c) c
map subValue (Parser parseArg) =
Parser <| \{ visited, unvisited, params, frag, value } ->
Parser <| \{ unvisited, params, frag, value } ->
List.map (mapState value) <| parseArg <|
State visited unvisited params frag subValue
State unvisited params frag subValue


mapState : (a -> b) -> State a -> State b
mapState func { visited, unvisited, params, frag, value } =
State visited unvisited params frag (func value)
mapState func { unvisited, params, frag, value } =
State unvisited params frag (func value)


{-| Try a bunch of different path parsers.
Expand Down Expand Up @@ -321,8 +320,8 @@ segments.
-}
query : Query.Parser query -> Parser (query -> a) a
query (Q.Parser queryParser) =
Parser <| \{ visited, unvisited, params, frag, value } ->
[ State visited unvisited params frag (value (queryParser params))
Parser <| \{ unvisited, params, frag, value } ->
[ State unvisited params frag (value (queryParser params))
]


Expand Down Expand Up @@ -350,8 +349,8 @@ be handy for handling links to DOM elements within a page. Pages like this one!
-}
fragment : (Maybe String -> fragment) -> Parser (fragment -> a) a
fragment toFrag =
Parser <| \{ visited, unvisited, params, frag, value } ->
[ State visited unvisited params frag (value (toFrag frag))
Parser <| \{ unvisited, params, frag, value } ->
[ State unvisited params frag (value (toFrag frag))
]


Expand Down Expand Up @@ -402,7 +401,7 @@ the initial URL and any changes.
parse : Parser (a -> a) a -> Url -> Maybe a
parse (Parser parser) url =
getFirstMatch <| parser <|
State [] (preparePath url.path) (prepareQuery url.query) url.fragment identity
State (preparePath url.path) (prepareQuery url.query) url.fragment identity


getFirstMatch : List (State a) -> Maybe a
Expand Down

0 comments on commit 2b8c852

Please sign in to comment.