From 683d2b224073fe346ba0fdf51b237a07e4c4fdfd Mon Sep 17 00:00:00 2001 From: toyboot4e Date: Sun, 3 May 2020 17:54:17 +0900 Subject: [PATCH 1/5] Fix use of MDBOOK_BOOK --- src/config.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/config.rs b/src/config.rs index 36190ebfbc..71c0b8f277 100644 --- a/src/config.rs +++ b/src/config.rs @@ -142,6 +142,22 @@ impl Config { let parsed_value = serde_json::from_str(&value) .unwrap_or_else(|_| serde_json::Value::String(value.to_string())); + if matches!(&*key, "book" | "build") { + if let serde_json::Value::Object(ref map) = parsed_value { + // To `set` each `key`, we wrap them as `prefix.key` + let prefix = &key; // "book" or "build" + let mut s = String::new(); + for (k, v) in map { + s.clear(); + s.push_str(prefix); + s.push('.'); + s.push_str(k); + self.set(&s, v).expect("unreachable"); + } + return; + } + } + self.set(key, parsed_value).expect("unreachable"); } } From 4c64f23089570c643dc5786ddddf4312a4c77d75 Mon Sep 17 00:00:00 2001 From: toyboot4e Date: Sun, 3 May 2020 17:54:35 +0900 Subject: [PATCH 2/5] Fix example of MDBOOK_BOOK --- src/config.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config.rs b/src/config.rs index 71c0b8f277..55cd3b5598 100644 --- a/src/config.rs +++ b/src/config.rs @@ -124,7 +124,7 @@ impl Config { /// > when building the book with something like /// > /// > ```text - /// > $ export MDBOOK_BOOK="{'title': 'My Awesome Book', authors: ['Michael-F-Bryan']}" + /// > $ export MDBOOK_BOOK="{'title': 'My Awesome Book', 'authors': ['Michael-F-Bryan']}" /// > $ mdbook build /// > ``` /// From 3a63276727dd00f4e79568a26d6177562ed1edf8 Mon Sep 17 00:00:00 2001 From: toyboot4e Date: Sun, 3 May 2020 18:16:44 +0900 Subject: [PATCH 3/5] Not to use `matches!` --- src/config.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config.rs b/src/config.rs index 55cd3b5598..1e9c0a122f 100644 --- a/src/config.rs +++ b/src/config.rs @@ -142,7 +142,7 @@ impl Config { let parsed_value = serde_json::from_str(&value) .unwrap_or_else(|_| serde_json::Value::String(value.to_string())); - if matches!(&*key, "book" | "build") { + if key == "book" || key == "build" { if let serde_json::Value::Object(ref map) = parsed_value { // To `set` each `key`, we wrap them as `prefix.key` let prefix = &key; // "book" or "build" From 2f59dbf1efe4a966e3bb46c5db3e9cd40b56b1a2 Mon Sep 17 00:00:00 2001 From: toyboot4e Date: Sun, 3 May 2020 18:58:41 +0900 Subject: [PATCH 4/5] Fix example of MDBOOK_BOOK (again) --- src/config.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config.rs b/src/config.rs index 1e9c0a122f..91f49681dd 100644 --- a/src/config.rs +++ b/src/config.rs @@ -124,7 +124,7 @@ impl Config { /// > when building the book with something like /// > /// > ```text - /// > $ export MDBOOK_BOOK="{'title': 'My Awesome Book', 'authors': ['Michael-F-Bryan']}" + /// > $ export MDBOOK_BOOK='{"title": "My Awesome Book", "authors": ["Michael-F-Bryan"]}' /// > $ mdbook build /// > ``` /// From 282e55122e32270f3fd2ec85efa979f669fdaac9 Mon Sep 17 00:00:00 2001 From: toyboot4e Date: Fri, 8 May 2020 19:56:41 +0900 Subject: [PATCH 5/5] Update src/config.rs Co-authored-by: Eric Huss --- src/config.rs | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/config.rs b/src/config.rs index 91f49681dd..d56614d787 100644 --- a/src/config.rs +++ b/src/config.rs @@ -145,14 +145,9 @@ impl Config { if key == "book" || key == "build" { if let serde_json::Value::Object(ref map) = parsed_value { // To `set` each `key`, we wrap them as `prefix.key` - let prefix = &key; // "book" or "build" - let mut s = String::new(); for (k, v) in map { - s.clear(); - s.push_str(prefix); - s.push('.'); - s.push_str(k); - self.set(&s, v).expect("unreachable"); + let full_key = format!("{}.{}", key, k); + self.set(&full_key, v).expect("unreachable"); } return; }