{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} module Main where import Data.Text (Text) import Text.Blaze (Markup) import Text.Blaze.Html (Html) import Text.Blaze.Html.Renderer.Text (renderHtml) import Text.Hamlet (shamlet) import Web.Scotty (ActionM, scotty, get, html) render :: Html -> ActionM () render = html . renderHtml main :: IO () main = scotty 3000 $ get "/" $ render homepage data Person = Person { _name :: Text , _pic :: Text , _twitter :: Text , _website :: Text , _books :: [Book] } data Book = Book { _title :: Text , _author :: Text , _amznref :: Text } allPeople :: [Person] allPeople = [ Person { _name = "Joe Rogan" , _pic = "https://pbs.twimg.com/profile_images/552307347851210752/vrXDcTFC_400x400.jpeg" , _twitter = "joerogan" , _website = "http://joerogan.com" , _books = [ Book {_title = "Food of the Gods" , _author = "Terence McKenna" , _amznref = "0553371304" } , Book { _title = "The War of Art" , _author ="Steven Pressfield" , _amznref ="B007A4SDCG" } ] } , Person { _name = "Beyoncé" , _pic = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTxT84sF19lxdnSiblIXAp-Y4wAigpQn8sZ2GtAerIR_ApiiEJfFQ" , _twitter = "Beyonce" , _website = "http://beyonce.com" , _books = [ Book { _title = "What Will It Take To Make A Woman President?" , _author = "Marianne Schnall" , _amznref = "B00E257Y7G"} ] } , Person { _name = "Barrack Obama" , _pic = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQeLzftR36p0hYI-EKNa5fm7CYDuN-vyz23_R48ocqa8X1nPr6C" , _twitter = "BarackObama" , _website = "http://barackobama.com" , _books = [ Book { _title = "An American Marriage" , _author = "Tayari Jones" , _amznref = "B01NCUXEFR"} , Book { _title = "Americanah" , _author = "Chimamanda Ngozi Adichie" , _amznref = "B00A9ET4MC"} ] } , Person { _name = "Warren Buffet" , _pic = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQQbmnUykS6zqgzaf44tsq1RAsnHe6H7fapEoSqUwAoJGSFKbAPSw" , _twitter = "WarrenBuffett" , _website = "http://berkshirehathaway.com" , _books = [ Book { _title = "The Intelligent Investor" , _author = "Benjamin Graham" , _amznref = "B000FC12C8"} , Book { _title = "Security Analysis" , _author = "Benjamin Graham" , _amznref = "B0037JO5J8"} ] } , Person { _name = "Bill Gates" , _pic = "https://pbs.twimg.com/profile_images/988775660163252226/XpgonN0X_400x400.jpg" , _twitter = "BillGates" , _website = "https://www.gatesnotes.com" , _books = [ Book { _title = "Leonardo da Vinci" , _author = "Walter Isaacson" , _amznref = "1501139169" } , Book { _title = "Educated" , _author = "Tara Wetsover" , _amznref = "B072BLVM83" } ] } ] displayPerson :: Person -> Markup displayPerson person = [shamlet|

#{_name person}