Skip to content

Commit 7beb3c4

Browse files
authored
Merge pull request #1038 from IntersectMBO/newhoggy/modify-some-ToJSON-instances-to-use-IsEra
refactor(api): migrate ToJSON instances to use experimental Era type
2 parents 054d33c + 21408c8 commit 7beb3c4

File tree

3 files changed

+16
-33
lines changed

3 files changed

+16
-33
lines changed

cardano-api/src/Cardano/Api/Tx/Internal/Output.hs

Lines changed: 6 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ import Cardano.Api.Era.Internal.Eon.Convert
6565
import Cardano.Api.Era.Internal.Eon.ConwayEraOnwards
6666
import Cardano.Api.Era.Internal.Eon.ShelleyBasedEra
6767
import Cardano.Api.Error (Error (..), displayError)
68+
import Cardano.Api.Experimental.Era qualified as Exp
6869
import Cardano.Api.HasTypeProxy qualified as HTP
6970
import Cardano.Api.Ledger.Internal.Reexport qualified as Ledger
7071
import Cardano.Api.Monad.Error
@@ -338,34 +339,13 @@ fromBabbageTxOut w txdatums txout =
338339
(fromAlonzoData d)
339340
| otherwise = TxOutDatumHash (convert w) (ScriptDataHash dh)
340341

341-
instance IsCardanoEra era => ToJSON (TxOut ctx era) where
342-
toJSON = txOutToJsonValue cardanoEra
342+
instance Exp.IsEra era => ToJSON (TxOut ctx era) where
343+
toJSON = txOutToJsonValue Exp.useEra
343344

344-
txOutToJsonValue :: CardanoEra era -> TxOut ctx era -> Aeson.Value
345+
txOutToJsonValue :: Exp.Era era -> TxOut ctx era -> Aeson.Value
345346
txOutToJsonValue era (TxOut addr val dat refScript) =
346347
case era of
347-
ByronEra -> object ["address" .= addr, "value" .= val]
348-
ShelleyEra -> object ["address" .= addr, "value" .= val]
349-
AllegraEra -> object ["address" .= addr, "value" .= val]
350-
MaryEra -> object ["address" .= addr, "value" .= val]
351-
AlonzoEra ->
352-
object
353-
[ "address" .= addr
354-
, "value" .= val
355-
, datHashJsonVal dat
356-
, "datum" .= datJsonVal dat
357-
]
358-
BabbageEra ->
359-
object
360-
[ "address" .= addr
361-
, "value" .= val
362-
, datHashJsonVal dat
363-
, "datum" .= datJsonVal dat
364-
, "inlineDatum" .= inlineDatumJsonVal dat
365-
, "inlineDatumRaw" .= inlineDatumRawJsonCbor dat
366-
, "referenceScript" .= refScriptJsonVal refScript
367-
]
368-
ConwayEra ->
348+
Exp.ConwayEra ->
369349
object
370350
[ "address" .= addr
371351
, "value" .= val
@@ -375,7 +355,7 @@ txOutToJsonValue era (TxOut addr val dat refScript) =
375355
, "inlineDatumRaw" .= inlineDatumRawJsonCbor dat
376356
, "referenceScript" .= refScriptJsonVal refScript
377357
]
378-
DijkstraEra ->
358+
Exp.DijkstraEra ->
379359
object
380360
[ "address" .= addr
381361
, "value" .= val

cardano-api/src/Cardano/Api/UTxO.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,12 @@ module Cardano.Api.UTxO
8181
)
8282
where
8383

84-
import Cardano.Api.Era.Internal.Core (IsCardanoEra)
8584
import Cardano.Api.Era.Internal.Eon.ShelleyBasedEra
8685
( IsShelleyBasedEra
8786
, ShelleyBasedEra
8887
, ShelleyLedgerEra
8988
)
89+
import Cardano.Api.Experimental.Era qualified as Exp
9090
import Cardano.Api.Tx.Internal.Output
9191
( CtxUTxO
9292
, TxOut (..)
@@ -133,7 +133,7 @@ instance GHC.IsList (UTxO era) where
133133
fromList = UTxO . GHC.fromList
134134
toList = GHC.toList . unUTxO
135135

136-
instance IsCardanoEra era => ToJSON (UTxO era) where
136+
instance Exp.IsEra era => ToJSON (UTxO era) where
137137
toJSON (UTxO m) = toJSON m
138138
toEncoding (UTxO m) = toEncoding m
139139

cardano-api/test/cardano-api-test/Test/Cardano/Api/Json.hs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,34 +21,37 @@ import Hedgehog.Gen qualified as Gen
2121
import Test.Tasty (TestTree, testGroup)
2222
import Test.Tasty.Hedgehog (testProperty)
2323

24+
testEra :: ShelleyBasedEra ConwayEra
25+
testEra = ShelleyBasedEraConway
26+
2427
prop_json_roundtrip_alonzo_genesis :: Property
2528
prop_json_roundtrip_alonzo_genesis = H.property $ do
2629
genesis <- forAll genAlonzoGenesis
2730
tripping genesis encode eitherDecode
2831

2932
prop_json_roundtrip_utxo :: Property
3033
prop_json_roundtrip_utxo = H.property $ do
31-
utxo <- forAll $ genUTxO ShelleyBasedEraBabbage
34+
utxo <- forAll $ genUTxO testEra
3235
tripping utxo encode eitherDecode
3336

3437
prop_json_roundtrip_reference_scripts :: Property
3538
prop_json_roundtrip_reference_scripts = H.property $ do
36-
rScript <- forAll $ genReferenceScript ShelleyBasedEraBabbage
39+
rScript <- forAll $ genReferenceScript testEra
3740
tripping rScript encode eitherDecode
3841

3942
prop_json_roundtrip_txoutvalue :: Property
4043
prop_json_roundtrip_txoutvalue = H.property $ do
41-
oVal <- forAll $ genTxOutValue ShelleyBasedEraBabbage
44+
oVal <- forAll $ genTxOutValue testEra
4245
tripping oVal encode eitherDecode
4346

4447
prop_json_roundtrip_txout_tx_context :: Property
4548
prop_json_roundtrip_txout_tx_context = H.property $ do
46-
txOut <- forAll $ genTxOutTxContext ShelleyBasedEraBabbage
49+
txOut <- forAll $ genTxOutTxContext testEra
4750
tripping txOut encode eitherDecode
4851

4952
prop_json_roundtrip_txout_utxo_context :: Property
5053
prop_json_roundtrip_txout_utxo_context = H.property $ do
51-
txOut <- forAll $ genTxOutUTxOContext ShelleyBasedEraBabbage
54+
txOut <- forAll $ genTxOutUTxOContext testEra
5255
tripping txOut encode eitherDecode
5356

5457
prop_json_roundtrip_scriptdata_detailed_json :: Property

0 commit comments

Comments
 (0)