1
1
//! Code in config
2
2
use serde:: { Deserialize , Serialize } ;
3
3
4
+ const PICK_DEFAULT : & str = "${fid}.${slug}" ;
4
5
fn default_pick ( ) -> String {
5
- "${fid}.${slug}" . into ( )
6
+ PICK_DEFAULT . into ( )
6
7
}
7
8
9
+ const SUBMISSION_DEFAULT : & str = "${fid}.${slug}.${sid}.${ac}" ;
8
10
fn default_submission ( ) -> String {
9
- "${fid}.${slug}.${sid}.${ac}" . into ( )
11
+ SUBMISSION_DEFAULT . into ( )
12
+ }
13
+
14
+ fn is_default_pick ( t : & String ) -> bool {
15
+ t == PICK_DEFAULT
16
+ }
17
+
18
+ fn is_default_submission ( t : & String ) -> bool {
19
+ t == SUBMISSION_DEFAULT
20
+ }
21
+
22
+ fn is_default_string ( t : & String ) -> bool {
23
+ t. is_empty ( )
24
+ }
25
+ fn is_default_bool ( t : & bool ) -> bool {
26
+ !t
10
27
}
11
28
12
29
/// Code config
@@ -18,26 +35,29 @@ pub struct Code {
18
35
pub editor_args : Option < Vec < String > > ,
19
36
#[ serde( rename( serialize = "editor-envs" ) , alias = "editor-envs" , default ) ]
20
37
pub editor_envs : Option < Vec < String > > ,
21
- #[ serde( default , skip_serializing ) ]
38
+ #[ serde( default , skip_serializing_if = "is_default_bool" ) ]
22
39
pub edit_code_marker : bool ,
23
- #[ serde( default , skip_serializing ) ]
40
+ #[ serde( default , skip_serializing_if = "is_default_string" ) ]
24
41
pub start_marker : String ,
25
- #[ serde( default , skip_serializing ) ]
42
+ #[ serde( default , skip_serializing_if = "is_default_string" ) ]
26
43
pub end_marker : String ,
27
44
#[ serde( rename( serialize = "inject_before" ) , alias = "inject_before" , default ) ]
28
45
pub inject_before : Option < Vec < String > > ,
29
46
#[ serde( rename( serialize = "inject_after" ) , alias = "inject_after" , default ) ]
30
47
pub inject_after : Option < Vec < String > > ,
31
- #[ serde( default , skip_serializing ) ]
48
+ #[ serde( default , skip_serializing_if = "is_default_bool" ) ]
32
49
pub comment_problem_desc : bool ,
33
- #[ serde( default , skip_serializing ) ]
50
+ #[ serde( default , skip_serializing_if = "is_default_string" ) ]
34
51
pub comment_leading : String ,
35
- #[ serde( default , skip_serializing ) ]
52
+ #[ serde( default , skip_serializing_if = "is_default_bool" ) ]
36
53
pub test : bool ,
37
54
pub lang : String ,
38
- #[ serde( default = "default_pick" , skip_serializing ) ]
55
+ #[ serde( default = "default_pick" , skip_serializing_if = "is_default_pick" ) ]
39
56
pub pick : String ,
40
- #[ serde( default = "default_submission" , skip_serializing) ]
57
+ #[ serde(
58
+ default = "default_submission" ,
59
+ skip_serializing_if = "is_default_submission"
60
+ ) ]
41
61
pub submission : String ,
42
62
}
43
63
0 commit comments