blob: 912a308610bb8b59b593b3e19b96d36275c5ecc8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
{-# LANGUAGE GADTs, DataKinds, OverloadedStrings #-}
module Events.Spec.Parse
( parse
, Position(..), ParseError(..)
) where
import Data.Conduit.Attoparsec
import Data.Conduit
import Data.Attoparsec.Text hiding (parse)
import Data.Text (Text)
import qualified Data.Text as T
import Events.Spec.Types
import Control.Monad.Catch (MonadThrow)
parse :: MonadThrow m => Consumer Text m (Spec m)
parse = sinkParser $ (tokenize >>= pSpec) <* endOfInput
pSpec :: Monad m => Parser (Spec m)
pSpec = mzero
|