summaryrefslogtreecommitdiff
path: root/src/Hakyll/Web/Page/Read.hs
diff options
context:
space:
mode:
authorJasper Van der Jeugt <m@jaspervdj.be>2012-11-10 18:11:46 +0100
committerJasper Van der Jeugt <m@jaspervdj.be>2012-11-10 18:11:46 +0100
commit141e761ce11d4d4ae9e9b86201249dbd549e2924 (patch)
tree0d0ba398331bceb9326c58392680fb81361fb6c3 /src/Hakyll/Web/Page/Read.hs
parent260e4e2e8936f756d2f3a2e6e788f05ca28e4324 (diff)
downloadhakyll-141e761ce11d4d4ae9e9b86201249dbd549e2924.tar.gz
Deprecate things, basics now work
Diffstat (limited to 'src/Hakyll/Web/Page/Read.hs')
-rw-r--r--src/Hakyll/Web/Page/Read.hs61
1 files changed, 0 insertions, 61 deletions
diff --git a/src/Hakyll/Web/Page/Read.hs b/src/Hakyll/Web/Page/Read.hs
deleted file mode 100644
index 40a4cd5..0000000
--- a/src/Hakyll/Web/Page/Read.hs
+++ /dev/null
@@ -1,61 +0,0 @@
--- | Module providing a function to parse a page from a file
---
-module Hakyll.Web.Page.Read
- ( readPage
- ) where
-
-import Control.Applicative ((<$>), (<*>), (<*), (<|>))
-import qualified Data.Map as M
-
-import Text.Parsec.Char (alphaNum, anyChar, char, oneOf, string)
-import Text.Parsec.Combinator (choice, many1, manyTill, option, skipMany1)
-import Text.Parsec.Prim (many, parse, skipMany, (<?>))
-import Text.Parsec.String (Parser)
-
-import Hakyll.Core.Util.String
-import Hakyll.Web.Page.Internal
-
--- | Space or tab, no newline
-inlineSpace :: Parser Char
-inlineSpace = oneOf ['\t', ' '] <?> "space"
-
--- | Parse Windows newlines as well (i.e. "\n" or "\r\n")
-newline :: Parser String
-newline = string "\n" -- Unix
- <|> string "\r\n" -- DOS
-
--- | Parse a single metadata field
---
-metadataField :: Parser (String, String)
-metadataField = do
- key <- manyTill alphaNum $ char ':'
- skipMany1 inlineSpace <?> "space followed by metadata for: " ++ key
- value <- manyTill anyChar newline
- trailing' <- many trailing
- return (key, trim $ value ++ concat trailing')
- where
- trailing = (++) <$> many1 inlineSpace <*> manyTill anyChar newline
-
--- | Parse a metadata block, including delimiters and trailing newlines
---
-metadata :: Parser [(String, String)]
-metadata = do
- open <- many1 (char '-') <* many inlineSpace <* newline
- metadata' <- many metadataField
- _ <- choice $ map (string . replicate (length open)) ['-', '.']
- skipMany inlineSpace
- skipMany1 newline
- return metadata'
-
--- | Parse a Hakyll page
---
-page :: Parser ([(String, String)], String)
-page = do
- metadata' <- option [] metadata
- body <- many anyChar
- return (metadata', body)
-
-readPage :: String -> Page String
-readPage input = case parse page "page" input of
- Left err -> error (show err)
- Right (md, b) -> Page (M.fromList md) b