@@ -56,6 +56,17 @@ pub enum PdlType {
56
56
pub struct Metadata {
57
57
#[ serde( skip_serializing_if = "Option::is_none" ) ]
58
58
pub defs : Option < IndexMap < String , PdlBlock > > ,
59
+
60
+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
61
+ pub def : Option < String > ,
62
+ }
63
+ impl Default for Metadata {
64
+ fn default ( ) -> Self {
65
+ Self {
66
+ defs : None ,
67
+ def : None ,
68
+ }
69
+ }
59
70
}
60
71
61
72
/// Call a function
@@ -88,7 +99,6 @@ pub trait SequencingBlock {
88
99
fn kind ( & self ) -> & str ;
89
100
fn description ( & self ) -> & Option < String > ;
90
101
fn role ( & self ) -> & Option < Role > ;
91
- fn def ( & self ) -> & Option < String > ;
92
102
fn metadata ( & self ) -> & Option < Metadata > ;
93
103
fn items ( & self ) -> & Vec < PdlBlock > ;
94
104
fn with_items ( & self , items : Vec < PdlBlock > ) -> Self ;
@@ -118,9 +128,6 @@ pub struct LastOfBlock {
118
128
119
129
#[ serde( skip_serializing_if = "Option::is_none" ) ]
120
130
pub parser : Option < PdlParser > ,
121
-
122
- #[ serde( skip_serializing_if = "Option::is_none" ) ]
123
- pub def : Option < String > ,
124
131
}
125
132
impl SequencingBlock for LastOfBlock {
126
133
fn kind ( & self ) -> & str {
@@ -132,9 +139,6 @@ impl SequencingBlock for LastOfBlock {
132
139
fn role ( & self ) -> & Option < Role > {
133
140
& self . role
134
141
}
135
- fn def ( & self ) -> & Option < String > {
136
- return & self . def ;
137
- }
138
142
fn metadata ( & self ) -> & Option < Metadata > {
139
143
& self . metadata
140
144
}
@@ -186,9 +190,6 @@ pub struct TextBlock {
186
190
187
191
#[ serde( skip_serializing_if = "Option::is_none" ) ]
188
192
pub parser : Option < PdlParser > ,
189
-
190
- #[ serde( skip_serializing_if = "Option::is_none" ) ]
191
- pub def : Option < String > ,
192
193
}
193
194
impl SequencingBlock for TextBlock {
194
195
fn kind ( & self ) -> & str {
@@ -200,9 +201,6 @@ impl SequencingBlock for TextBlock {
200
201
fn role ( & self ) -> & Option < Role > {
201
202
& self . role
202
203
}
203
- fn def ( & self ) -> & Option < String > {
204
- return & self . def ;
205
- }
206
204
fn metadata ( & self ) -> & Option < Metadata > {
207
205
& self . metadata
208
206
}
@@ -237,7 +235,6 @@ impl SequencingBlock for TextBlock {
237
235
impl TextBlock {
238
236
pub fn new ( text : Vec < PdlBlock > ) -> Self {
239
237
TextBlock {
240
- def : None ,
241
238
metadata : None ,
242
239
description : None ,
243
240
role : None ,
@@ -247,7 +244,16 @@ impl TextBlock {
247
244
}
248
245
249
246
pub fn def ( & mut self , def : & str ) -> & mut Self {
250
- self . def = Some ( def. into ( ) ) ;
247
+ match & mut self . metadata {
248
+ Some ( metadata) => {
249
+ metadata. def = Some ( def. into ( ) ) ;
250
+ }
251
+ None => {
252
+ let mut metadata: Metadata = Default :: default ( ) ;
253
+ metadata. def = Some ( def. into ( ) ) ;
254
+ self . metadata = Some ( metadata) ;
255
+ }
256
+ }
251
257
self
252
258
}
253
259
@@ -295,12 +301,14 @@ pub struct PdlUsage {
295
301
#[ derive( Serialize , Deserialize , Debug , Clone ) ]
296
302
#[ serde( tag = "kind" , rename = "model" ) ]
297
303
pub struct ModelBlock {
304
+ #[ serde( flatten) ]
305
+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
306
+ pub metadata : Option < Metadata > ,
307
+
298
308
#[ serde( skip_serializing_if = "Option::is_none" ) ]
299
309
pub description : Option < String > ,
300
310
pub model : String ,
301
311
#[ serde( skip_serializing_if = "Option::is_none" ) ]
302
- pub def : Option < String > ,
303
- #[ serde( skip_serializing_if = "Option::is_none" ) ]
304
312
pub parameters : Option < HashMap < String , Value > > ,
305
313
#[ serde( skip_serializing_if = "Option::is_none" ) ]
306
314
pub input : Option < Box < PdlBlock > > ,
@@ -318,7 +326,7 @@ pub struct ModelBlock {
318
326
impl ModelBlock {
319
327
pub fn new ( model : & str ) -> Self {
320
328
ModelBlock {
321
- def : None ,
329
+ metadata : None ,
322
330
description : None ,
323
331
model_response : None ,
324
332
parameters : None ,
@@ -433,15 +441,16 @@ pub struct ObjectBlock {
433
441
#[ derive( Serialize , Deserialize , Debug , Clone ) ]
434
442
#[ serde( tag = "kind" ) ]
435
443
pub struct DataBlock {
444
+ #[ serde( flatten) ]
445
+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
446
+ pub metadata : Option < Metadata > ,
447
+
436
448
pub data : Value ,
437
449
438
450
/// Do not evaluate expressions inside strings.
439
451
#[ serde( skip_serializing_if = "Option::is_none" ) ]
440
452
pub raw : Option < bool > ,
441
453
442
- #[ serde( skip_serializing_if = "Option::is_none" ) ]
443
- pub def : Option < String > ,
444
-
445
454
#[ serde( skip_serializing_if = "Option::is_none" ) ]
446
455
pub parser : Option < PdlParser > ,
447
456
}
@@ -486,6 +495,10 @@ pub enum StringOrNull {
486
495
#[ derive( Serialize , Deserialize , Debug , Clone ) ]
487
496
#[ serde( tag = "kind" , rename = "read" ) ]
488
497
pub struct ReadBlock {
498
+ #[ serde( flatten) ]
499
+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
500
+ pub metadata : Option < Metadata > ,
501
+
489
502
/// Name of the file to read. If `None`, read the standard input.
490
503
pub read : StringOrNull ,
491
504
@@ -495,9 +508,6 @@ pub struct ReadBlock {
495
508
/// Indicate if one or multiple lines should be read.
496
509
pub multiline : Option < bool > ,
497
510
498
- #[ serde( skip_serializing_if = "Option::is_none" ) ]
499
- pub def : Option < String > ,
500
-
501
511
#[ serde( skip_serializing_if = "Option::is_none" ) ]
502
512
pub parser : Option < PdlParser > ,
503
513
}
0 commit comments