multi-cabal-0.1.0.0: src-lib/Data/Model/Project.hs
{-# 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"