From 718388495b41089eddcac9ae55aae4ca68620505 Mon Sep 17 00:00:00 2001 From: Simonas Kazlauskas Date: Sat, 23 Feb 2013 12:47:01 +0200 Subject: chronological, recentFirst now respects metadata Solves #111 --- src/Hakyll/Web/Template/List.hs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'src/Hakyll/Web') diff --git a/src/Hakyll/Web/Template/List.hs b/src/Hakyll/Web/Template/List.hs index 6d2a341..5f94369 100644 --- a/src/Hakyll/Web/Template/List.hs +++ b/src/Hakyll/Web/Template/List.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE TupleSections #-} -------------------------------------------------------------------------------- -- | Provides an easy way to combine several items in a list. The applications -- are obvious: @@ -16,9 +17,11 @@ module Hakyll.Web.Template.List -------------------------------------------------------------------------------- +import Control.Monad (liftM) import Data.List (intersperse, sortBy) import Data.Ord (comparing) import System.FilePath (takeBaseName) +import System.Locale (defaultTimeLocale) -------------------------------------------------------------------------------- @@ -56,11 +59,13 @@ applyJoinTemplateList delimiter tpl context items = do -- | Sort pages chronologically. This function assumes that the pages have a -- @year-month-day-title.extension@ naming scheme -- as is the convention in -- Hakyll. -chronological :: [Item a] -> [Item a] -chronological = sortBy $ comparing $ takeBaseName . toFilePath . itemIdentifier - +chronological :: [Item a] -> Compiler [Item a] +chronological = sortByM $ getItemUTC defaultTimeLocale . itemIdentifier + where sortByM :: (Monad m, Ord k) => (a -> m k) -> [a] -> m [a] + sortByM f xs = liftM (map fst . sortBy (comparing snd)) $ + mapM (\x -> liftM (x,) (f x)) xs -------------------------------------------------------------------------------- -- | The reverse of 'chronological' -recentFirst :: [Item a] -> [Item a] -recentFirst = reverse . chronological +recentFirst :: [Item a] -> Compiler [Item a] +recentFirst i = return . reverse =<< chronological i -- cgit v1.2.3