module Tart.Format.V0 ( version0Format ) where import qualified Data.Binary as B import qualified Data.Text as T import Tart.Canvas import Tart.Format.Types data TartFileDataV0 = TartFileDataV0 { TartFileDataV0 -> CanvasData tartFileDataV0CanvasData :: CanvasData } version0Format :: TartFileFormat version0Format :: TartFileFormat version0Format = Get TartFileDataV0 -> (TartFileDataV0 -> IO (Either String TartFile)) -> TartFileFormat forall a. Get a -> (a -> IO (Either String TartFile)) -> TartFileFormat BinaryFormatVersion Get TartFileDataV0 forall t. Binary t => Get t B.get TartFileDataV0 -> IO (Either String TartFile) tartFileFromDataV0 instance B.Binary TartFileDataV0 where put :: TartFileDataV0 -> Put put TartFileDataV0 d = CanvasData -> Put forall t. Binary t => t -> Put B.put (CanvasData -> Put) -> CanvasData -> Put forall a b. (a -> b) -> a -> b $ TartFileDataV0 -> CanvasData tartFileDataV0CanvasData TartFileDataV0 d get :: Get TartFileDataV0 get = CanvasData -> TartFileDataV0 TartFileDataV0 (CanvasData -> TartFileDataV0) -> Get CanvasData -> Get TartFileDataV0 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Get CanvasData forall t. Binary t => Get t B.get tartFileFromDataV0 :: TartFileDataV0 -> IO (Either String TartFile) tartFileFromDataV0 :: TartFileDataV0 -> IO (Either String TartFile) tartFileFromDataV0 TartFileDataV0 d = do Either String Canvas result <- CanvasData -> IO (Either String Canvas) canvasFromData (TartFileDataV0 -> CanvasData tartFileDataV0CanvasData TartFileDataV0 d) case Either String Canvas result of Left String s -> Either String TartFile -> IO (Either String TartFile) forall (m :: * -> *) a. Monad m => a -> m a return (Either String TartFile -> IO (Either String TartFile)) -> Either String TartFile -> IO (Either String TartFile) forall a b. (a -> b) -> a -> b $ String -> Either String TartFile forall a b. a -> Either a b Left String s Right Canvas c -> Either String TartFile -> IO (Either String TartFile) forall (m :: * -> *) a. Monad m => a -> m a return (Either String TartFile -> IO (Either String TartFile)) -> Either String TartFile -> IO (Either String TartFile) forall a b. (a -> b) -> a -> b $ TartFile -> Either String TartFile forall a b. b -> Either a b Right (TartFile -> Either String TartFile) -> TartFile -> Either String TartFile forall a b. (a -> b) -> a -> b $ [Canvas] -> [Text] -> [Int] -> TartFile TartFile [Canvas c] [String -> Text T.pack String "default"] [Int 0]