tools: hakyll cleanup

This commit is contained in:
Simon Michael 2010-07-07 16:49:33 +00:00
parent 0276c095ca
commit 5732e42cc3

View File

@ -1,74 +1,22 @@
#!/usr/bin/env runhaskell #!/usr/bin/env runhaskell
{-o {-
hakyll build script for hledger.org hakyll build script for hledger.org
requires Hakyll >= 2.1, pandoc >= 1.5 requires Hakyll >= 2.1, pandoc >= 1.5
-} -}
import Control.Monad (forM_) import Control.Monad (forM_)
import Control.Monad.Trans (liftIO) import Control.Monad.Trans (liftIO)
import System.Process import System.Process (system)
import Text.Hakyll import Text.Hakyll (hakyllWithConfiguration, defaultHakyllConfiguration)
import Text.Hakyll.HakyllMonad import Text.Hakyll.HakyllMonad (HakyllConfiguration(..))
import Text.Hakyll.Render import Text.Hakyll.Render (renderChain, static)
import Text.Hakyll.CreateContext (createPage, createCustomPage, createListing) import Text.Hakyll.CreateContext (createPage, createCustomPage, createListing)
import Text.Pandoc import Text.Pandoc (ParserState(..), WriterOptions(..), defaultParserState, defaultWriterOptions)
import Text.Printf import Text.Printf
pandocparsercfg = defaultParserState { baseurl = "http://hledger.org"
-- stateParseRaw = False, -- ^ Parse raw HTML and LaTeX?
-- stateParserContext = NullState, -- ^ Inside list?
-- stateQuoteContext = NoQuote, -- ^ Inside quoted environment?
-- stateSanitizeHTML = False, -- ^ Sanitize HTML?
-- stateKeys = [], -- ^ List of reference keys
-- stateNotes = [], -- ^ List of notes
-- stateTabStop = 4, -- ^ Tab stop
-- stateStandalone = False, -- ^ Parse bibliographic info?
-- stateTitle = [], -- ^ Title of document
-- stateAuthors = [], -- ^ Authors of document
-- stateDate = [], -- ^ Date of document
-- stateStrict = False, -- ^ Use strict markdown syntax?
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
}
pandocwritercfg = defaultWriterOptions { main = hakyllWithConfiguration cfg $ do
writerStandalone = False -- ^ Include header and footer
-- ,writerTemplate = "" -- ^ Template to use in standalone mode
-- ,writerVariables = [] -- ^ Variables to set in template
-- ,writerIncludeBefore = "" -- ^ Text to include before the body
-- ,writerIncludeAfter = "" -- ^ Text to include after the body
-- ,writerTabStop = 4 -- ^ Tabstop for conversion btw spaces and tabs
-- ,writerTableOfContents = False -- ^ Include table of contents
-- ,writerS5 = False -- ^ We're writing S5
-- ,writerXeTeX = False -- ^ Create latex suitable for use by xetex
-- ,writerHTMLMathMethod = PlainMath -- ^ How to print math in HTML
-- ,writerIgnoreNotes = False -- ^ Ignore footnotes (used in making toc)
-- ,writerIncremental = False -- ^ Incremental S5 lists
-- ,writerNumberSections = False -- ^ Number sections in LaTeX
-- ,writerStrictMarkdown = False -- ^ Use strict markdown syntax
-- ,writerReferenceLinks = False -- ^ Use reference links in writing markdown, rst
-- ,writerWrapText = True -- ^ Wrap text to line length
-- ,writerLiterateHaskell = False -- ^ Write as literate haskell
-- ,writerEmailObfuscation = JavascriptObfuscation -- ^ How to obfuscate emails
-- ,writerIdentifierPrefix = "" -- ^ Prefix for section & note ids in HTML
}
hakyllcfg = (defaultHakyllConfiguration "http://hledger.org") {
-- absoluteUrl = "http://hledger.org" -- Absolute URL of the site.
-- ,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 = Bool -- Enable index links.
-- ,previewPollDelay = Int -- Delay between polls in preview mode.
pandocParserState = pandocparsercfg
,pandocWriterOptions = pandocwritercfg
}
main = hakyllWithConfiguration hakyllcfg $ do
-- renderChain [] $ createPage "t.markdown"
mapM_ renderParentDirPage mapM_ renderParentDirPage
["README.rst" ["README.rst"
,"README2.rst" ,"README2.rst"
@ -84,10 +32,59 @@ main = hakyllWithConfiguration hakyllcfg $ do
,"hledger-screen-1.png" ,"hledger-screen-1.png"
,"hledger-charts-2.png" ,"hledger-charts-2.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
-- Render a page from the parent directory as if it was in the hakyll cfg :: HakyllConfiguration
-- root dir, setting up a symbolic link when needed. cfg = (defaultHakyllConfiguration baseurl) {
renderParentDirPage p = do -- ,additionalContext = Context -- An additional context to use when rendering. This additional context is used globally.
liftIO $ system $ printf "[ -f %s ] || ln -s ../%s" p p -- ,siteDirectory = FilePath -- Directory where the site is placed.
renderChain ["site.tmpl"] $ createPage p -- ,cacheDirectory = FilePath -- Directory for cache files.
-- ,enableIndexUrl = Bool -- Enable index links.
-- ,previewPollDelay = Int -- Delay between polls in preview mode.
pandocParserState = defaultParserState {
-- stateParseRaw = False, -- ^ Parse raw HTML and LaTeX?
-- stateParserContext = NullState, -- ^ Inside list?
-- stateQuoteContext = NoQuote, -- ^ Inside quoted environment?
-- stateSanitizeHTML = False, -- ^ Sanitize HTML?
-- stateKeys = [], -- ^ List of reference keys
-- stateNotes = [], -- ^ List of notes
-- stateTabStop = 4, -- ^ Tab stop
-- stateStandalone = False, -- ^ Parse bibliographic info?
-- stateTitle = [], -- ^ Title of document
-- stateAuthors = [], -- ^ Authors of document
-- stateDate = [], -- ^ Date of document
-- stateStrict = False, -- ^ Use strict markdown syntax?
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 {
writerStandalone = False -- ^ Include header and footer
-- ,writerTemplate = "" -- ^ Template to use in standalone mode
-- ,writerVariables = [] -- ^ Variables to set in template
-- ,writerIncludeBefore = "" -- ^ Text to include before the body
-- ,writerIncludeAfter = "" -- ^ Text to include after the body
-- ,writerTabStop = 4 -- ^ Tabstop for conversion btw spaces and tabs
-- ,writerTableOfContents = False -- ^ Include table of contents
-- ,writerS5 = False -- ^ We're writing S5
-- ,writerXeTeX = False -- ^ Create latex suitable for use by xetex
-- ,writerHTMLMathMethod = PlainMath -- ^ How to print math in HTML
-- ,writerIgnoreNotes = False -- ^ Ignore footnotes (used in making toc)
-- ,writerIncremental = False -- ^ Incremental S5 lists
-- ,writerNumberSections = False -- ^ Number sections in LaTeX
-- ,writerStrictMarkdown = False -- ^ Use strict markdown syntax
-- ,writerReferenceLinks = False -- ^ Use reference links in writing markdown, rst
-- ,writerWrapText = True -- ^ Wrap text to line length
-- ,writerLiterateHaskell = False -- ^ Write as literate haskell
-- ,writerEmailObfuscation = JavascriptObfuscation -- ^ How to obfuscate emails
-- ,writerIdentifierPrefix = "" -- ^ Prefix for section & note ids in HTML
}
}