@@ -10,6 +10,7 @@ module Hakyll.Web.Page
11 , pageRead
11 , pageRead
12 , addDefaultFields
12 , addDefaultFields
15import Prelude hiding (id)
16import Prelude hiding (id)
@@ -19,6 +20,8 @@ import System.FilePath (takeBaseName, takeDirectory)
19import Data.Monoid (Monoid, mempty)
20import Data.Monoid (Monoid, mempty)
20import Data.Map (Map)
21import Data.Map (Map)
21import qualified Data.Map as M
22import qualified Data.Map as M
23+import Data.List (sortBy)
24+import Data.Ord (comparing)
23import Hakyll.Core.Identifier
26import Hakyll.Core.Identifier
24import Hakyll.Core.Compiler
27import Hakyll.Core.Compiler
@@ -71,3 +74,10 @@ addDefaultFields = (getRoute &&& id >>^ uncurry addRoute)
71 . setField "path" p
74 . setField "path" p
73 p = toFilePath i
76 p = toFilePath i
78+-- | Sort posts based on the basename of the post. This is equivalent to a
79+-- chronologival sort, because of the @year-month-day-title.extension@ naming
80+-- convention in Hakyll.
82+sortByBaseName :: [Page a] -> [Page a]
83+sortByBaseName = sortBy $ comparing $ takeBaseName . getField "path"