From d129cdc775b728c700dcabe0fc9b600235b92284 Mon Sep 17 00:00:00 2001 From: Jasper Van der Jeugt Date: Sun, 13 Jan 2013 12:18:24 +0100 Subject: Partition tutorials into series and articles --- web/site.hs | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'web/site.hs') diff --git a/web/site.hs b/web/site.hs index 79578dd..2fca8e0 100644 --- a/web/site.hs +++ b/web/site.hs @@ -3,7 +3,7 @@ import Control.Applicative ((<$>)) import Control.Arrow (second) import Control.Monad (forM_) -import Data.List (isPrefixOf) +import Data.List (isPrefixOf, partition) import Data.Monoid (mappend) import Hakyll import System.FilePath (dropTrailingPathSeparator, splitPath) @@ -53,12 +53,16 @@ main = hakyllWith config $ do compile $ do tutorials <- loadAll "tutorials/*" itemTpl <- loadBody "templates/tutorial-item.html" - list <- applyTemplateList itemTpl defaultContext $ - chronological tutorials + let (series, articles) = partitionTutorials $ + chronological tutorials + + series' <- applyTemplateList itemTpl defaultContext series + articles' <- applyTemplateList itemTpl defaultContext articles let tutorialsCtx = - constField "title" "Tutorials" `mappend` - constField "tutorials" list `mappend` + constField "title" "Tutorials" `mappend` + constField "series" series' `mappend` + constField "articles" articles' `mappend` defaultContext makeItem "" @@ -102,3 +106,9 @@ hackage url (packageName, version') = second (drop 1) $ break (== '-') package (baseName : package : _) = map dropTrailingPathSeparator $ reverse $ splitPath url + + +-------------------------------------------------------------------------------- +-- | Partition tutorials into tutorial series & other articles +partitionTutorials :: [Item a] -> ([Item a], [Item a]) +partitionTutorials = partition $ matches (fromRegex "\\d*-.*") . itemIdentifier -- cgit v1.2.3