-- | Fancy importer for TrainingData.

module Biobase.TrainingData.Import where

import Data.Iteratee as I
import Data.Iteratee.Char as I
import Data.Iteratee.IO as I
import Data.ByteString.Char8 as BS

import Biobase.TrainingData



-- | Enumeratee producing 'TrainingData' from a bytestring.

eneeTrainingData :: (Monad m) => Enumeratee ByteString [TrainingData] m a
eneeTrainingData = enumLinesBS ><> mapStream (read . unpack)

-- | Convenience function

fromFile :: FilePath -> IO [TrainingData]
fromFile fp = run =<< (enumFile 8192 fp . joinI $ eneeTrainingData stream2list)