module Data.Ngrams
( module Data.Ngrams.Database.Sqlite
, module Data.Ngrams.Parser
, module Data.Ngrams.Process
, mkProcess
, runProcess_
) where
import Control.Monad.Trans.Resource (ResourceT, runResourceT)
import Data.Attoparsec.Text (Parser)
import Data.Machine (ProcessT, runT_, (~>))
import Data.Text (Text)
import Data.Ngrams.Database.Sqlite
import Data.Ngrams.Parser
import Data.Ngrams.Process
mkProcess :: FilePath
-> FilePath
-> Bool
-> Parser a
-> Command a
-> ProcessT (ResourceT IO) Text ()
mkProcess file db create parser cmd =
sourceLines file ~> parseLine parser ~> saveDB create db cmd
runProcess_ :: ProcessT (ResourceT IO) Text a -> IO ()
runProcess_ = runResourceT . runT_