diff options
Diffstat (limited to 'src/Hakyll/Core/Provider')
-rw-r--r-- | src/Hakyll/Core/Provider/Internal.hs | 7 | ||||
-rw-r--r-- | src/Hakyll/Core/Provider/Metadata.hs | 37 |
2 files changed, 5 insertions, 39 deletions
diff --git a/src/Hakyll/Core/Provider/Internal.hs b/src/Hakyll/Core/Provider/Internal.hs index fdf1342..34400fd 100644 --- a/src/Hakyll/Core/Provider/Internal.hs +++ b/src/Hakyll/Core/Provider/Internal.hs @@ -31,8 +31,7 @@ import Data.Maybe (fromMaybe) import Data.Monoid (mempty) import Data.Set (Set) import qualified Data.Set as S -import Data.Time (Day (..), UTCTime (..), - secondsToDiffTime) +import Data.Time (Day (..), UTCTime (..)) import Data.Typeable (Typeable) import System.Directory (getModificationTime) import System.FilePath (addExtension, (</>)) @@ -62,11 +61,11 @@ newtype BinaryTime = BinaryTime {unBinaryTime :: UTCTime} -------------------------------------------------------------------------------- instance Binary BinaryTime where put (BinaryTime (UTCTime (ModifiedJulianDay d) dt)) = - put d >> put (floor dt :: Integer) + put d >> put (toRational dt) get = fmap BinaryTime $ UTCTime <$> (ModifiedJulianDay <$> get) - <*> (secondsToDiffTime <$> get) + <*> (fromRational <$> get) -------------------------------------------------------------------------------- diff --git a/src/Hakyll/Core/Provider/Metadata.hs b/src/Hakyll/Core/Provider/Metadata.hs index 889291f..7e4d7ed 100644 --- a/src/Hakyll/Core/Provider/Metadata.hs +++ b/src/Hakyll/Core/Provider/Metadata.hs @@ -20,8 +20,6 @@ import System.IO as IO import Text.Parsec ((<?>)) import qualified Text.Parsec as P import Text.Parsec.String (Parser) -import System.FilePath.Posix -import Control.Monad (liftM) -------------------------------------------------------------------------------- @@ -30,7 +28,7 @@ import Hakyll.Core.Metadata import Hakyll.Core.Provider.Internal import Hakyll.Core.Util.Parser import Hakyll.Core.Util.String -import Hakyll.Core.Identifier.Pattern + -------------------------------------------------------------------------------- loadMetadata :: Provider -> Identifier -> IO (Metadata, Maybe String) @@ -44,9 +42,7 @@ loadMetadata p identifier = do Nothing -> return M.empty Just mi' -> loadMetadataFile $ resourceFilePath p mi' - gmd <- loadGlobalMetadata p identifier - - return (M.unions [md, gmd], body) + return (M.union md emd, body) where normal = setVersion Nothing identifier fp = resourceFilePath p identifier @@ -137,32 +133,3 @@ page = do metadata' <- P.option [] metadataBlock body <- P.many P.anyChar return (metadata', body) - - --------------------------------------------------------------------------------- --- | Load directory-wise metadata -loadGlobalMetadata :: Provider -> Identifier -> IO Metadata -loadGlobalMetadata p fp = liftM M.fromList $ loadgm fp where - loadgm :: Identifier -> IO [(String, String)] - loadgm = liftM concat . mapM loadOne . reverse . filter (resourceExists p) . metadataFiles - loadOne mfp = - let path = resourceFilePath p mfp - dir = takeDirectory $ toFilePath mfp - -- TODO: It might be better to print warning and continue - in either (error.show) (findMetadata dir) . P.parse namedMetadata path <$> readFile path - findMetadata dir = - concatMap snd . filter (flip matches fp . fromGlob . normalise . combine dir . fst) - -namedMetadata :: Parser [(String, [(String, String)])] -namedMetadata = liftA2 (:) (namedMetadataBlock False) $ P.many $ namedMetadataBlock True - -namedMetadataBlock :: Bool -> Parser (String, [(String, String)]) -namedMetadataBlock isNamed = do - name <- if isNamed - then P.many1 (P.char '-') *> P.many inlineSpace *> P.manyTill P.anyChar newline - else pure "**" - metadata' <- metadata - P.skipMany P.space - return (name, metadata') - - |