{- 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. -} -------------------------------------------------------------------------------- module Helper (playlistFromFile, roundTrip) where -------------------------------------------------------------------------------- import qualified Data.ByteString as BS import qualified Data.ByteString.Lazy as BL import Data.Char (toLower) import Text.Playlist -------------------------------------------------------------------------------- playlistFromFile :: Format -> FilePath -> IO Playlist playlistFromFile fmt file = do content <- BS.readFile file' case parsePlaylist fmt content of Left err -> fail $ "failed to parse: " ++ file' ++ ": " ++ err Right plst -> return plst where file' = "test/" ++ file ++ "." ++ map toLower (show fmt) -------------------------------------------------------------------------------- roundTrip :: Format -> Playlist -> IO Playlist roundTrip fmt plst = case parsePlaylist fmt $ BL.toStrict $ generatePlaylist fmt plst of Left err -> fail $ "failed to roundTrip playlist: " ++ err Right plst' -> return plst'