on master help sign in
Move CPP logic into separate module for #192
commitfb6bf738d357067228dc77a2bf638bdcfb8bee15 authorMichael Snoyman <michael@snoyman.com> dateMon 4 Nov 2013, 11:06 (13 years ago) parent747697e
3 files changed+26−13
wai-extra/Network/Wai/Middleware/RequestLogger.hs+5−13 wai-extra/Network/Wai/Middleware/RequestLogger/Internal.hs+20 wai-extra/wai-extra.cabal+1
wai-extra/Network/Wai/Middleware/RequestLogger.hs+5−13
@@ -1,6 +1,8 @@
11{-# LANGUAGE OverloadedStrings #-}
22{-# LANGUAGE RecordWildCards #-}
3−{-# LANGUAGE CPP #-}
3+
4+-- NOTE: Due to https://github.com/yesodweb/wai/issues/192, this module should
5+-- not use CPP.
46module Network.Wai.Middleware.RequestLogger
57 ( -- * Basic stdout logging
68 logStdout
@@ -39,11 +41,7 @@ import System.IO.Unsafe
3941
4042import Data.Default (Default (def))
4143import Network.Wai.Logger.Format (apacheFormat, IPAddrSource (..))
42−#if MIN_VERSION_fast_logger(0,3,0)
43−import System.Date.Cache (ondemandDateCacher)
44−#else
45−import System.Log.FastLogger.Date (getDate, dateInit, ZonedDate)
46−#endif
44+import Network.Wai.Middleware.RequestLogger.Internal
4745
4846data OutputFormat = Apache IPAddrSource
4947 | Detailed Bool -- ^ use colors?
@@ -96,13 +94,7 @@ mkRequestLogger RequestLoggerSettings{..} = do
9694 dateHelper mgetdate = do
9795 case mgetdate of
9896 Just x -> return x
99−#if MIN_VERSION_fast_logger(0, 3, 0)
100− Nothing -> do
101− (getter,_) <- ondemandDateCacher zonedDateCacheConf
102− return getter
103−#else
104− Nothing -> fmap getDate dateInit
105−#endif
97+ Nothing -> getDateGetter
10698
10799apacheMiddleware :: Callback -> IPAddrSource -> IO ZonedDate -> Middleware
108100apacheMiddleware cb ipsrc getdate = customMiddleware cb getdate $ apacheFormat ipsrc
wai-extra/Network/Wai/Middleware/RequestLogger/Internal.hsnew file+20
@@ -0,0 +1,20 @@
1+{-# LANGUAGE CPP #-}
2+-- | A module for containing some CPPed code, due to:
3+--
4+-- https://github.com/yesodweb/wai/issues/192
5+module Network.Wai.Middleware.RequestLogger.Internal where
6+
7+import Data.ByteString (ByteString)
8+import System.Log.FastLogger
9+#if MIN_VERSION_fast_logger(0,3,0)
10+import System.Date.Cache (ondemandDateCacher)
11+#else
12+import System.Log.FastLogger.Date (getDate, dateInit, ZonedDate)
13+#endif
14+
15+getDateGetter :: IO (IO ByteString)
16+#if MIN_VERSION_fast_logger(0, 3, 0)
17+getDateGetter = fmap fst $ ondemandDateCacher zonedDateCacheConf
18+#else
19+getDateGetter = fmap getDate dateInit
20+#endif
wai-extra/wai-extra.cabal+1
@@ -61,6 +61,7 @@ Library
6161 Network.Wai.Middleware.Vhost
6262 Network.Wai.Middleware.HttpAuth
6363 Network.Wai.Parse
64+ other-modules: Network.Wai.Middleware.RequestLogger.Internal
6465 ghc-options: -Wall
6566
6667