Luke Plant avatar Luke Plant committed 6d48978

Switched to record syntax data structure for template variables instead of multiple parameters

Comments (0)

Files changed (1)

src/Blog/Templates.hs

+{-# OPTIONS_GHC -fglasgow-exts #-}
 module Blog.Templates
 where
 
 import Text.XHtml
 
+
+data PageVars t1 t2 = (HTML t1, HTML t2) => PageVars
+    { ptitle :: t1
+    , pcontent :: t2
+    }
+
 -- Complete page template
-page ptitle pcontent =
+page vars =
     header
     << (meta ! [httpequiv "Content-Type",
                 content "text/html; charset=utf-8"]
         +++ thelink ! [rel "shortcut icon",
                        href "/favicon.ico",
                        thetype "image/x-icon"] << ""
-        +++ (thetitle << ptitle)
+        +++ (thetitle << ptitle vars)
        )
     +++
     body
     << thediv ! [identifier "container"]
-           << pcontent
+           << pcontent vars
 
 
 -- Page specific templates
 
-mainIndexPage = page "All Unkept"
-                (thediv ! [identifier "maintitle"]
-                            << thediv
-                                   << "All Unkept"
-                 +++
-                 thediv ! [identifier "content"]
-                            << h1 << "This is the title"
-                            +++ p << "This is a test")
+mainIndexPage = page $ PageVars
+                { ptitle = "All Unkept"
+                , pcontent = (thediv ! [identifier "maintitle"]
+                              << thediv
+                                     << "All Unkept"
+                              +++
+                              thediv ! [identifier "content"]
+                                         << h1 << "This is the title"
+                              +++ p << "This is a test")
+                }
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.