{-# LANGUAGE LambdaCase #-} module Restyler.Config.ChangedPaths ( ChangedPathsConfig(..) , MaximumChangedPathsOutcome(..) ) where import Restyler.Prelude import Data.Aeson import Data.Aeson.Casing import Restyler.Config.ExpectedKeys data ChangedPathsConfig = ChangedPathsConfig { ChangedPathsConfig -> Natural cpcMaximum :: Natural , ChangedPathsConfig -> MaximumChangedPathsOutcome cpcOutcome :: MaximumChangedPathsOutcome } deriving (ChangedPathsConfig -> ChangedPathsConfig -> Bool (ChangedPathsConfig -> ChangedPathsConfig -> Bool) -> (ChangedPathsConfig -> ChangedPathsConfig -> Bool) -> Eq ChangedPathsConfig forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: ChangedPathsConfig -> ChangedPathsConfig -> Bool $c/= :: ChangedPathsConfig -> ChangedPathsConfig -> Bool == :: ChangedPathsConfig -> ChangedPathsConfig -> Bool $c== :: ChangedPathsConfig -> ChangedPathsConfig -> Bool Eq, Int -> ChangedPathsConfig -> ShowS [ChangedPathsConfig] -> ShowS ChangedPathsConfig -> String (Int -> ChangedPathsConfig -> ShowS) -> (ChangedPathsConfig -> String) -> ([ChangedPathsConfig] -> ShowS) -> Show ChangedPathsConfig forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [ChangedPathsConfig] -> ShowS $cshowList :: [ChangedPathsConfig] -> ShowS show :: ChangedPathsConfig -> String $cshow :: ChangedPathsConfig -> String showsPrec :: Int -> ChangedPathsConfig -> ShowS $cshowsPrec :: Int -> ChangedPathsConfig -> ShowS Show, (forall x. ChangedPathsConfig -> Rep ChangedPathsConfig x) -> (forall x. Rep ChangedPathsConfig x -> ChangedPathsConfig) -> Generic ChangedPathsConfig forall x. Rep ChangedPathsConfig x -> ChangedPathsConfig forall x. ChangedPathsConfig -> Rep ChangedPathsConfig x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep ChangedPathsConfig x -> ChangedPathsConfig $cfrom :: forall x. ChangedPathsConfig -> Rep ChangedPathsConfig x Generic) instance FromJSON ChangedPathsConfig where parseJSON :: Value -> Parser ChangedPathsConfig parseJSON = Options -> Value -> Parser ChangedPathsConfig forall a. (Generic a, GFromJSON Zero (Rep a), Selectors (Rep a)) => Options -> Value -> Parser a genericParseJSONValidated (Options -> Value -> Parser ChangedPathsConfig) -> Options -> Value -> Parser ChangedPathsConfig forall a b. (a -> b) -> a -> b $ ShowS -> Options aesonPrefix ShowS snakeCase instance ToJSON ChangedPathsConfig where toJSON :: ChangedPathsConfig -> Value toJSON = Options -> ChangedPathsConfig -> Value forall a. (Generic a, GToJSON Value Zero (Rep a)) => Options -> a -> Value genericToJSON (Options -> ChangedPathsConfig -> Value) -> Options -> ChangedPathsConfig -> Value forall a b. (a -> b) -> a -> b $ ShowS -> Options aesonPrefix ShowS snakeCase toEncoding :: ChangedPathsConfig -> Encoding toEncoding = Options -> ChangedPathsConfig -> Encoding forall a. (Generic a, GToJSON Encoding Zero (Rep a)) => Options -> a -> Encoding genericToEncoding (Options -> ChangedPathsConfig -> Encoding) -> Options -> ChangedPathsConfig -> Encoding forall a b. (a -> b) -> a -> b $ ShowS -> Options aesonPrefix ShowS snakeCase data MaximumChangedPathsOutcome = MaximumChangedPathsOutcomeSkip | MaximumChangedPathsOutcomeError deriving (MaximumChangedPathsOutcome -> MaximumChangedPathsOutcome -> Bool (MaximumChangedPathsOutcome -> MaximumChangedPathsOutcome -> Bool) -> (MaximumChangedPathsOutcome -> MaximumChangedPathsOutcome -> Bool) -> Eq MaximumChangedPathsOutcome forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: MaximumChangedPathsOutcome -> MaximumChangedPathsOutcome -> Bool $c/= :: MaximumChangedPathsOutcome -> MaximumChangedPathsOutcome -> Bool == :: MaximumChangedPathsOutcome -> MaximumChangedPathsOutcome -> Bool $c== :: MaximumChangedPathsOutcome -> MaximumChangedPathsOutcome -> Bool Eq, Int -> MaximumChangedPathsOutcome -> ShowS [MaximumChangedPathsOutcome] -> ShowS MaximumChangedPathsOutcome -> String (Int -> MaximumChangedPathsOutcome -> ShowS) -> (MaximumChangedPathsOutcome -> String) -> ([MaximumChangedPathsOutcome] -> ShowS) -> Show MaximumChangedPathsOutcome forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [MaximumChangedPathsOutcome] -> ShowS $cshowList :: [MaximumChangedPathsOutcome] -> ShowS show :: MaximumChangedPathsOutcome -> String $cshow :: MaximumChangedPathsOutcome -> String showsPrec :: Int -> MaximumChangedPathsOutcome -> ShowS $cshowsPrec :: Int -> MaximumChangedPathsOutcome -> ShowS Show) instance FromJSON MaximumChangedPathsOutcome where parseJSON :: Value -> Parser MaximumChangedPathsOutcome parseJSON = String -> (Text -> Parser MaximumChangedPathsOutcome) -> Value -> Parser MaximumChangedPathsOutcome forall a. String -> (Text -> Parser a) -> Value -> Parser a withText "MaximumChangedPathsOutcome" ((Text -> Parser MaximumChangedPathsOutcome) -> Value -> Parser MaximumChangedPathsOutcome) -> (Text -> Parser MaximumChangedPathsOutcome) -> Value -> Parser MaximumChangedPathsOutcome forall a b. (a -> b) -> a -> b $ \case "skip" -> MaximumChangedPathsOutcome -> Parser MaximumChangedPathsOutcome forall (f :: * -> *) a. Applicative f => a -> f a pure MaximumChangedPathsOutcome MaximumChangedPathsOutcomeSkip "error" -> MaximumChangedPathsOutcome -> Parser MaximumChangedPathsOutcome forall (f :: * -> *) a. Applicative f => a -> f a pure MaximumChangedPathsOutcome MaximumChangedPathsOutcomeError x :: Text x -> String -> Parser MaximumChangedPathsOutcome forall (m :: * -> *) a. MonadFail m => String -> m a fail (String -> Parser MaximumChangedPathsOutcome) -> String -> Parser MaximumChangedPathsOutcome forall a b. (a -> b) -> a -> b $ "Invalid outcome " String -> ShowS forall a. Semigroup a => a -> a -> a <> Text -> String unpack Text x String -> ShowS forall a. Semigroup a => a -> a -> a <> ", must be skip or error" instance ToJSON MaximumChangedPathsOutcome where toJSON :: MaximumChangedPathsOutcome -> Value toJSON = \case MaximumChangedPathsOutcomeSkip -> Text -> Value String "skip" MaximumChangedPathsOutcomeError -> Text -> Value String "error"