Skip to content

Commit f5a4f95

Browse files
committed
fix(Serialize config if non-default, rather than never)
1 parent 5d44d58 commit f5a4f95

File tree

1 file changed

+30
-10
lines changed

1 file changed

+30
-10
lines changed

src/config/code.rs

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,29 @@
11
//! Code in config
22
use serde::{Deserialize, Serialize};
33

4+
const PICK_DEFAULT: &str = "${fid}.${slug}";
45
fn default_pick() -> String {
5-
"${fid}.${slug}".into()
6+
PICK_DEFAULT.into()
67
}
78

9+
const SUBMISSION_DEFAULT: &str = "${fid}.${slug}.${sid}.${ac}";
810
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
1027
}
1128

1229
/// Code config
@@ -18,26 +35,29 @@ pub struct Code {
1835
pub editor_args: Option<Vec<String>>,
1936
#[serde(rename(serialize = "editor-envs"), alias = "editor-envs", default)]
2037
pub editor_envs: Option<Vec<String>>,
21-
#[serde(default, skip_serializing)]
38+
#[serde(default, skip_serializing_if = "is_default_bool")]
2239
pub edit_code_marker: bool,
23-
#[serde(default, skip_serializing)]
40+
#[serde(default, skip_serializing_if = "is_default_string")]
2441
pub start_marker: String,
25-
#[serde(default, skip_serializing)]
42+
#[serde(default, skip_serializing_if = "is_default_string")]
2643
pub end_marker: String,
2744
#[serde(rename(serialize = "inject_before"), alias = "inject_before", default)]
2845
pub inject_before: Option<Vec<String>>,
2946
#[serde(rename(serialize = "inject_after"), alias = "inject_after", default)]
3047
pub inject_after: Option<Vec<String>>,
31-
#[serde(default, skip_serializing)]
48+
#[serde(default, skip_serializing_if = "is_default_bool")]
3249
pub comment_problem_desc: bool,
33-
#[serde(default, skip_serializing)]
50+
#[serde(default, skip_serializing_if = "is_default_string")]
3451
pub comment_leading: String,
35-
#[serde(default, skip_serializing)]
52+
#[serde(default, skip_serializing_if = "is_default_bool")]
3653
pub test: bool,
3754
pub lang: String,
38-
#[serde(default = "default_pick", skip_serializing)]
55+
#[serde(default = "default_pick", skip_serializing_if = "is_default_pick")]
3956
pub pick: String,
40-
#[serde(default = "default_submission", skip_serializing)]
57+
#[serde(
58+
default = "default_submission",
59+
skip_serializing_if = "is_default_submission"
60+
)]
4161
pub submission: String,
4262
}
4363

0 commit comments

Comments
 (0)