{-# LANGUAGE DeriveDataTypeable, FlexibleInstances, TemplateHaskell, TypeFamilies #-} module Clckwrks.URL ( ClckURL(..) , AdminURL(..) , AuthenticateURL(..) , NoEscape(..) ) where import Clckwrks.Admin.URL (AdminURL(..)) import Clckwrks.JS.URL (JSURL) import Clckwrks.ProfileData.URL (ProfileDataURL(..)) import Control.Applicative ((<$>), many) import Data.Data (Data, Typeable) import Data.SafeCopy (Migrate(..), SafeCopy(..), base, deriveSafeCopy, extension) import Data.Text (Text, pack, unpack) import Happstack.Authenticate.Core (AuthenticateURL(..)) import System.FilePath (joinPath, splitDirectories) import Web.Routes (PathInfo(..), anySegment) import Web.Routes.TH (derivePathInfo) newtype NoEscape a = NoEscape a deriving (NoEscape a -> NoEscape a -> Bool (NoEscape a -> NoEscape a -> Bool) -> (NoEscape a -> NoEscape a -> Bool) -> Eq (NoEscape a) forall a. Eq a => NoEscape a -> NoEscape a -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: NoEscape a -> NoEscape a -> Bool $c/= :: forall a. Eq a => NoEscape a -> NoEscape a -> Bool == :: NoEscape a -> NoEscape a -> Bool $c== :: forall a. Eq a => NoEscape a -> NoEscape a -> Bool Eq, Eq (NoEscape a) Eq (NoEscape a) -> (NoEscape a -> NoEscape a -> Ordering) -> (NoEscape a -> NoEscape a -> Bool) -> (NoEscape a -> NoEscape a -> Bool) -> (NoEscape a -> NoEscape a -> Bool) -> (NoEscape a -> NoEscape a -> Bool) -> (NoEscape a -> NoEscape a -> NoEscape a) -> (NoEscape a -> NoEscape a -> NoEscape a) -> Ord (NoEscape a) NoEscape a -> NoEscape a -> Bool NoEscape a -> NoEscape a -> Ordering NoEscape a -> NoEscape a -> NoEscape a forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a forall a. Ord a => Eq (NoEscape a) forall a. Ord a => NoEscape a -> NoEscape a -> Bool forall a. Ord a => NoEscape a -> NoEscape a -> Ordering forall a. Ord a => NoEscape a -> NoEscape a -> NoEscape a min :: NoEscape a -> NoEscape a -> NoEscape a $cmin :: forall a. Ord a => NoEscape a -> NoEscape a -> NoEscape a max :: NoEscape a -> NoEscape a -> NoEscape a $cmax :: forall a. Ord a => NoEscape a -> NoEscape a -> NoEscape a >= :: NoEscape a -> NoEscape a -> Bool $c>= :: forall a. Ord a => NoEscape a -> NoEscape a -> Bool > :: NoEscape a -> NoEscape a -> Bool $c> :: forall a. Ord a => NoEscape a -> NoEscape a -> Bool <= :: NoEscape a -> NoEscape a -> Bool $c<= :: forall a. Ord a => NoEscape a -> NoEscape a -> Bool < :: NoEscape a -> NoEscape a -> Bool $c< :: forall a. Ord a => NoEscape a -> NoEscape a -> Bool compare :: NoEscape a -> NoEscape a -> Ordering $ccompare :: forall a. Ord a => NoEscape a -> NoEscape a -> Ordering $cp1Ord :: forall a. Ord a => Eq (NoEscape a) Ord, Typeable (NoEscape a) DataType Constr Typeable (NoEscape a) -> (forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NoEscape a -> c (NoEscape a)) -> (forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (NoEscape a)) -> (NoEscape a -> Constr) -> (NoEscape a -> DataType) -> (forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (NoEscape a))) -> (forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (NoEscape a))) -> ((forall b. Data b => b -> b) -> NoEscape a -> NoEscape a) -> (forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NoEscape a -> r) -> (forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NoEscape a -> r) -> (forall u. (forall d. Data d => d -> u) -> NoEscape a -> [u]) -> (forall u. Int -> (forall d. Data d => d -> u) -> NoEscape a -> u) -> (forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> NoEscape a -> m (NoEscape a)) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> NoEscape a -> m (NoEscape a)) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> NoEscape a -> m (NoEscape a)) -> Data (NoEscape a) NoEscape a -> DataType NoEscape a -> Constr (forall d. Data d => c (t d)) -> Maybe (c (NoEscape a)) (forall b. Data b => b -> b) -> NoEscape a -> NoEscape a (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NoEscape a -> c (NoEscape a) (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (NoEscape a) forall a. Data a => Typeable (NoEscape a) forall a. Data a => NoEscape a -> DataType forall a. Data a => NoEscape a -> Constr forall a. Data a => (forall b. Data b => b -> b) -> NoEscape a -> NoEscape a forall a u. Data a => Int -> (forall d. Data d => d -> u) -> NoEscape a -> u forall a u. Data a => (forall d. Data d => d -> u) -> NoEscape a -> [u] forall a r r'. Data a => (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NoEscape a -> r forall a r r'. Data a => (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NoEscape a -> r forall a (m :: * -> *). (Data a, Monad m) => (forall d. Data d => d -> m d) -> NoEscape a -> m (NoEscape a) forall a (m :: * -> *). (Data a, MonadPlus m) => (forall d. Data d => d -> m d) -> NoEscape a -> m (NoEscape a) forall a (c :: * -> *). Data a => (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (NoEscape a) forall a (c :: * -> *). Data a => (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NoEscape a -> c (NoEscape a) forall a (t :: * -> *) (c :: * -> *). (Data a, Typeable t) => (forall d. Data d => c (t d)) -> Maybe (c (NoEscape a)) forall a (t :: * -> * -> *) (c :: * -> *). (Data a, Typeable t) => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (NoEscape a)) forall a. Typeable a -> (forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> a -> c a) -> (forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c a) -> (a -> Constr) -> (a -> DataType) -> (forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c a)) -> (forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a)) -> ((forall b. Data b => b -> b) -> a -> a) -> (forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r) -> (forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r) -> (forall u. (forall d. Data d => d -> u) -> a -> [u]) -> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u) -> (forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> a -> m a) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> a -> m a) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> a -> m a) -> Data a forall u. Int -> (forall d. Data d => d -> u) -> NoEscape a -> u forall u. (forall d. Data d => d -> u) -> NoEscape a -> [u] forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NoEscape a -> r forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NoEscape a -> r forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> NoEscape a -> m (NoEscape a) forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> NoEscape a -> m (NoEscape a) forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (NoEscape a) forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NoEscape a -> c (NoEscape a) forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (NoEscape a)) forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (NoEscape a)) $cNoEscape :: Constr $tNoEscape :: DataType gmapMo :: (forall d. Data d => d -> m d) -> NoEscape a -> m (NoEscape a) $cgmapMo :: forall a (m :: * -> *). (Data a, MonadPlus m) => (forall d. Data d => d -> m d) -> NoEscape a -> m (NoEscape a) gmapMp :: (forall d. Data d => d -> m d) -> NoEscape a -> m (NoEscape a) $cgmapMp :: forall a (m :: * -> *). (Data a, MonadPlus m) => (forall d. Data d => d -> m d) -> NoEscape a -> m (NoEscape a) gmapM :: (forall d. Data d => d -> m d) -> NoEscape a -> m (NoEscape a) $cgmapM :: forall a (m :: * -> *). (Data a, Monad m) => (forall d. Data d => d -> m d) -> NoEscape a -> m (NoEscape a) gmapQi :: Int -> (forall d. Data d => d -> u) -> NoEscape a -> u $cgmapQi :: forall a u. Data a => Int -> (forall d. Data d => d -> u) -> NoEscape a -> u gmapQ :: (forall d. Data d => d -> u) -> NoEscape a -> [u] $cgmapQ :: forall a u. Data a => (forall d. Data d => d -> u) -> NoEscape a -> [u] gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NoEscape a -> r $cgmapQr :: forall a r r'. Data a => (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NoEscape a -> r gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NoEscape a -> r $cgmapQl :: forall a r r'. Data a => (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NoEscape a -> r gmapT :: (forall b. Data b => b -> b) -> NoEscape a -> NoEscape a $cgmapT :: forall a. Data a => (forall b. Data b => b -> b) -> NoEscape a -> NoEscape a dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (NoEscape a)) $cdataCast2 :: forall a (t :: * -> * -> *) (c :: * -> *). (Data a, Typeable t) => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (NoEscape a)) dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c (NoEscape a)) $cdataCast1 :: forall a (t :: * -> *) (c :: * -> *). (Data a, Typeable t) => (forall d. Data d => c (t d)) -> Maybe (c (NoEscape a)) dataTypeOf :: NoEscape a -> DataType $cdataTypeOf :: forall a. Data a => NoEscape a -> DataType toConstr :: NoEscape a -> Constr $ctoConstr :: forall a. Data a => NoEscape a -> Constr gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (NoEscape a) $cgunfold :: forall a (c :: * -> *). Data a => (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (NoEscape a) gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NoEscape a -> c (NoEscape a) $cgfoldl :: forall a (c :: * -> *). Data a => (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NoEscape a -> c (NoEscape a) $cp1Data :: forall a. Data a => Typeable (NoEscape a) Data, Typeable, ReadPrec [NoEscape a] ReadPrec (NoEscape a) Int -> ReadS (NoEscape a) ReadS [NoEscape a] (Int -> ReadS (NoEscape a)) -> ReadS [NoEscape a] -> ReadPrec (NoEscape a) -> ReadPrec [NoEscape a] -> Read (NoEscape a) forall a. Read a => ReadPrec [NoEscape a] forall a. Read a => ReadPrec (NoEscape a) forall a. Read a => Int -> ReadS (NoEscape a) forall a. Read a => ReadS [NoEscape a] forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a readListPrec :: ReadPrec [NoEscape a] $creadListPrec :: forall a. Read a => ReadPrec [NoEscape a] readPrec :: ReadPrec (NoEscape a) $creadPrec :: forall a. Read a => ReadPrec (NoEscape a) readList :: ReadS [NoEscape a] $creadList :: forall a. Read a => ReadS [NoEscape a] readsPrec :: Int -> ReadS (NoEscape a) $creadsPrec :: forall a. Read a => Int -> ReadS (NoEscape a) Read, Int -> NoEscape a -> ShowS [NoEscape a] -> ShowS NoEscape a -> String (Int -> NoEscape a -> ShowS) -> (NoEscape a -> String) -> ([NoEscape a] -> ShowS) -> Show (NoEscape a) forall a. Show a => Int -> NoEscape a -> ShowS forall a. Show a => [NoEscape a] -> ShowS forall a. Show a => NoEscape a -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [NoEscape a] -> ShowS $cshowList :: forall a. Show a => [NoEscape a] -> ShowS show :: NoEscape a -> String $cshow :: forall a. Show a => NoEscape a -> String showsPrec :: Int -> NoEscape a -> ShowS $cshowsPrec :: forall a. Show a => Int -> NoEscape a -> ShowS Show) instance PathInfo (NoEscape String) where toPathSegments :: NoEscape String -> [Text] toPathSegments (NoEscape String s) = (String -> Text) -> [String] -> [Text] forall a b. (a -> b) -> [a] -> [b] map String -> Text pack ([String] -> [Text]) -> [String] -> [Text] forall a b. (a -> b) -> a -> b $ String -> [String] splitDirectories String s fromPathSegments :: URLParser (NoEscape String) fromPathSegments = do [Text] ps <- ParsecT [Text] () Identity Text -> ParsecT [Text] () Identity [Text] forall (f :: * -> *) a. Alternative f => f a -> f [a] many ParsecT [Text] () Identity Text anySegment NoEscape String -> URLParser (NoEscape String) forall (m :: * -> *) a. Monad m => a -> m a return (String -> NoEscape String forall a. a -> NoEscape a NoEscape ([String] -> String joinPath ([String] -> String) -> [String] -> String forall a b. (a -> b) -> a -> b $ (Text -> String) -> [Text] -> [String] forall a b. (a -> b) -> [a] -> [b] map Text -> String unpack [Text] ps)) data ClckURL = ThemeData String | ThemeDataNoEscape (NoEscape FilePath) | PluginData Text FilePath | Admin AdminURL | Profile ProfileDataURL | JS JSURL deriving (ClckURL -> ClckURL -> Bool (ClckURL -> ClckURL -> Bool) -> (ClckURL -> ClckURL -> Bool) -> Eq ClckURL forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: ClckURL -> ClckURL -> Bool $c/= :: ClckURL -> ClckURL -> Bool == :: ClckURL -> ClckURL -> Bool $c== :: ClckURL -> ClckURL -> Bool Eq, Eq ClckURL Eq ClckURL -> (ClckURL -> ClckURL -> Ordering) -> (ClckURL -> ClckURL -> Bool) -> (ClckURL -> ClckURL -> Bool) -> (ClckURL -> ClckURL -> Bool) -> (ClckURL -> ClckURL -> Bool) -> (ClckURL -> ClckURL -> ClckURL) -> (ClckURL -> ClckURL -> ClckURL) -> Ord ClckURL ClckURL -> ClckURL -> Bool ClckURL -> ClckURL -> Ordering ClckURL -> ClckURL -> ClckURL forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a min :: ClckURL -> ClckURL -> ClckURL $cmin :: ClckURL -> ClckURL -> ClckURL max :: ClckURL -> ClckURL -> ClckURL $cmax :: ClckURL -> ClckURL -> ClckURL >= :: ClckURL -> ClckURL -> Bool $c>= :: ClckURL -> ClckURL -> Bool > :: ClckURL -> ClckURL -> Bool $c> :: ClckURL -> ClckURL -> Bool <= :: ClckURL -> ClckURL -> Bool $c<= :: ClckURL -> ClckURL -> Bool < :: ClckURL -> ClckURL -> Bool $c< :: ClckURL -> ClckURL -> Bool compare :: ClckURL -> ClckURL -> Ordering $ccompare :: ClckURL -> ClckURL -> Ordering $cp1Ord :: Eq ClckURL Ord, Typeable ClckURL DataType Constr Typeable ClckURL -> (forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ClckURL -> c ClckURL) -> (forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ClckURL) -> (ClckURL -> Constr) -> (ClckURL -> DataType) -> (forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ClckURL)) -> (forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ClckURL)) -> ((forall b. Data b => b -> b) -> ClckURL -> ClckURL) -> (forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ClckURL -> r) -> (forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ClckURL -> r) -> (forall u. (forall d. Data d => d -> u) -> ClckURL -> [u]) -> (forall u. Int -> (forall d. Data d => d -> u) -> ClckURL -> u) -> (forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> ClckURL -> m ClckURL) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> ClckURL -> m ClckURL) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> ClckURL -> m ClckURL) -> Data ClckURL ClckURL -> DataType ClckURL -> Constr (forall b. Data b => b -> b) -> ClckURL -> ClckURL (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ClckURL -> c ClckURL (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ClckURL forall a. Typeable a -> (forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> a -> c a) -> (forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c a) -> (a -> Constr) -> (a -> DataType) -> (forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c a)) -> (forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a)) -> ((forall b. Data b => b -> b) -> a -> a) -> (forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r) -> (forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r) -> (forall u. (forall d. Data d => d -> u) -> a -> [u]) -> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u) -> (forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> a -> m a) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> a -> m a) -> (forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> a -> m a) -> Data a forall u. Int -> (forall d. Data d => d -> u) -> ClckURL -> u forall u. (forall d. Data d => d -> u) -> ClckURL -> [u] forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ClckURL -> r forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ClckURL -> r forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> ClckURL -> m ClckURL forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> ClckURL -> m ClckURL forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ClckURL forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ClckURL -> c ClckURL forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ClckURL) forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ClckURL) $cJS :: Constr $cProfile :: Constr $cAdmin :: Constr $cPluginData :: Constr $cThemeDataNoEscape :: Constr $cThemeData :: Constr $tClckURL :: DataType gmapMo :: (forall d. Data d => d -> m d) -> ClckURL -> m ClckURL $cgmapMo :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> ClckURL -> m ClckURL gmapMp :: (forall d. Data d => d -> m d) -> ClckURL -> m ClckURL $cgmapMp :: forall (m :: * -> *). MonadPlus m => (forall d. Data d => d -> m d) -> ClckURL -> m ClckURL gmapM :: (forall d. Data d => d -> m d) -> ClckURL -> m ClckURL $cgmapM :: forall (m :: * -> *). Monad m => (forall d. Data d => d -> m d) -> ClckURL -> m ClckURL gmapQi :: Int -> (forall d. Data d => d -> u) -> ClckURL -> u $cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> ClckURL -> u gmapQ :: (forall d. Data d => d -> u) -> ClckURL -> [u] $cgmapQ :: forall u. (forall d. Data d => d -> u) -> ClckURL -> [u] gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ClckURL -> r $cgmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ClckURL -> r gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ClckURL -> r $cgmapQl :: forall r r'. (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ClckURL -> r gmapT :: (forall b. Data b => b -> b) -> ClckURL -> ClckURL $cgmapT :: (forall b. Data b => b -> b) -> ClckURL -> ClckURL dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ClckURL) $cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *). Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ClckURL) dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c ClckURL) $cdataCast1 :: forall (t :: * -> *) (c :: * -> *). Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ClckURL) dataTypeOf :: ClckURL -> DataType $cdataTypeOf :: ClckURL -> DataType toConstr :: ClckURL -> Constr $ctoConstr :: ClckURL -> Constr gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ClckURL $cgunfold :: forall (c :: * -> *). (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ClckURL gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ClckURL -> c ClckURL $cgfoldl :: forall (c :: * -> *). (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ClckURL -> c ClckURL $cp1Data :: Typeable ClckURL Data, Typeable, ReadPrec [ClckURL] ReadPrec ClckURL Int -> ReadS ClckURL ReadS [ClckURL] (Int -> ReadS ClckURL) -> ReadS [ClckURL] -> ReadPrec ClckURL -> ReadPrec [ClckURL] -> Read ClckURL forall a. (Int -> ReadS a) -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a readListPrec :: ReadPrec [ClckURL] $creadListPrec :: ReadPrec [ClckURL] readPrec :: ReadPrec ClckURL $creadPrec :: ReadPrec ClckURL readList :: ReadS [ClckURL] $creadList :: ReadS [ClckURL] readsPrec :: Int -> ReadS ClckURL $creadsPrec :: Int -> ReadS ClckURL Read, Int -> ClckURL -> ShowS [ClckURL] -> ShowS ClckURL -> String (Int -> ClckURL -> ShowS) -> (ClckURL -> String) -> ([ClckURL] -> ShowS) -> Show ClckURL forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [ClckURL] -> ShowS $cshowList :: [ClckURL] -> ShowS show :: ClckURL -> String $cshow :: ClckURL -> String showsPrec :: Int -> ClckURL -> ShowS $cshowsPrec :: Int -> ClckURL -> ShowS Show) $(derivePathInfo ''ClckURL)