module Test.Tasty.Discover.TastyInfo
  ( TastyInfo(..)
  ) where

import Data.Monoid
import GHC.Generics (Generic)

data TastyInfo = TastyInfo
  { TastyInfo -> Last String
name        :: Last String
  , TastyInfo -> Last String
description :: Last String
  } deriving stock (TastyInfo -> TastyInfo -> Bool
(TastyInfo -> TastyInfo -> Bool)
-> (TastyInfo -> TastyInfo -> Bool) -> Eq TastyInfo
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TastyInfo -> TastyInfo -> Bool
== :: TastyInfo -> TastyInfo -> Bool
$c/= :: TastyInfo -> TastyInfo -> Bool
/= :: TastyInfo -> TastyInfo -> Bool
Eq, Int -> TastyInfo -> ShowS
[TastyInfo] -> ShowS
TastyInfo -> String
(Int -> TastyInfo -> ShowS)
-> (TastyInfo -> String)
-> ([TastyInfo] -> ShowS)
-> Show TastyInfo
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TastyInfo -> ShowS
showsPrec :: Int -> TastyInfo -> ShowS
$cshow :: TastyInfo -> String
show :: TastyInfo -> String
$cshowList :: [TastyInfo] -> ShowS
showList :: [TastyInfo] -> ShowS
Show, (forall x. TastyInfo -> Rep TastyInfo x)
-> (forall x. Rep TastyInfo x -> TastyInfo) -> Generic TastyInfo
forall x. Rep TastyInfo x -> TastyInfo
forall x. TastyInfo -> Rep TastyInfo x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. TastyInfo -> Rep TastyInfo x
from :: forall x. TastyInfo -> Rep TastyInfo x
$cto :: forall x. Rep TastyInfo x -> TastyInfo
to :: forall x. Rep TastyInfo x -> TastyInfo
Generic)

instance Semigroup TastyInfo where
  TastyInfo
a <> :: TastyInfo -> TastyInfo -> TastyInfo
<> TastyInfo
b = TastyInfo
    { name :: Last String
name        = TastyInfo -> Last String
name TastyInfo
a        Last String -> Last String -> Last String
forall a. Semigroup a => a -> a -> a
<> TastyInfo -> Last String
name TastyInfo
b
    , description :: Last String
description = TastyInfo -> Last String
description TastyInfo
a Last String -> Last String -> Last String
forall a. Semigroup a => a -> a -> a
<> TastyInfo -> Last String
description TastyInfo
b
    }

instance Monoid TastyInfo where
  mempty :: TastyInfo
mempty = TastyInfo
    { name :: Last String
name        = Maybe String -> Last String
forall a. Maybe a -> Last a
Last Maybe String
forall a. Maybe a
Nothing
    , description :: Last String
description = Maybe String -> Last String
forall a. Maybe a -> Last a
Last Maybe String
forall a. Maybe a
Nothing
    }