{-# LANGUAGE CPP #-} module Bio.FASTA ( module T , WritableFastaToken (..) , fromFile , toFile , fastaP , fastaPGeneric , fastaLine , modificationP ) where import Control.Monad.IO.Class (MonadIO, liftIO) import Data.Attoparsec.Text (parseOnly) import Data.Text.IO (readFile, writeFile) #if !MIN_VERSION_base(4,13,0) import Control.Monad.Fail (MonadFail (..)) import Prelude hiding (fail, readFile, writeFile) #else import Prelude hiding (readFile, writeFile) #endif import Bio.FASTA.Parser import Bio.FASTA.Type as T import Bio.FASTA.Writer (WritableFastaToken (..), fastaToText) -- | Reads 'FastaSequence' from given file. -- fromFile :: (MonadFail m, MonadIO m) => FilePath -> m (Fasta Char) fromFile f = liftIO (readFile f) >>= either fail pure . parseOnly fastaP -- | Writes 'FastaSequence' to file. -- toFile :: MonadIO m => Fasta Char -> FilePath -> m () toFile s f = liftIO $ writeFile f $ fastaToText s