Skip to content

Commit

Permalink
Merge pull request #304 from input-output-hk/smelc/add-babbage-era-only
Browse files Browse the repository at this point in the history
Add BabbageEraOnly
  • Loading branch information
newhoggy committed Oct 7, 2023
2 parents dfb2a8f + c94a094 commit 2192cdf
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 0 deletions.
1 change: 1 addition & 0 deletions cardano-api/cardano-api.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ library internal
Cardano.Api.Eon.AllegraEraOnwards
Cardano.Api.Eon.AlonzoEraOnly
Cardano.Api.Eon.AlonzoEraOnwards
Cardano.Api.Eon.BabbageEraOnly
Cardano.Api.Eon.BabbageEraOnwards
Cardano.Api.Eon.ByronAndAllegraEraOnwards
Cardano.Api.Eon.ByronEraOnly
Expand Down
55 changes: 55 additions & 0 deletions cardano-api/internal/Cardano/Api/Eon/BabbageEraOnly.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TypeFamilies #-}

module Cardano.Api.Eon.BabbageEraOnly
( BabbageEraOnly(..)
, babbageEraOnlyConstraints
, babbageEraOnlyToCardanoEra

, BabbageEraOnlyConstraints
) where

import Cardano.Api.Eras.Core

import Data.Typeable (Typeable)

data BabbageEraOnly era where
BabbageEraOnlyBabbage :: BabbageEraOnly BabbageEra

deriving instance Show (BabbageEraOnly era)
deriving instance Eq (BabbageEraOnly era)

instance Eon BabbageEraOnly where
inEonForEra no yes = \case
ByronEra -> no
ShelleyEra -> no
AllegraEra -> no
MaryEra -> no
AlonzoEra -> no
BabbageEra -> yes BabbageEraOnlyBabbage
ConwayEra -> no

instance ToCardanoEra BabbageEraOnly where
toCardanoEra = \case
BabbageEraOnlyBabbage -> BabbageEra

type BabbageEraOnlyConstraints era =
( IsCardanoEra era
, Typeable era
)

babbageEraOnlyConstraints :: ()
=> BabbageEraOnly era
-> (BabbageEraOnlyConstraints era => a)
-> a
babbageEraOnlyConstraints = \case
BabbageEraOnlyBabbage -> id

babbageEraOnlyToCardanoEra :: BabbageEraOnly era -> CardanoEra era
babbageEraOnlyToCardanoEra = \case
BabbageEraOnlyBabbage -> BabbageEra

0 comments on commit 2192cdf

Please sign in to comment.