diff options
author | Lars-Dominik Braun <lars@6xq.net> | 2015-04-15 11:38:13 +0200 |
---|---|---|
committer | Lars-Dominik Braun <lars@6xq.net> | 2015-04-27 09:45:58 +0200 |
commit | 6454ddc2e20599306edceca0fa16617fcad1d6cd (patch) | |
tree | c5b61d9525333e4724ae1f6dcc06b4ae159627a3 /Main.hs | |
parent | eeb44e40a76f1e58886b70b9ba1cf65bb017dbe6 (diff) | |
download | comatose-6454ddc2e20599306edceca0fa16617fcad1d6cd.tar.gz comatose-6454ddc2e20599306edceca0fa16617fcad1d6cd.tar.bz2 comatose-6454ddc2e20599306edceca0fa16617fcad1d6cd.zip |
Add references
Diffstat (limited to 'Main.hs')
-rw-r--r-- | Main.hs | 39 |
1 files changed, 35 insertions, 4 deletions
@@ -4,7 +4,8 @@ import Control.Applicative import Control.Monad import Data.Monoid import Data.Yaml -import Data.List (nub, sort) +import Data.List (nub, sort, sortBy) +import Data.Function (on) import Data.Maybe (catMaybes) import qualified Data.Text as T import Text.BibTeX.Parse @@ -111,7 +112,31 @@ extcss url = link_ [rel_ "stylesheet", type_ "text/css", href_ url] extjs :: T.Text -> Html () extjs url = script_ [type_ "text/javascript", charset_ "utf8", src_ url] ("" :: T.Text) -page db = doctypehtml_ $ do +-- | Try very hard to find an appropriate URL for the bibentry, DOIs are prefered +bibentryurl bib = safeHead $ catMaybes [doi, url] + where + fields = E.fields bib + doi = lookup "doi" fields >>= return . resolveDoi + url = lookup "url" fields + +-- | Format bibliography/references item +bibentry :: E.T -> Html () +bibentry bib = do + let fields = E.fields bib + a_ [href_ $ T.pack $ maybe "" id $ bibentryurl bib] $ maybeToHtml $ lookup "title" fields + ", " + maybeToHtml $ lookup "author" fields + ", " + maybeToHtml $ lookup "year" fields + +-- | References section +references :: [E.T] -> Html () +references attrib = do + section_ $ do + h2_ "References" + ol_ $ forM_ attrib (li_ . bibentry) + +page db attrib = doctypehtml_ $ do head_ $ do title_ "comatose" meta_ [charset_ "utf-8"] @@ -138,9 +163,15 @@ page db = doctypehtml_ $ do th_ "Year" th_ "Features" tbody_ $ forM_ (M.toList $ dalgos db) (protoentry db) + references (sortBy (compare `on` lookup "year" . E.fields) attrib) script_ "$(document).ready( function () { $('#algo').DataTable( { paging: false, \"columnDefs\": [ ] } ); } );" -render f db = renderToFile f (page db) +render f db attribution = renderToFile f (page db attribution) -main = getDataFileName "data/db.yaml" >>= readDb >>= render "comatose.html" +readAttributions = getDataFileName "data/attribution.bib" >>= parseFromFile file + +main = do + db <- getDataFileName "data/db.yaml" >>= readDb + (Right attribution) <- readAttributions + render "comatose.html" db attribution |