{-# OPTIONS_GHC -fglasgow-exts -F -pgmFtrhsx #-} module HSP.Google.Analytics ( UACCT(..) , analytics , addAnalytics ) where import Data.Generics (Data, Typeable) import HSP import Prelude hiding (head) newtype UACCT = UACCT String -- ^ The UACCT provided to you by Google deriving (Read, Show, Eq, Ord, Typeable, Data) -- |create the google analytics script tags -- NOTE: you must put the <% analytics yourUACCT %> immediately before the tag -- See also: addAnalytics analytics :: (XMLGenerator m) => UACCT -> GenXMLList m analytics (UACCT uacct) = do a <- b <- return [a,b] -- |automatically add the google analytics scipt tags immediately before the element -- NOTE: this function is not idepotent addAnalytics :: ( AppendChild m XML , EmbedAsChild m XML , EmbedAsAttr m Attribute , XMLGenerator m) => UACCT -> XMLGenT m XML -> GenXML m addAnalytics uacct pg = do page <- pg a <- analytics uacct case page of <[ head, body ]> -> <% head %> <% body <: a %> o -> error ("Failed to add analytics." ++ show o) {- Example Analytics Code from Google: -}