| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Airship.Route
Synopsis
- data Route
- data RoutingSpec m a
- data RouteLeaf m
- data Trie a
- root :: Route
- var :: Text -> Route
- star :: Route
- (</>) :: Route -> Route -> Route
- (#>) :: MonadWriter [(ByteString, RouteLeaf a)] m => Route -> Resource a -> m ()
- (#>=) :: MonadWriter [(ByteString, RouteLeaf a)] m => Route -> m (Resource a) -> m ()
- runRouter :: RoutingSpec m a -> Trie (RouteLeaf m)
Documentation
Routes represent chunks of text used to match over URLs.
You match hardcoded paths with string literals (and the -XOverloadedStrings extension),
named variables with the var combinator, and wildcards with star.
data RoutingSpec m a Source #
Represents a fully-specified set of routes that map paths (represented as Routes) to Resources. RoutingSpecs are declared with do-notation, to wit:
myRoutes :: RoutingSpec IO ()
myRoutes = do
root #> myRootResource
"blog" </> var "date" </> var "post" #> blogPostResource
"about" #> aboutResource
"anything" </> star #> wildcardResource
Instances
Instances
| MonadWriter [(ByteString, RouteLeaf m)] (RoutingSpec m) Source # | |
Defined in Airship.Internal.Route Methods writer :: (a, [(ByteString, RouteLeaf m)]) -> RoutingSpec m a # tell :: [(ByteString, RouteLeaf m)] -> RoutingSpec m () # listen :: RoutingSpec m a -> RoutingSpec m (a, [(ByteString, RouteLeaf m)]) # pass :: RoutingSpec m (a, [(ByteString, RouteLeaf m)] -> [(ByteString, RouteLeaf m)]) -> RoutingSpec m a # | |
A map from ByteStrings to a. For all the generic functions,
note that tries are strict in the Maybe but not in a.
The Monad instance is strange. If a key k1 is a prefix of
other keys, then results from binding the value at k1 will
override values from longer keys when they collide. If this is
useful for anything, or if there's a more sensible instance, I'd
be curious to know.
Instances
| Monad Trie | Since: bytestring-trie-0.2.2 |
| Functor Trie | |
| Applicative Trie | Since: bytestring-trie-0.2.2 |
| Foldable Trie | |
Defined in Data.Trie.Internal Methods fold :: Monoid m => Trie m -> m # foldMap :: Monoid m => (a -> m) -> Trie a -> m # foldMap' :: Monoid m => (a -> m) -> Trie a -> m # foldr :: (a -> b -> b) -> b -> Trie a -> b # foldr' :: (a -> b -> b) -> b -> Trie a -> b # foldl :: (b -> a -> b) -> b -> Trie a -> b # foldl' :: (b -> a -> b) -> b -> Trie a -> b # foldr1 :: (a -> a -> a) -> Trie a -> a # foldl1 :: (a -> a -> a) -> Trie a -> a # elem :: Eq a => a -> Trie a -> Bool # maximum :: Ord a => Trie a -> a # | |
| Traversable Trie | |
| Eq1 Trie | Since: bytestring-trie-0.2.7 |
| Ord1 Trie | Warning: This instance suffers unnecessarily from Bug #25. Since: bytestring-trie-0.2.7 |
Defined in Data.Trie.Internal | |
| Read1 Trie | Since: bytestring-trie-0.2.7 |
Defined in Data.Trie.Internal | |
| Show1 Trie | Warning: This instance suffers Bug #25. Since: bytestring-trie-0.2.7 |
| IsList (Trie a) | Warning: The Since: bytestring-trie-0.2.7 |
| Eq a => Eq (Trie a) | |
| Ord a => Ord (Trie a) | Warning: This instance suffers unnecessarily from Bug #25. Since: bytestring-trie-0.2.7 |
| Read a => Read (Trie a) | Since: bytestring-trie-0.2.7 |
| Show a => Show (Trie a) | Warning: This instance suffers Bug #25. Since: bytestring-trie-0.2.2 |
| Semigroup a => Semigroup (Trie a) | Since: bytestring-trie-0.2.5 |
| Monoid a => Monoid (Trie a) | |
| Binary a => Binary (Trie a) | |
| NFData a => NFData (Trie a) | Since: bytestring-trie-0.2.7 |
Defined in Data.Trie.Internal | |
| type Item (Trie a) | |
Defined in Data.Trie.Internal | |
Represents the root resource (/). This should usually be the first path declared in a RoutingSpec.
Captures a wildcard route. For example,
"emcees" </> star
will match /emcees, /emcees/biggie, /emcees/earl/vince, and so on and so forth.
(#>) :: MonadWriter [(ByteString, RouteLeaf a)] m => Route -> Resource a -> m () Source #
(#>=) :: MonadWriter [(ByteString, RouteLeaf a)] m => Route -> m (Resource a) -> m () Source #
runRouter :: RoutingSpec m a -> Trie (RouteLeaf m) Source #
Turns the list of routes in a RoutingSpec into a Trie for efficient
routing