The Stupid Haskeller

Posted on 2019-08-10

Mauris in lorem nisl. Maecenas tempus facilisis ante, eget viverra nisl tincidunt et. Donec turpis lectus, mattis ac malesuada a, accumsan eu libero. Morbi condimentum, tortor et tincidunt ullamcorper, sem quam pretium nulla, id convallis lectus libero nec turpis. Proin dapibus nisi id est sodales nec ultrices tortor pellentesque. Vivamus vel nisi ac lacus sollicitudin vulputate ac ut ligula. Nullam feugiat risus eget eros gravida in molestie sapien euismod. Nunc sed hendrerit orci. Nulla mollis consequat lorem ac blandit. Ut et turpis mauris. Nulla est odio, posuere id ullamcorper sit amet, tincidunt vel justo. Curabitur placerat tincidunt varius. Nulla vulputate, ipsum eu consectetur mollis, dui nibh aliquam neque, at ultricies leo ligula et arcu. Proin et mi eget tellus sodales lobortis. Sed tempor, urna vel pulvinar faucibus, lectus urna vehicula ante, at facilisis dolor odio at lorem. Morbi vehicula euismod urna, et imperdiet urna ornare vitae.

--------------------------------------------------------------------------------
{-# LANGUAGE OverloadedStrings #-}
import           Data.Default
import           Data.Monoid (mappend)
import           Hakyll


--------------------------------------------------------------------------------
main :: IO ()
main = hakyllWith cfg $ do
    match "images/*" $ do
        route   idRoute
        compile copyFileCompiler

    match "css/*" $ do
        route   idRoute
        compile compressCssCompiler

    match (fromList ["about.rst", "contact.markdown"]) $ do
        route   $ setExtension "html"
        compile $ pandocCompiler
            >>= loadAndApplyTemplate "templates/default.html" defaultContext
            >>= relativizeUrls

    match "posts/*" $ do
        route $ setExtension "html"
        compile $ pandocCompiler
            >>= loadAndApplyTemplate "templates/post.html"    postCtx
            >>= loadAndApplyTemplate "templates/default.html" postCtx
            >>= relativizeUrls

    create ["archive.html"] $ do
        route idRoute
        compile $ do
            posts <- recentFirst =<< loadAll "posts/*"
            let archiveCtx =
                    listField "posts" postCtx (return posts) `mappend`
                    constField "title" "Archives"            `mappend`
                    defaultContext

            makeItem ""
                >>= loadAndApplyTemplate "templates/archive.html" archiveCtx
                >>= loadAndApplyTemplate "templates/default.html" archiveCtx
                >>= relativizeUrls


    match "index.html" $ do
        route idRoute
        compile $ do
            posts <- recentFirst =<< loadAll "posts/*"
            let indexCtx =
                    listField "posts" postCtx (return posts) `mappend`
                    constField "title" "Home"                `mappend`
                    defaultContext

            getResourceBody
                >>= applyAsTemplate indexCtx
                >>= loadAndApplyTemplate "templates/default.html" indexCtx
                >>= relativizeUrls

    match "templates/*" $ compile templateBodyCompiler


--------------------------------------------------------------------------------
postCtx :: Context String
postCtx =
    dateField "date" "%B %e, %Y" `mappend`
    defaultContext

--------------------------------------------------------------------------------
cfg :: Configuration
cfg = def
  { previewHost = "0.0.0.0"
  , previewPort = 8000
  }

Sed tincidunt sollicitudin ultrices. In hac habitasse platea dictumst. Morbi ligula lectus, egestas at ultricies nec, fringilla et tellus. Duis urna lorem, bibendum a ornare sed, euismod sed nunc. Aliquam tempor massa at velit fringilla fringilla. Praesent sit amet tempor felis. Maecenas id felis ac velit aliquam tempor a sit amet orci. Nunc placerat nulla pellentesque sem commodo cursus. Praesent quis sapien orci, quis ultricies augue. Nam vestibulum sem non augue semper tincidunt pellentesque ipsum volutpat. Duis congue, nunc a aliquam luctus, quam ante convallis nisi, ac pellentesque lacus orci vel turpis. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Suspendisse hendrerit nisl eu felis sagittis faucibus. Nunc eu congue lorem. Quisque non nibh nisi, et ultrices massa. Sed vitae erat vitae nulla pellentesque fermentum.

Ut diam nunc, consectetur ut ultrices eu, iaculis sed felis. Sed lacinia, odio et accumsan luctus, arcu ipsum accumsan erat, sit amet malesuada libero lacus et velit. Donec accumsan tristique tristique. Proin a metus magna, vitae mattis nisl. Integer a libero ipsum. Mauris faucibus eleifend metus id sodales. Morbi ornare, nibh nec facilisis imperdiet, turpis sem commodo lorem, id commodo mauris metus vitae justo. Etiam at pellentesque tortor. Proin mollis accumsan ligula, nec tempus augue auctor quis. Nulla lacinia, mi quis lobortis auctor, nisi diam posuere dui, pulvinar feugiat dui libero eget quam. Fusce eu risus nunc, a consectetur orci. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Maecenas venenatis aliquet orci, a ultricies sem facilisis eu. Donec dolor purus, porta condimentum convallis nec, dignissim nec libero.

Etiam rutrum ultricies dui, et interdum metus elementum et. Nulla sapien nunc, interdum tristique porttitor in, laoreet vitae mi. Ut vehicula auctor mauris sit amet bibendum. Phasellus adipiscing mattis libero, eget adipiscing erat dignissim at. Vivamus convallis malesuada metus nec cursus. Ut cursus, lorem eleifend sollicitudin condimentum, felis tortor sodales augue, ac tempus lacus ipsum vitae quam. Vestibulum vitae lacus non tortor vehicula iaculis faucibus quis massa.

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Duis malesuada neque nec ante porttitor accumsan. Suspendisse potenti. Aliquam in lacus magna, imperdiet laoreet lectus. Praesent id diam nec ante commodo rhoncus nec vel augue. Pellentesque tortor massa, dignissim ut sagittis sed, hendrerit vitae nunc. Nam gravida, urna vitae hendrerit rutrum, felis augue vulputate tortor, ut varius velit libero nec lectus. In adipiscing massa in est scelerisque ullamcorper. Vivamus in nisi metus.