summaryrefslogtreecommitdiff
path: root/events/src/Events/Spec/Parse.hs
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