Ignore initial whitespace in a continuation line for a metadata field

When parsing a metadata field that spans several lines skip over the
initial whitespace on each line.  This allows alignment of metadata
fields:

    ---
    description: A long description that would look better if it
                 spanned multiple lines and was indented
    ---
This commit is contained in:
Peter Jones 2013-02-26 10:41:03 -07:00
parent 151c142960
commit 4d244168a7

View file

@ -9,6 +9,7 @@ module Hakyll.Core.Provider.Metadata
import Control.Applicative
import Control.Arrow (second)
import qualified Data.ByteString.Char8 as BC
import Data.List (intercalate)
import qualified Data.Map as M
import System.IO as IO
import Text.Parsec ((<?>))
@ -94,9 +95,9 @@ metadataField = do
P.skipMany1 inlineSpace <?> "space followed by metadata for: " ++ key
value <- P.manyTill P.anyChar newline
trailing' <- P.many trailing
return (key, trim $ value ++ concat trailing')
return (key, trim $ value ++ intercalate " " trailing')
where
trailing = (++) <$> P.many1 inlineSpace <*> P.manyTill P.anyChar newline
trailing = P.many1 inlineSpace *> P.manyTill P.anyChar newline
--------------------------------------------------------------------------------