summaryrefslogtreecommitdiff
path: root/events/src/Events/Spec/Parse.hs
blob: f3114f1a57f1ddb8e1305127b5908e39e49ecf78 (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 $ pSpec <* endOfInput

pSpec :: Monad m => Parser (Spec m)
pSpec = mzero