|
|
- {-# LANGUAGE OverloadedStrings, DeriveGeneric #-}
- module JSONDeser where
-
- import Data.Maybe
- import Data.ByteString.Lazy
- import Data.Aeson
- import GHC.Generics
-
-
- data Cell = Cell { x :: Int, y :: Int}
- deriving (Show, Generic)
-
- data Unit = Unit { members :: [Cell], pivot :: Cell}
- deriving (Show, Generic)
-
- data Input = Input { id :: Int,
- units :: [Unit],
- width :: Int,
- height :: Int,
- filled :: [Cell],
- sourceLength :: Int,
- sourceSeeds :: [Int]
- }
- deriving (Show, Generic)
-
-
- instance FromJSON Cell
- instance ToJSON Cell
-
- instance FromJSON Unit
- instance ToJSON Unit
-
- instance FromJSON Input
- instance ToJSON Input
-
- readInputInternal :: ByteString -> Input
- readInputInternal str = if isJust result
- then fromJust result
- else error "Error during JSON parsing"
- where
- result = (decode str :: Maybe Input)
-
-
-
|