github-tools-0.1.2: src/GitHub/Types/Base/Change.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
module GitHub.Types.Base.Change where
import Data.Aeson (FromJSON (..), ToJSON (..), object)
import Data.Aeson.Types (Value (..), (.:), (.=))
import Data.Text (Text)
import Data.Text.Arbitrary ()
import Test.QuickCheck.Arbitrary (Arbitrary (..))
------------------------------------------------------------------------------
-- Change
newtype Change = Change
{ changesFrom :: Text
} deriving (Eq, Show, Read)
instance FromJSON Change where
parseJSON (Object x) = Change
<$> x .: "from"
parseJSON _ = fail "Change"
instance ToJSON Change where
toJSON Change{..} = object
[ "from" .= changesFrom
]
instance Arbitrary Change where
arbitrary = Change
<$> arbitrary