Add Zoned time to class.
This commit is contained in:
parent
fe0b71a2f1
commit
9d9f615593
1 changed files with 15 additions and 1 deletions
|
@ -35,6 +35,7 @@ module Text.Pandoc.Class ( PandocMonad(..)
|
||||||
, PureState(..)
|
, PureState(..)
|
||||||
, PureEnv(..)
|
, PureEnv(..)
|
||||||
, getPOSIXTime
|
, getPOSIXTime
|
||||||
|
, getZonedTime
|
||||||
, addWarningWithPos
|
, addWarningWithPos
|
||||||
, PandocIO(..)
|
, PandocIO(..)
|
||||||
, PandocPure(..)
|
, PandocPure(..)
|
||||||
|
@ -64,6 +65,8 @@ import qualified Text.Pandoc.Compat.Time as IO (getCurrentTime)
|
||||||
import Data.Time.Clock.POSIX ( utcTimeToPOSIXSeconds
|
import Data.Time.Clock.POSIX ( utcTimeToPOSIXSeconds
|
||||||
, posixSecondsToUTCTime
|
, posixSecondsToUTCTime
|
||||||
, POSIXTime )
|
, POSIXTime )
|
||||||
|
import Data.Time.LocalTime (TimeZone, ZonedTime, utcToZonedTime, utc)
|
||||||
|
import qualified Data.Time.LocalTime as IO (getCurrentTimeZone)
|
||||||
import Text.Pandoc.MIME (MimeType, getMimeType)
|
import Text.Pandoc.MIME (MimeType, getMimeType)
|
||||||
import Text.Pandoc.MediaBag (MediaBag)
|
import Text.Pandoc.MediaBag (MediaBag)
|
||||||
import qualified Text.Pandoc.MediaBag as MB
|
import qualified Text.Pandoc.MediaBag as MB
|
||||||
|
@ -82,12 +85,12 @@ import Data.Word (Word8)
|
||||||
import Data.Typeable
|
import Data.Typeable
|
||||||
import Data.Default
|
import Data.Default
|
||||||
import System.IO.Error
|
import System.IO.Error
|
||||||
import Data.Map (Map)
|
|
||||||
import qualified Data.Map as M
|
import qualified Data.Map as M
|
||||||
|
|
||||||
class (Functor m, Applicative m, Monad m, MonadError PandocExecutionError m) => PandocMonad m where
|
class (Functor m, Applicative m, Monad m, MonadError PandocExecutionError m) => PandocMonad m where
|
||||||
lookupEnv :: String -> m (Maybe String)
|
lookupEnv :: String -> m (Maybe String)
|
||||||
getCurrentTime :: m UTCTime
|
getCurrentTime :: m UTCTime
|
||||||
|
getCurrentTimeZone :: m TimeZone
|
||||||
getDefaultReferenceDocx :: Maybe FilePath -> m Archive
|
getDefaultReferenceDocx :: Maybe FilePath -> m Archive
|
||||||
getDefaultReferenceODT :: Maybe FilePath -> m Archive
|
getDefaultReferenceODT :: Maybe FilePath -> m Archive
|
||||||
newStdGen :: m StdGen
|
newStdGen :: m StdGen
|
||||||
|
@ -117,6 +120,12 @@ class (Functor m, Applicative m, Monad m, MonadError PandocExecutionError m) =>
|
||||||
getPOSIXTime :: (PandocMonad m) => m POSIXTime
|
getPOSIXTime :: (PandocMonad m) => m POSIXTime
|
||||||
getPOSIXTime = utcTimeToPOSIXSeconds <$> getCurrentTime
|
getPOSIXTime = utcTimeToPOSIXSeconds <$> getCurrentTime
|
||||||
|
|
||||||
|
getZonedTime :: (PandocMonad m) => m ZonedTime
|
||||||
|
getZonedTime = do
|
||||||
|
t <- getCurrentTime
|
||||||
|
tz <- getCurrentTimeZone
|
||||||
|
return $ utcToZonedTime tz t
|
||||||
|
|
||||||
addWarningWithPos :: PandocMonad m
|
addWarningWithPos :: PandocMonad m
|
||||||
=> Maybe SourcePos
|
=> Maybe SourcePos
|
||||||
-> String
|
-> String
|
||||||
|
@ -169,6 +178,7 @@ newtype PandocIO a = PandocIO {
|
||||||
instance PandocMonad PandocIO where
|
instance PandocMonad PandocIO where
|
||||||
lookupEnv = liftIO . IO.lookupEnv
|
lookupEnv = liftIO . IO.lookupEnv
|
||||||
getCurrentTime = liftIO IO.getCurrentTime
|
getCurrentTime = liftIO IO.getCurrentTime
|
||||||
|
getCurrentTimeZone = liftIO IO.getCurrentTimeZone
|
||||||
getDefaultReferenceDocx = liftIO . IO.getDefaultReferenceDocx
|
getDefaultReferenceDocx = liftIO . IO.getDefaultReferenceDocx
|
||||||
getDefaultReferenceODT = liftIO . IO.getDefaultReferenceODT
|
getDefaultReferenceODT = liftIO . IO.getDefaultReferenceODT
|
||||||
newStdGen = liftIO IO.newStdGen
|
newStdGen = liftIO IO.newStdGen
|
||||||
|
@ -236,6 +246,7 @@ getFileInfo fp tree = M.lookup fp $ unFileTree tree
|
||||||
|
|
||||||
data PureEnv = PureEnv { envEnv :: [(String, String)]
|
data PureEnv = PureEnv { envEnv :: [(String, String)]
|
||||||
, envTime :: UTCTime
|
, envTime :: UTCTime
|
||||||
|
, envTimeZone :: TimeZone
|
||||||
, envReferenceDocx :: Archive
|
, envReferenceDocx :: Archive
|
||||||
, envReferenceODT :: Archive
|
, envReferenceODT :: Archive
|
||||||
, envFiles :: FileTree
|
, envFiles :: FileTree
|
||||||
|
@ -249,6 +260,7 @@ data PureEnv = PureEnv { envEnv :: [(String, String)]
|
||||||
instance Default PureEnv where
|
instance Default PureEnv where
|
||||||
def = PureEnv { envEnv = [("USER", "pandoc-user")]
|
def = PureEnv { envEnv = [("USER", "pandoc-user")]
|
||||||
, envTime = posixSecondsToUTCTime 0
|
, envTime = posixSecondsToUTCTime 0
|
||||||
|
, envTimeZone = utc
|
||||||
, envReferenceDocx = emptyArchive
|
, envReferenceDocx = emptyArchive
|
||||||
, envReferenceODT = emptyArchive
|
, envReferenceODT = emptyArchive
|
||||||
, envFiles = mempty
|
, envFiles = mempty
|
||||||
|
@ -280,6 +292,8 @@ instance PandocMonad PandocPure where
|
||||||
|
|
||||||
getCurrentTime = asks envTime
|
getCurrentTime = asks envTime
|
||||||
|
|
||||||
|
getCurrentTimeZone = asks envTimeZone
|
||||||
|
|
||||||
getDefaultReferenceDocx _ = asks envReferenceDocx
|
getDefaultReferenceDocx _ = asks envReferenceDocx
|
||||||
|
|
||||||
getDefaultReferenceODT _ = asks envReferenceODT
|
getDefaultReferenceODT _ = asks envReferenceODT
|
||||||
|
|
Loading…
Add table
Reference in a new issue