{-# LANGUAGE TypeFamilies #-}

{- |
Module      :  Routes.DefaultRoute
Copyright   :  (c) Anupam Jain 2013 - 2015
License     :  MIT (see the file LICENSE)

Maintainer  :  ajnsit@gmail.com
Stability   :  experimental
Portability :  non-portable (uses ghc extensions)

Defines a DefaultMaster datatype and associated route (DefaultRoute) which is used for "unrouted" handlers
-}
module Routes.DefaultRoute
  ( DefaultMaster(..)
  , Route(DefaultRoute)
  )
  where

import Data.Text (Text)
import Data.Set (empty)

import Routes.Routes

-- Default master datatype, which is used for "unrouted" handlers
data DefaultMaster = DefaultMaster deriving (Eq, Show, Ord)
-- This makes it possible to define handlers without routing stuff
instance RenderRoute DefaultMaster where
  -- The associated route simply contains all path information
  data Route DefaultMaster = DefaultRoute ([Text],[(Text, Text)]) deriving (Eq, Show, Ord)
  renderRoute (DefaultRoute r) = r
instance ParseRoute DefaultMaster where
  parseRoute = Just . DefaultRoute
instance RouteAttrs DefaultMaster where
  routeAttrs = const empty