domain-0.1: library/Domain/Attoparsec/TypeString.hs
module Domain.Attoparsec.TypeString
where
import Domain.Prelude hiding (takeWhile)
import Domain.Models.TypeString
import Data.Attoparsec.Text hiding (sepBy1)
import Domain.Attoparsec.General
import Control.Applicative.Combinators.NonEmpty
commaSeq =
commaSeparated appSeq
appSeq =
sepBy1 unit skipSpace1
unit =
asum [
InSquareBracketsUnit <$> inSquareBrackets appSeq
,
InParensUnit <$> inParens commaSeq
,
RefUnit <$> typeRef
]
typeRef =
sepBy1 ucName (char '.')