update language attribute to configurable

This commit is contained in:
rnitta 2019-05-30 11:53:49 +09:00
parent 04e74bfa1b
commit 4f7c299de7
5 changed files with 14 additions and 4 deletions

View File

@ -2,6 +2,7 @@
title = "mdBook Documentation" title = "mdBook Documentation"
description = "Create book from markdown files. Like Gitbook but implemented in Rust" description = "Create book from markdown files. Like Gitbook but implemented in Rust"
authors = ["Mathieu David", "Michael-F-Bryan"] authors = ["Mathieu David", "Michael-F-Bryan"]
language = "en"
[output.html] [output.html]
mathjax-support = true mathjax-support = true

View File

@ -42,6 +42,7 @@ This is general information about your book.
- **src:** By default, the source directory is found in the directory named - **src:** By default, the source directory is found in the directory named
`src` directly under the root folder. But this is configurable with the `src` `src` directly under the root folder. But this is configurable with the `src`
key in the configuration file. key in the configuration file.
- **language:** The main language of the book, which is used as a language attribute `<html lang="en">` for example.
**book.toml** **book.toml**
```toml ```toml
@ -50,6 +51,7 @@ title = "Example book"
authors = ["John Doe", "Jane Doe"] authors = ["John Doe", "Jane Doe"]
description = "The example book covers examples." description = "The example book covers examples."
src = "my-src" # the source files will be found in `root/my-src` instead of `root/src` src = "my-src" # the source files will be found in `root/my-src` instead of `root/src`
language = "en"
``` ```
### Build options ### Build options

View File

@ -17,9 +17,8 @@ handlebars template you can access this information by using
Here is a list of the properties that are exposed: Here is a list of the properties that are exposed:
- ***language*** Language of the book in the form `en`. To use in <code - ***language*** Language of the book in the form `en`, as specified in `book.toml` (if not specified, defaults to `en`). To use in <code
class="language-html">\<html lang="{{ language }}"></code> for example. At the class="language-html">\<html lang="{{ language }}"></code> for example.
moment it is hardcoded.
- ***title*** Title of the book, as specified in `book.toml` - ***title*** Title of the book, as specified in `book.toml`
- ***chapter_title*** Title of the current chapter, as listed in `SUMMARY.md` - ***chapter_title*** Title of the current chapter, as listed in `SUMMARY.md`

View File

@ -374,6 +374,8 @@ pub struct BookConfig {
pub src: PathBuf, pub src: PathBuf,
/// Does this book support more than one language? /// Does this book support more than one language?
pub multilingual: bool, pub multilingual: bool,
/// The main language of the book.
pub language: Option<String>,
} }
impl Default for BookConfig { impl Default for BookConfig {
@ -384,6 +386,7 @@ impl Default for BookConfig {
description: None, description: None,
src: PathBuf::from("src"), src: PathBuf::from("src"),
multilingual: false, multilingual: false,
language: Some(String::from("en")),
} }
} }
} }
@ -570,6 +573,7 @@ mod tests {
description = "A completely useless book" description = "A completely useless book"
multilingual = true multilingual = true
src = "source" src = "source"
language = "ja"
[build] [build]
build-dir = "outputs" build-dir = "outputs"
@ -604,6 +608,7 @@ mod tests {
description: Some(String::from("A completely useless book")), description: Some(String::from("A completely useless book")),
multilingual: true, multilingual: true,
src: PathBuf::from("source"), src: PathBuf::from("source"),
language: Some(String::from("ja")),
}; };
let build_should_be = BuildConfig { let build_should_be = BuildConfig {
build_dir: PathBuf::from("outputs"), build_dir: PathBuf::from("outputs"),

View File

@ -381,7 +381,10 @@ fn make_data(
let html = config.html_config().unwrap_or_default(); let html = config.html_config().unwrap_or_default();
let mut data = serde_json::Map::new(); let mut data = serde_json::Map::new();
data.insert("language".to_owned(), json!("en")); data.insert(
"language".to_owned(),
json!(config.book.language.clone().unwrap_or_default()),
);
data.insert( data.insert(
"book_title".to_owned(), "book_title".to_owned(),
json!(config.book.title.clone().unwrap_or_default()), json!(config.book.title.clone().unwrap_or_default()),