diff options
author | Ben Sima <ben@bsima.me> | 2019-01-30 17:44:19 -0800 |
---|---|---|
committer | Ben Sima <ben@bsima.me> | 2019-01-30 17:44:19 -0800 |
commit | 4673f3c954e9edb00e214de5b26aa94188597790 (patch) | |
tree | 7aa64b78ce1a045d8ed247b5a69f7ee314f2ece6 | |
parent | 67ddf074edec7631067c5f634c3e56e0848cd11f (diff) |
Begin transition to templating
-rw-r--r-- | ibb/Main.hs | 54 |
1 files changed, 51 insertions, 3 deletions
diff --git a/ibb/Main.hs b/ibb/Main.hs index 12225d0..01258f3 100644 --- a/ibb/Main.hs +++ b/ibb/Main.hs @@ -3,9 +3,11 @@ module Main where +import Data.Function ((&)) +import Data.Text (Text) import Web.Scotty (ActionM, scotty, get, html) import Text.Blaze.Html.Renderer.Text (renderHtml) -import Text.Hamlet (shamlet) +import Text.Hamlet (shamlet, hamlet) import Text.Blaze.Html (Html) import Text.Blaze (Markup) import Data.Monoid (mconcat) @@ -15,11 +17,57 @@ render = html . renderHtml main :: IO () main = scotty 3000 $ - get "/" $ render influencerCards + get "/" $ render homepage + +data Person = Person + { _name :: Text + , _twitter :: Text + , _website :: Text + , _books :: [Book] + } + +data Book = Book + { _title :: Text + , _author :: Text + , _link :: Text + } + + +allPeople = + [ Person { _name = "Joe Rogan" + , _twitter = "joerogan" + , _website = "joerogan.com" + , _books = [ Book {_title = "Food of the Gods" + , _author = "fixme" + , _link = "fixme" + } + , Book { _title = "The War of Art" + , _author ="fixme" + , _link ="fixme" + } + ] + } + ] + +displayPerson person = [shamlet| +<h4>#{_name person} +<ul> + $forall book <- (_books person) + <li>#{_title book} +|] + +homepage = [shamlet| +<!doctype html> +<head> + <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous"> +<body> + $forall person <- allPeople + #{displayPerson person} +|] + influencerCards :: Markup influencerCards = [shamlet| -<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous"> <nav .navbar .navbar-light .bg-light> <h3 .navbar-brand>IBB <button .navbar-toggler type="button" data-toggle="collapse" data-target="#navbarTogglerDemo02" aria-controls="navbarTogglerDemo02" aria-expanded="false" aria-label="Toggle navigation"> |