wkt-geom-0.0.2: src/Data/Internal/Wkt/Common.hs
module Data.Internal.Wkt.Common
( emptySet
, emptySets
, number
) where
import Control.Applicative ((<|>))
import qualified Data.Scientific as Scientific
import qualified Data.Sequence as Sequence
import qualified Text.Trifecta as Trifecta
emptySet :: Trifecta.Parser (Sequence.Seq a)
emptySet = do
_ <- Trifecta.string "empty"
pure Sequence.empty
emptySets :: Trifecta.Parser ([a], [[a]])
emptySets = do
_ <- Trifecta.string "empty"
pure ([], [])
number :: Trifecta.Parser Scientific.Scientific
number = do
sign <- (Trifecta.char '+' >> pure id) <|> (Trifecta.char '-' >> pure negate) <|> pure id
sign . either fromInteger id <$> Trifecta.integerOrScientific