Skip to content

Commit 55ff627

Browse files
authored
fix: long default values in optional field (#55)
* update tests for long default values * insert '#' when newline in optional field * bump version
1 parent 0757df0 commit 55ff627

File tree

6 files changed

+54
-11
lines changed

6 files changed

+54
-11
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ members = [
66
resolver = "2"
77

88
[workspace.package]
9-
version = "0.16.0"
9+
version = "0.16.1"
1010
edition = "2021"
1111
authors = ["Antonio Yang <yanganto@gmail.com>", "faervan <faervan@proton.me>"]
1212
license = "MIT"

derive/src/lib.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -568,7 +568,11 @@ impl Intermediate {
568568
match field.default {
569569
DefaultSource::DefaultValue(default) => {
570570
field_example.push_str(" = ");
571-
field_example.push_str(&default);
571+
if field.optional {
572+
field_example.push_str(&default.replace('\n', "\n# "));
573+
} else {
574+
field_example.push_str(&default);
575+
}
572576
field_example.push('\n');
573577
}
574578
DefaultSource::DefaultFn(None) => match struct_default {

flake.lock

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22

33
inputs = {
4-
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
4+
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
55
rust-overlay.url = "github:oxalica/rust-overlay";
66
flake-utils.url = "github:numtide/flake-utils";
77
};

lib/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ license.workspace = true
1111
readme.workspace = true
1212

1313
[dependencies]
14-
toml-example-derive = { version = "=0.16.0", path = "../derive" }
14+
toml-example-derive = { version = "=0.16.1", path = "../derive" }
1515

1616
[dev-dependencies]
1717
serde = { version = "1.0", features = ["derive"] }

lib/src/lib.rs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1279,6 +1279,45 @@ a = ""
12791279
[instance.example]
12801280
a = ""
12811281
1282+
"#
1283+
);
1284+
}
1285+
1286+
#[test]
1287+
fn optional_long_vector_field() {
1288+
#[derive(TomlExample)]
1289+
#[allow(dead_code)]
1290+
struct Foo {
1291+
/// Option<Vec<String>>, with small default values
1292+
#[toml_example(default = ["a", "b", "c"])]
1293+
array_value_example: Option<Vec<String>>,
1294+
1295+
/// Option<Vec<String>>, with long default values
1296+
#[toml_example(default = ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
1297+
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
1298+
"ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
1299+
"ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
1300+
])]
1301+
array_long_value_example: Option<Vec<String>>,
1302+
1303+
/// Option<Vec<String>>, with a long default value but no space after comma
1304+
#[toml_example(default = ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc","ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"])]
1305+
array_long_value_no_space_example: Option<Vec<String>>,
1306+
}
1307+
assert_eq!(
1308+
Foo::toml_example(),
1309+
r#"# Option<Vec<String>>, with small default values
1310+
# array_value_example = ["a", "b", "c"]
1311+
1312+
# Option<Vec<String>>, with long default values
1313+
# array_long_value_example = ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
1314+
# "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
1315+
# "ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
1316+
# "ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"]
1317+
1318+
# Option<Vec<String>>, with a long default value but no space after comma
1319+
# array_long_value_no_space_example = ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc","ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"]
1320+
12821321
"#
12831322
);
12841323
}

0 commit comments

Comments
 (0)