site: upgrade to hakyll 3
@ -25,9 +25,9 @@ href="../MANUAL.html#installing">installation docs</a>.
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th width="34%" colspan=2><img src="../linux.png" /><br />GNU/Linux</th>
|
||||
<th width="33%"><img src="../mac.png" border=0 /><br />Mac</th>
|
||||
<th width="33%"><img src="../windows.png" border=0 /><br />Windows</th>
|
||||
<th width="34%" colspan=2><img src="images/linux.png" /><br />GNU/Linux</th>
|
||||
<th width="33%"><img src="images/mac.png" border=0 /><br />Mac</th>
|
||||
<th width="33%"><img src="images/windows.png" border=0 /><br />Windows</th>
|
||||
</tr>
|
||||
<tr style="text-align:center; white-space:nowrap;">
|
||||
<td width="25%">**32-bit**</td>
|
||||
|
12
Makefile
@ -452,17 +452,9 @@ docs: site codedocs
|
||||
# build the hledger.org website
|
||||
# Requires hakyll (cabal install hakyll)
|
||||
.PHONY: site
|
||||
site: site/hakyll site/_site/index.html site/_site/profs
|
||||
site: site/hakyll
|
||||
cd site; ./hakyll build
|
||||
|
||||
site/_site/index.html:
|
||||
mkdir -p site/_site
|
||||
cd site/_site; ln -sf README.html index.html; ln -sf ../../profs
|
||||
|
||||
site/_site/profs:
|
||||
mkdir -p site/_site
|
||||
cd site/_site; ln -sf ../../profs
|
||||
|
||||
cleansite: site/hakyll
|
||||
cd site; ./hakyll clean
|
||||
|
||||
@ -472,7 +464,7 @@ previewsite: site/hakyll
|
||||
site/hakyll: site/hakyll.hs
|
||||
cd site; ghc --make hakyll.hs $(PREFERMACUSRLIBFLAGS)
|
||||
|
||||
siteci:
|
||||
autosite:
|
||||
cd site; sp --no-exts --no-default-map -o hakyll ghc --make hakyll.hs $(PREFERMACUSRLIBFLAGS) --run preview
|
||||
|
||||
viewsite: site
|
||||
|
@ -12,21 +12,21 @@ Click to enlarge, or mouse over for captions..
|
||||
.highslide-caption {color:white; background-color:black;}
|
||||
</style>
|
||||
|
||||
<a name="hledger-screen-1" href="hledger-screen-1.png" class="highslide" onclick="return hs.expand(this)">
|
||||
<img src="hledger-screen-1.png" title="Basic command-line reports, like ledger" /></a>
|
||||
<a name="hledger-screen-1" href="images/hledger-screen-1.png" class="highslide" onclick="return hs.expand(this)">
|
||||
<img src="images/hledger-screen-1.png" title="Basic command-line reports, like ledger" /></a>
|
||||
|
||||
<a name="sshot" href="sshot.png" class="highslide" onclick="return hs.expand(this)">
|
||||
<img src="sshot.png" title="The vty (curses-style) interface" /></a>
|
||||
<a name="sshot" href="images/sshot.png" class="highslide" onclick="return hs.expand(this)">
|
||||
<img src="images/sshot.png" title="The vty (curses-style) interface" /></a>
|
||||
|
||||
<a name="watchhours" href="watchhours.png" class="highslide" onclick="return hs.expand(this)">
|
||||
<img src="watchhours.png" title="A time dashboard in emacs. The upper window displays today's time report every minute (using ansi-term, watch, a helper script, and hledger invoked via 'hours' symlink.) The lower window is viewing the timelog file, to tweak clock-ins/clock-outs made with C-x t i and C-x t o." /></a>
|
||||
<a name="watchhours" href="images/watchhours.png" class="highslide" onclick="return hs.expand(this)">
|
||||
<img src="images/watchhours.png" title="A time dashboard in emacs. The upper window displays today's time report every minute (using ansi-term, watch, a helper script, and hledger invoked via 'hours' symlink.) The lower window is viewing the timelog file, to tweak clock-ins/clock-outs made with C-x t i and C-x t o." /></a>
|
||||
|
||||
<a name="hledger-charts-2" href="hledger-charts-2.png" class="highslide" onclick="return hs.expand(this)">
|
||||
<img src="hledger-charts-2.png" title="Viewing a year of monthly expense charts in emacs (hledger 0.10 with -fchart)." /></a>
|
||||
<a name="hledger-charts-2" href="images/hledger-charts-2.png" class="highslide" onclick="return hs.expand(this)">
|
||||
<img src="images/hledger-charts-2.png" title="Viewing a year of monthly expense charts in emacs (hledger 0.10 with -fchart)." /></a>
|
||||
|
||||
<a name="hledger-web-journal" href="hledger-web-journal.png" class="highslide" onclick="return hs.expand(this)">
|
||||
<img src="hledger-web-journal.png" title="The web interface (hledger 0.11pre with -fwebyesod)." /></a>
|
||||
<a name="hledger-web-journal" href="images/hledger-web-journal.png" class="highslide" onclick="return hs.expand(this)">
|
||||
<img src="images/hledger-web-journal.png" title="The web interface (hledger 0.11pre with -fwebyesod)." /></a>
|
||||
|
||||
|
||||
<!-- <a name="" href=".png" class="highslide" onclick="return hs.expand(this)"> -->
|
||||
<!-- <img height="150" src=".png" alt="" title="Click to enlarge" /></a> -->
|
||||
<!-- <a name="" href="images/.png" class="highslide" onclick="return hs.expand(this)"> -->
|
||||
<!-- <img height="150" src="images/.png" alt="" title="Click to enlarge" /></a> -->
|
||||
|
146
site/hakyll.hs
@ -1,76 +1,47 @@
|
||||
#!/usr/bin/env runhaskell
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-
|
||||
hakyll build script for hledger.org
|
||||
requires Hakyll >= 2.1, pandoc >= 1.5
|
||||
hakyll (3.2) build script for hledger.org
|
||||
-}
|
||||
import Control.Monad (forM_)
|
||||
import Control.Monad.Trans (liftIO)
|
||||
|
||||
|
||||
import Prelude hiding (id)
|
||||
import Control.Arrow ((>>>)) --, (***), arr)
|
||||
-- import Control.Category (id)
|
||||
import Control.Monad
|
||||
import Data.List
|
||||
-- import Data.Monoid (mempty, mconcat)
|
||||
import Hakyll
|
||||
import System.Directory
|
||||
import System.Process (system)
|
||||
import Text.Hakyll (hakyllWithConfiguration, defaultHakyllConfiguration)
|
||||
import Text.Hakyll.HakyllMonad (HakyllConfiguration(..))
|
||||
import Text.Hakyll.Render (renderChain, static)
|
||||
import Text.Hakyll.CreateContext (createPage, createCustomPage, createListing)
|
||||
import Text.Pandoc (ParserState(..), WriterOptions(..), defaultParserState, defaultWriterOptions)
|
||||
import Text.Pandoc
|
||||
import Text.Printf
|
||||
|
||||
baseurl = "http://hledger.org"
|
||||
main = do
|
||||
symlinkPagesFromParentDir
|
||||
symlinkIndexHtml
|
||||
symlinkProfsDir
|
||||
hakyll $ do
|
||||
match "templates/*" $ compile templateCompiler
|
||||
match "css/*" css
|
||||
match "images/*" file
|
||||
match "js/**" file
|
||||
match "robots.txt" file
|
||||
match "*.md" page
|
||||
|
||||
main = hakyllWithConfiguration cfg $ do
|
||||
mapM_ renderParentDirPage
|
||||
["README.md"
|
||||
,"DOWNLOAD.md"
|
||||
,"SCREENSHOTS.md"
|
||||
,"MANUAL.md"
|
||||
,"FAQ.md"
|
||||
,"NEWS.md"
|
||||
,"DEVELOPMENT.md"
|
||||
,"CONTRIBUTORS.md"
|
||||
]
|
||||
mapM_ static
|
||||
["style.css"
|
||||
,"highslide/highslide.js"
|
||||
,"highslide/highslide.css"
|
||||
,"highslide/highslide-ie6.css"
|
||||
,"highslide/graphics/zoomin.cur"
|
||||
,"highslide/graphics/zoomout.cur"
|
||||
,"highslide/graphics/outlines/rounded-black.png"
|
||||
,"highslide/graphics/outlines/rounded-white.png"
|
||||
,"highslide/graphics/outlines/beveled.png"
|
||||
,"highslide/graphics/outlines/drop-shadow.png"
|
||||
,"highslide/graphics/outlines/glossy-dark.png"
|
||||
,"highslide/graphics/outlines/outer-glow.png"
|
||||
,"highslide/graphics/loader.gif"
|
||||
,"highslide/graphics/loader.white.gif"
|
||||
,"highslide/graphics/icon.gif"
|
||||
,"highslide/graphics/resize.gif"
|
||||
,"highslide/graphics/fullexpand.gif"
|
||||
,"highslide/graphics/geckodimmer.png"
|
||||
,"highslide/graphics/close.png"
|
||||
,"highslide/graphics/closeX.png"
|
||||
,"linux.png"
|
||||
,"mac.png"
|
||||
,"windows.png"
|
||||
,"sshot.png"
|
||||
,"watchhours.png"
|
||||
,"hledger-screen-1.png"
|
||||
,"hledger-charts-2.png"
|
||||
,"hledger-web-journal.png"
|
||||
]
|
||||
where
|
||||
-- Render a page from the parent directory as if it was in the hakyll
|
||||
-- root dir, setting up a symbolic link when needed.
|
||||
renderParentDirPage p = do
|
||||
liftIO $ system $ printf "[ -f %s ] || ln -s ../%s" p p
|
||||
renderChain ["site.tmpl"] $ createPage p
|
||||
symlinkPagesFromParentDir = do
|
||||
fs <- filter (".md" `isSuffixOf`) `fmap` getDirectoryContents ".."
|
||||
forM_ fs $ \f -> system $ printf "[ -f %s ] || ln -s ../%s" f f
|
||||
symlinkIndexHtml = ensureSiteDir >> system "ln -sf README.html _site/index.html"
|
||||
symlinkProfsDir = ensureSiteDir >> system "ln -sf ../../profs _site/profs"
|
||||
ensureSiteDir = system "mkdir -p _site"
|
||||
file = route idRoute >> compile copyFileCompiler
|
||||
css = route idRoute >> compile compressCssCompiler
|
||||
page = do
|
||||
route $ setExtension "html"
|
||||
compile $ pageCompilerWith pandocParserState pandocWriterOptions >>> applyTemplateCompiler "templates/default.html" >>> relativizeUrlsCompiler
|
||||
|
||||
cfg :: HakyllConfiguration
|
||||
cfg = (defaultHakyllConfiguration baseurl) {
|
||||
-- additionalContext = Context, -- An additional context to use when rendering. This additional context is used globally.
|
||||
-- siteDirectory = FilePath, -- Directory where the site is placed.
|
||||
-- cacheDirectory = FilePath, -- Directory for cache files.
|
||||
-- enableIndexUrl = False, -- Enable index links.
|
||||
-- previewPollDelay = Int, -- Delay between polls in preview mode.
|
||||
pandocParserState = defaultParserState {
|
||||
pandocParserState = defaultParserState {-
|
||||
-- stateParseRaw = False, -- ^ Parse raw HTML and LaTeX?
|
||||
-- stateParserContext = NullState, -- ^ Inside list?
|
||||
-- stateQuoteContext = NoQuote, -- ^ Inside quoted environment?
|
||||
@ -83,16 +54,31 @@ cfg = (defaultHakyllConfiguration baseurl) {
|
||||
-- stateAuthors = [], -- ^ Authors of document
|
||||
-- stateDate = [], -- ^ Date of document
|
||||
-- stateStrict = False, -- ^ Use strict markdown syntax?
|
||||
stateSmart = False -- ^ Use smart typography?
|
||||
-- stateSmart = False -- ^ Use smart typography?
|
||||
-- stateLiterateHaskell = False, -- ^ Treat input as literate haskell
|
||||
-- stateColumns = 80, -- ^ Number of columns in terminal
|
||||
-- stateHeaderTable = [], -- ^ Ordered list of header types used
|
||||
-- stateIndentedCodeClasses = [] -- ^ Classes to use for indented code blocks
|
||||
},
|
||||
pandocWriterOptions = defaultWriterOptions {
|
||||
-- so we can have a TOC:
|
||||
writerStandalone = True, -- ^ Include header and footer
|
||||
writerTemplate = pandocTemplate, -- ^ Template to use in standalone mode
|
||||
-}
|
||||
|
||||
pandocWriterOptions = defaultWriterOptions {
|
||||
writerStandalone = True, -- ^ Include header and footer -- needs to be true to have a toc
|
||||
writerTemplate = -- ^ Template to use in standalone mode
|
||||
unlines
|
||||
[ "$if(title)$"
|
||||
, "<h1 class=\"title\">$title$</h1>"
|
||||
, "$endif$"
|
||||
, "$for(include-before)$"
|
||||
, "$include-before$"
|
||||
, "$endfor$"
|
||||
, "$if(toc)$"
|
||||
, "$toc$"
|
||||
, "$endif$"
|
||||
, "$body$"
|
||||
, "$for(include-after)$"
|
||||
, "$include-after$"
|
||||
, "$endfor$"
|
||||
],
|
||||
-- writerVariables = [], -- ^ Variables to set in template
|
||||
-- writerIncludeBefore = "", -- ^ Text to include before the body
|
||||
-- writerIncludeAfter = "", -- ^ Text to include after the body
|
||||
@ -111,21 +97,3 @@ cfg = (defaultHakyllConfiguration baseurl) {
|
||||
-- writerEmailObfuscation = JavascriptObfuscation, -- ^ How to obfuscate emails
|
||||
-- writerIdentifierPrefix = "", -- ^ Prefix for section & note ids in HTML
|
||||
}
|
||||
}
|
||||
|
||||
-- the body part of pandoc 1.5.1.1's html output template
|
||||
pandocTemplate = unlines
|
||||
[ "$if(title)$"
|
||||
, "<h1 class=\"title\">$title$</h1>"
|
||||
, "$endif$"
|
||||
, "$for(include-before)$"
|
||||
, "$include-before$"
|
||||
, "$endfor$"
|
||||
, "$if(toc)$"
|
||||
, "$toc$"
|
||||
, "$endif$"
|
||||
, "$body$"
|
||||
, "$for(include-after)$"
|
||||
, "$include-after$"
|
||||
, "$endfor$"
|
||||
]
|
||||
|
Before Width: | Height: | Size: 219 KiB After Width: | Height: | Size: 219 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 84 KiB |
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 209 B After Width: | Height: | Size: 209 B |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 867 B After Width: | Height: | Size: 867 B |
Before Width: | Height: | Size: 668 B After Width: | Height: | Size: 668 B |
Before Width: | Height: | Size: 673 B After Width: | Height: | Size: 673 B |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 70 B After Width: | Height: | Size: 70 B |
Before Width: | Height: | Size: 326 B After Width: | Height: | Size: 326 B |
Before Width: | Height: | Size: 326 B After Width: | Height: | Size: 326 B |
@ -4,30 +4,30 @@
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<title>hledger.org - $title</title>
|
||||
<link rel="stylesheet" type="text/css" href="$root/style.css" />
|
||||
<script type="text/javascript" src="$root/highslide/highslide.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="$root/highslide/highslide.css" />
|
||||
<title>hledger.org - $title$</title>
|
||||
<link rel="stylesheet" type="text/css" href="/css/style.css" />
|
||||
<script type="text/javascript" src="/js/highslide/highslide.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/js/highslide/highslide.css" />
|
||||
<script type="text/javascript">
|
||||
hs.graphicsDir = '$root/highslide/graphics/';
|
||||
hs.graphicsDir = '/js/highslide/graphics/';
|
||||
hs.outlineType = 'rounded-black';
|
||||
hs.captionEval = 'this.thumb.title';
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div style="text-align:center;">
|
||||
<!-- <a href="$root/"><img src="$root/logo.jpg" border="0" ALT="" /></a> -->
|
||||
<!-- <a href="/"><img src="/logo.jpg" border="0" ALT="" /></a> -->
|
||||
</div>
|
||||
<div id="navigation">
|
||||
<a href="$root/README.html">About</a>
|
||||
<a href="$root/DOWNLOAD.html">Download</a>
|
||||
<a href="$root/MANUAL.html">Docs</a>
|
||||
<a href="$root/DEVELOPMENT.html">Development</a>
|
||||
<a href="$root/NEWS.html">News</a>
|
||||
<a href="$root/SCREENSHOTS.html">Screenshots</a>
|
||||
<a href="/README.html">About</a>
|
||||
<a href="/DOWNLOAD.html">Download</a>
|
||||
<a href="/MANUAL.html">Docs</a>
|
||||
<a href="/DEVELOPMENT.html">Development</a>
|
||||
<a href="/NEWS.html">News</a>
|
||||
<a href="/SCREENSHOTS.html">Screenshots</a>
|
||||
<a href="http://demo.hledger.org">Demo</a>
|
||||
</div>
|
||||
$body
|
||||
$body$
|
||||
|
||||
<div id="footer">
|
||||
<hr />
|