module Data.WKT.Classes (module Data.WKT.Classes) where
import Data.Attoparsec.Text (Parser, parseOnly)
import Data.Text (Text)
class Valid a where
isValid :: a -> Bool
class ToWKT a where
toWKT :: a -> Text
class ParseableFromWKT a => FromWKT a where
fromWKT :: Text -> a Double
fromWKT = (String -> a Double)
-> (a Double -> a Double) -> Either String (a Double) -> a Double
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either (String -> a Double
forall a. HasCallStack => String -> a
error (String -> a Double) -> (String -> String) -> String -> a Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> String
forall a. Show a => a -> String
show) a Double -> a Double
forall a. a -> a
id (Either String (a Double) -> a Double)
-> (Text -> Either String (a Double)) -> Text -> a Double
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Parser (a Double) -> Text -> Either String (a Double)
forall a. Parser a -> Text -> Either String a
parseOnly Parser (a Double)
forall (a :: * -> *). ParseableFromWKT a => Parser (a Double)
wktParser
class ParseableFromWKT a where
wktParser :: Parser (a Double)