Skip to content

Commit 29aa622

Browse files
committed
Rust codegen: update config parser a json data
1 parent 84523e4 commit 29aa622

File tree

3 files changed

+62
-30
lines changed

3 files changed

+62
-30
lines changed

lambda-buffers-codegen/data/rust-plutus-pla.json

Lines changed: 54 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -7,122 +7,146 @@
77
],
88
"Plutus.V1.Address": [
99
"plutus-ledger-api",
10-
"v1::address",
10+
"v1",
11+
"address",
1112
"Address"
1213
],
1314
"Plutus.V1.Credential": [
1415
"plutus-ledger-api",
15-
"v1::address",
16+
"v1",
17+
"address",
1618
"Credential"
1719
],
1820
"Plutus.V1.StakingCredential": [
1921
"plutus-ledger-api",
20-
"v1::address",
22+
"v1",
23+
"address",
2124
"StakingCredential"
2225
],
2326
"Plutus.V1.PubKeyHash": [
2427
"plutus-ledger-api",
25-
"v1::crypto",
28+
"v1",
29+
"crypto",
2630
"Ed25519PubKeyHash"
2731
],
2832
"Plutus.V1.Bytes": [
2933
"plutus-ledger-api",
30-
"v1::crypto",
34+
"v1",
35+
"crypto",
3136
"LedgerBytes"
3237
],
3338
"Plutus.V1.Interval": [
3439
"plutus-ledger-api",
35-
"v1::interval",
40+
"v1",
41+
"interval",
3642
"Interval"
3743
],
3844
"Plutus.V1.Extended": [
3945
"plutus-ledger-api",
40-
"v1::interval",
46+
"v1",
47+
"interval",
4148
"Extended"
4249
],
4350
"Plutus.V1.LowerBound": [
4451
"plutus-ledger-api",
45-
"v1::interval",
52+
"v1",
53+
"interval",
4654
"LowerBound"
4755
],
4856
"Plutus.V1.UpperBound": [
4957
"plutus-ledger-api",
50-
"v1::interval",
58+
"v1",
59+
"interval",
5160
"UpperBound"
5261
],
5362
"Plutus.V1.POSIXTime": [
5463
"plutus-ledger-api",
55-
"v1::transaction",
64+
"v1",
65+
"transaction",
5666
"POSIXTime"
5767
],
5868
"Plutus.V1.POSIXTimeRange": [
5969
"plutus-ledger-api",
60-
"v1::transaction",
70+
"v1",
71+
"transaction",
6172
"POSIXTimeRange"
6273
],
6374
"Plutus.V1.Value": [
6475
"plutus-ledger-api",
65-
"v1::value",
76+
"v1",
77+
"value",
6678
"Value"
6779
],
6880
"Plutus.V1.CurrencySymbol": [
6981
"plutus-ledger-api",
70-
"v1::value",
82+
"v1",
83+
"value",
7184
"CurrencySymbol"
7285
],
7386
"Plutus.V1.AssetClass": [
7487
"plutus-ledger-api",
75-
"v1::value",
88+
"v1",
89+
"value",
7690
"AssetClass"
7791
],
7892
"Plutus.V1.TokenName": [
7993
"plutus-ledger-api",
80-
"v1::value",
94+
"v1",
95+
"value",
8196
"TokenName"
8297
],
8398
"Plutus.V1.Redeemer": [
8499
"plutus-ledger-api",
85-
"v1::redeemer",
100+
"v1",
101+
"redeemer",
86102
"Redeemer"
87103
],
88104
"Plutus.V1.Datum": [
89105
"plutus-ledger-api",
90-
"v1::datum",
106+
"v1",
107+
"datum",
91108
"Datum"
92109
],
93110
"Plutus.V1.DatumHash": [
94111
"plutus-ledger-api",
95-
"v1::datum",
112+
"v1",
113+
"datum",
96114
"DatumHash"
97115
],
98116
"Plutus.V1.RedeemerHash": [
99117
"plutus-ledger-api",
100-
"v1::redeemer",
118+
"v1",
119+
"redeemer",
101120
"RedeemerHash"
102121
],
103122
"Plutus.V1.ScriptHash": [
104123
"plutus-ledger-api",
105-
"v1::script",
124+
"v1",
125+
"script",
106126
"ScriptHash"
107127
],
108128
"Plutus.V1.TxInInfo": [
109129
"plutus-ledger-api",
110-
"v1::transaction",
130+
"v1",
131+
"transaction",
111132
"TxInInfo"
112133
],
113134
"Plutus.V1.TxId": [
114135
"plutus-ledger-api",
115-
"v1::transaction",
136+
"v1",
137+
"transaction",
116138
"TransactionHash"
117139
],
118140
"Plutus.V1.TxOut": [
119141
"plutus-ledger-api",
120-
"v1::transaction",
142+
"v1",
143+
"transaction",
121144
"TransactionOutput"
122145
],
123146
"Plutus.V1.TxOutRef": [
124147
"plutus-ledger-api",
125-
"v1::transaction",
148+
"v1",
149+
"transaction",
126150
"TransactionInput"
127151
],
128152
"Plutus.V1.Map": [
@@ -132,17 +156,20 @@
132156
],
133157
"Plutus.V2.TxInInfo": [
134158
"plutus-ledger-api",
135-
"v1::transaction",
159+
"v1",
160+
"transaction",
136161
"TxInInfo"
137162
],
138163
"Plutus.V2.OutputDatum": [
139164
"plutus-ledger-api",
140-
"v2::datum",
165+
"v2",
166+
"datum",
141167
"OutputDatum"
142168
],
143169
"Plutus.V2.TxOut": [
144170
"plutus-ledger-api",
145-
"v2::transaction",
171+
"v2",
172+
"transaction",
146173
"TransactionOutput"
147174
]
148175
},

lambda-buffers-codegen/data/rust-prelude-base.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
],
4141
"Prelude.Integer": [
4242
"num_bigint",
43-
"",
4443
"BigInt"
4544
],
4645
"Prelude.Bool": [

lambda-buffers-codegen/src/LambdaBuffers/Codegen/Rust/Config.hs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ module LambdaBuffers.Codegen.Rust.Config (Config) where
55
import Data.Aeson (FromJSON (parseJSON), ToJSON (toJSON))
66
import Data.Aeson qualified as A
77
import Data.Vector qualified as Vector
8+
import Debug.Trace (trace)
89
import LambdaBuffers.Codegen.Config qualified as Config
910
import LambdaBuffers.Codegen.Rust.Print.Syntax qualified as R
1011

@@ -28,9 +29,14 @@ instance (FromJSON a) => FromJSON (R.Qualified a) where
2829
"Qualified"
2930
( \arr -> do
3031
case Vector.toList arr of
32+
[] -> fail "Cannot parse qualified entity, empty list is invalid"
3133
[a] -> R.Qualified'Builtin <$> parseJSON a
32-
[cn, mn, a] -> R.Qualified'LibRef <$> parseJSON cn <*> parseJSON mn <*> parseJSON a
33-
_ -> fail "Invalid Qualified"
34+
cn : parts -> do
35+
modules <- traverse parseJSON (init (trace (show parts) parts))
36+
R.Qualified'LibRef
37+
<$> parseJSON cn
38+
<*> pure (map R.MkModuleName modules)
39+
<*> parseJSON (last parts)
3440
)
3541
v
3642

0 commit comments

Comments
 (0)