cobot-io-0.1.4.2: src/Bio/GB.hs
module Bio.GB
( module T
, fromFile
, toFile
, fromText
, toText
, genBankP
) where
import Bio.GB.Parser
import Bio.GB.Type as T
import Bio.GB.Writer (genBankToText)
import Control.Monad.IO.Class (MonadIO, liftIO)
import Data.Bifunctor (first)
import Data.Text (Text, pack)
import qualified Data.Text.IO as TIO (readFile, writeFile)
import Text.Megaparsec (eof, errorBundlePretty, parse)
-- | Reads 'GenBankSequence' from givem file.
--
fromFile :: (MonadFail m, MonadIO m) => FilePath -> m GenBankSequence
fromFile f = liftIO (TIO.readFile f) >>= either (fail . errorBundlePretty) pure . parse (genBankP <* eof) ""
-- | Writes 'GenBankSequence' to file.
--
toFile :: MonadIO m => GenBankSequence -> FilePath -> m ()
toFile s f = liftIO $ TIO.writeFile f $ genBankToText s
-- | Reads 'GenBankSequence' from 'Text'.
--
fromText :: Text -> Either Text GenBankSequence
fromText = first (pack . errorBundlePretty) . parse (genBankP <* eof) ""
-- | Writes 'GenBankSequence' to 'Text'.
--
toText :: GenBankSequence -> Text
toText = genBankToText