playlists-0.1.0.0: src/Text/Playlist/Internal/Attoparsec.hs
{-
This file is part of the Haskell package playlists. It is subject to
the license terms in the LICENSE file found in the top-level directory
of this distribution and at git://pmade.com/playlists/LICENSE. No part
of playlists package, including this file, may be copied, modified,
propagated, or distributed except according to the terms contained in
the LICENSE file.
-}
--------------------------------------------------------------------------------
-- | Helper functions for @Attoparsec@ and @ByteString@.
module Text.Playlist.Internal.Attoparsec
( isEOL
, isEq
, skipEq
, skipSpace
, skipLine
) where
--------------------------------------------------------------------------------
import Data.Attoparsec.ByteString
import Data.Word (Word8)
import Data.Word8 (isSpace)
--------------------------------------------------------------------------------
-- | True if the given @Word8@ is an end of line character.
isEOL :: Word8 -> Bool
isEOL x = x == 10 || x == 13
--------------------------------------------------------------------------------
-- | True if the given @Word8@ is an equal sign.
isEq :: Word8 -> Bool
isEq = (== 61)
--------------------------------------------------------------------------------
-- | Skip an equal sign and any space around it.
skipEq :: Parser ()
skipEq = skipSpace >> skip isEq >> skipSpace
--------------------------------------------------------------------------------
-- | Skip all whitespace.
skipSpace :: Parser ()
skipSpace = skipWhile isSpace
--------------------------------------------------------------------------------
-- | Skip all characters up to and including the next EOL.
skipLine :: Parser ()
skipLine = skipWhile (not . isEOL) >> skipSpace