Proper string trimming.

This commit is contained in:
Jasper Van der Jeugt 2009-12-04 15:15:32 +01:00
parent 9b3babe142
commit d3ce014d26
2 changed files with 11 additions and 4 deletions

View file

@ -18,6 +18,7 @@ import Data.Maybe
import System.FilePath
import System.IO
import Text.Hakyll.Util
import Text.Pandoc
-- | A Page is basically key-value mapping. Certain keys have special
@ -27,7 +28,6 @@ type Page = M.Map String PageValue
-- | We use a ByteString for obvious reasons.
type PageValue = B.ByteString
-- | Add a key-value mapping to the Page.
addContext :: String -> String -> Page -> Page
addContext key value = M.insert key (B.pack value)
@ -61,8 +61,8 @@ readMetaData handle = do
line <- hGetLine handle
if isDelimiter line then return []
else do others <- readMetaData handle
return $ (trim . break (== ':')) line : others
where trim (key, value) = (key, dropWhile (`elem` ": ") value)
return $ (trimPair . break (== ':')) line : others
where trimPair (key, value) = (trim key, trim $ tail value)
isDelimiter :: String -> Bool
isDelimiter = L.isPrefixOf "---"

View file

@ -1,11 +1,13 @@
module Text.Hakyll.Util
( makeDirectories,
getRecursiveContents
getRecursiveContents,
trim
) where
import System.Directory
import System.FilePath
import Control.Monad
import Data.Char
-- | Given a path to a file, try to make the path writable by making
-- all directories on the path.
@ -27,3 +29,8 @@ getRecursiveContents topdir = do
else return [path]
return (concat paths)
where isProper = not . (== '.') . head
-- | Trim a string (drop spaces and tabs at both sides).
trim :: String -> String
trim = reverse . trim' . reverse . trim'
where trim' = dropWhile isSpace