{-# LANGUAGE FlexibleContexts, FlexibleInstances, MultiParamTypeClasses #-} {-# OPTIONS_GHC -F -pgmFtrhsx #-} module GuestBook.View where import GuestBook.State2 (GuestBook(..),GuestBookEntry(..)) import HSP import qualified HSX.XMLGenerator as HSX (XML) import System.Locale (defaultTimeLocale) import System.Time(ClockTime(..), formatCalendarTime, toUTCTime) -- * Convenience Functions dateStr :: ClockTime -> String dateStr ct = formatCalendarTime defaultTimeLocale "%a, %B %d, %Y at %H:%M:%S (UTC)" (toUTCTime ct) -- * Main Implementation instance (XMLGenerator m) => (EmbedAsChild m (GuestBookEntry, Bool)) where asChild ((GuestBookEntry author message date email), alt) = <%
  • <% author ++ (displayemail email) %> said:

    <% map p (lines message) %>
    <% dateStr date %>
  • %> where p str =

    <% str %>

    displayemail "" = "" displayemail x = "<" ++ x ++ ">" instance (XMLGenerator m) => (EmbedAsChild m GuestBook) where asChild (GuestBook entries) = <%

    Words of Wisdom

    %> seeOtherXML :: (XMLGenerator m) => String -> XMLGenT m (HSX.XML m) seeOtherXML url = <% url %>