summaryrefslogtreecommitdiff
path: root/src/Site/Rules.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Site/Rules.hs')
-rw-r--r--src/Site/Rules.hs41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/Site/Rules.hs b/src/Site/Rules.hs
new file mode 100644
index 0000000..731d6d9
--- /dev/null
+++ b/src/Site/Rules.hs
@@ -0,0 +1,41 @@
+module Site.Rules
+ ( indexRules
+ , contentRules
+ )
+where
+import Site.Content
+import Hakyll
+
+indexRules :: Content -> Rules ()
+indexRules content = create paths $ do
+ route routeConfig
+ compile
+ $ makeItem ""
+ >>= loadAndApplyTemplate itemListTemplate listContext
+ >>= loadAndApplyTemplate itemTemplate context
+ >>= relativizeUrls
+ where
+ paths = _contentPaths content
+ routeConfig = _contentRoute content
+ listTemplate = _contentIndexTemplate content
+ template = _contentTemplate content
+ context = _contentContext content
+ listContext = _contentIndexContext content
+ itemListTemplate =
+ fromFilePath $ "templates/" ++ listTemplate ++ ".html"
+ itemTemplate = fromFilePath $ "templates/" ++ template ++ ".html"
+
+
+contentRules :: Content -> Rules ()
+contentRules content = match glob $ do
+ route routeConfig
+ compile
+ $ pandocCompiler
+ >>= loadAndApplyTemplate itemTemplate context
+ >>= relativizeUrls
+ where
+ glob = _contentPattern content
+ routeConfig = _contentRoute content
+ template = _contentTemplate content
+ context = _contentContext content
+ itemTemplate = fromFilePath $ "templates/" ++ template ++ ".html"