diff --git a/src/book/bookconfig.rs b/src/book/bookconfig.rs index 53544eb0..9b1b33a5 100644 --- a/src/book/bookconfig.rs +++ b/src/book/bookconfig.rs @@ -21,6 +21,7 @@ pub struct BookConfig { pub indent_spaces: i32, multilingual: bool, + pub google_analytics: Option, } impl BookConfig { @@ -37,6 +38,7 @@ impl BookConfig { indent_spaces: 4, // indentation used for SUMMARY.md multilingual: false, + google_analytics: None, } } @@ -154,6 +156,11 @@ impl BookConfig { self.set_theme_path(&theme_path); } + // Google analytics code + if let Some(id) = config.get("google_analytics_id") { + self.google_analytics = Some(id.to_string().replace("\"", "")); + } + self } diff --git a/src/book/bookconfig_test.rs b/src/book/bookconfig_test.rs index 61cfa6a9..b3a24385 100644 --- a/src/book/bookconfig_test.rs +++ b/src/book/bookconfig_test.rs @@ -347,3 +347,25 @@ fn it_parses_json_arrays_to_toml() { assert_eq!(format!("{:#?}", result), expected); } + +#[test] +fn it_fetches_google_analytics_from_toml() { + let text = r#" +title = "mdBook Documentation" +description = "Create book from markdown files. Like Gitbook but implemented in Rust" +author = "Mathieu David" +google_analytics_id = "123456" +"#; + + let mut config = BookConfig::new(Path::new(".")); + + config.parse_from_toml_string(&text.to_string()); + + let mut expected = BookConfig::new(Path::new(".")); + expected.title = "mdBook Documentation".to_string(); + expected.author = "Mathieu David".to_string(); + expected.description = "Create book from markdown files. Like Gitbook but implemented in Rust".to_string(); + expected.google_analytics = Some("123456".to_string()); + + assert_eq!(format!("{:#?}", config), format!("{:#?}", expected)); +}