{-# LANGUAGE Arrows #-}
module JuicyBar.Input.Date (getDate) where
import FRP.Grapefruit.Signal as Signal
import FRP.Grapefruit.Signal.Continuous as CSignal
import FRP.Grapefruit.Setup (Setup, fromIO)
import FRP.Grapefruit.Circuit as Circuit
import Control.Arrow as Arrow
import System.IO
import System.Locale
import System.Time

produceDate :: String -> IO String
produceDate format = do
    t <- toCalendarTime =<< getClockTime
    return $ formatCalendarTime defaultTimeLocale format t
getDate :: Circuit era String (CSignal era String)
getDate = proc format -> do
    signal <- produce $ CSignal.producer $ produceDate format -<< ()
    returnA -< signal
