{-# LANGUAGE OverloadedStrings #-} {- | Module : $Header$ Description : ADT describing a project. Author : Nils 'bash0r' Jonsson Copyright : (c) 2015 Nils 'bash0r' Jonsson License : MIT Maintainer : aka.bash0r@gmail.com Stability : unstable Portability : non-portable (Portability is untested.) A simple ADT describing a project. -} module Data.Model.Project ( Project (..) ) where import Data.Aeson import Data.Model.Utility -- | A representation of a project. data Project -- | A basic representation of a project. = Project ProjectName ProjectRoot [ProjectName] deriving (Show, Eq) instance ToJSON Project where toJSON (Project pName pDirectory pDependencies) = object [ "name" .= pName , "root" .= pDirectory , "dependencies" .= pDependencies ] instance FromJSON Project where parseJSON = withObject "Project Description" $ \o -> Project <$> o .: "name" <*> o .: "root" <*> o .: "dependencies"