From ee8087fe698c7a256a85847abc818ba077a13d6c Mon Sep 17 00:00:00 2001 From: "Noumir.Poutipou" Date: Fri, 4 Jan 2019 22:00:58 +0100 Subject: [PATCH 01/74] Correct a typo in the theme documentation --- .../content/documentation/themes/installing-and-using-themes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/content/documentation/themes/installing-and-using-themes.md b/docs/content/documentation/themes/installing-and-using-themes.md index ca210d29..3205eb8c 100644 --- a/docs/content/documentation/themes/installing-and-using-themes.md +++ b/docs/content/documentation/themes/installing-and-using-themes.md @@ -6,7 +6,7 @@ weight = 20 ## Installing a theme -The easiest way to install to theme is to clone its repository in the `themes` +The easiest way to install a theme is to clone its repository in the `themes` directory. ```bash From 774514f4d4efc65e99a9108a6fc886e9747e567c Mon Sep 17 00:00:00 2001 From: Peng Guanwen Date: Sat, 5 Jan 2019 22:37:24 +0800 Subject: [PATCH 02/74] refactor markdown_to_html this commit contains two refactors: - extract custom link transformations into a function. - separate some trivial markup generation. --- components/rendering/src/markdown.rs | 111 +++++++++++++++------------ 1 file changed, 60 insertions(+), 51 deletions(-) diff --git a/components/rendering/src/markdown.rs b/components/rendering/src/markdown.rs index c21e58b7..368901a4 100644 --- a/components/rendering/src/markdown.rs +++ b/components/rendering/src/markdown.rs @@ -49,6 +49,56 @@ fn is_colocated_asset_link(link: &str) -> bool { && !link.starts_with("mailto:") } +fn fix_link(link: &str, context: &RenderContext) -> Result { + // A few situations here: + // - it could be a relative link (starting with `./`) + // - it could be a link to a co-located asset + // - it could be a normal link + // - any of those can be in a header or not: if it's in a header + // we need to append to a string + let result = if link.starts_with("./") { + match resolve_internal_link(&link, context.permalinks) { + Ok(url) => url, + Err(_) => { + return Err(format!("Relative link {} not found.", link).into()); + } + } + } else if is_colocated_asset_link(&link) { + format!("{}{}", context.current_page_permalink, link) + } else if context.config.check_external_links + && !link.starts_with('#') + && !link.starts_with("mailto:") { + let res = check_url(&link); + if res.is_valid() { + link.to_string() + } else { + return Err( + format!("Link {} is not valid: {}", link, res.message()).into(), + ); + } + } else { + link.to_string() + }; + Ok(result) +} + +/// returns true if event have been processed +fn push_to_temp_header(event: &Event, temp_header: &mut TempHeader) -> bool { + match event { + Event::End(Tag::Link(_, _)) => { + temp_header.add_html(""); + } + Event::Start(Tag::Code) => { + temp_header.add_html(""); + } + Event::End(Tag::Code) => { + temp_header.add_html(""); + } + _ => return false, + } + true +} + pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result { // the rendered html let mut html = String::with_capacity(content.len()); @@ -76,6 +126,11 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result { // Header first @@ -142,37 +197,12 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result { - // A few situations here: - // - it could be a relative link (starting with `./`) - // - it could be a link to a co-located asset - // - it could be a normal link - // - any of those can be in a header or not: if it's in a header - // we need to append to a string - let fixed_link = if link.starts_with("./") { - match resolve_internal_link(&link, context.permalinks) { - Ok(url) => url, - Err(_) => { - error = Some(format!("Relative link {} not found.", link).into()); - return Event::Html(Borrowed("")); - } + let fixed_link = match fix_link(&link, context) { + Ok(fixed_link) => fixed_link, + Err(err) => { + error = Some(err); + return Event::Html(Borrowed("")) } - } else if is_colocated_asset_link(&link) { - format!("{}{}", context.current_page_permalink, link) - } else if context.config.check_external_links - && !link.starts_with('#') - && !link.starts_with("mailto:") - { - let res = check_url(&link); - if res.is_valid() { - link.to_string() - } else { - error = Some( - format!("Link {} is not valid: {}", link, res.message()).into(), - ); - String::new() - } - } else { - link.to_string() }; if in_header { @@ -187,27 +217,6 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result { - if in_header { - temp_header.add_html(""); - return Event::Html(Borrowed("")); - } - event - } - Event::Start(Tag::Code) => { - if in_header { - temp_header.add_html(""); - return Event::Html(Borrowed("")); - } - event - } - Event::End(Tag::Code) => { - if in_header { - temp_header.add_html(""); - return Event::Html(Borrowed("")); - } - event - } Event::Start(Tag::Header(num)) => { in_header = true; temp_header = TempHeader::new(num); From 972aab1ac492aa29b2c23ad5958e71ad3729e0a9 Mon Sep 17 00:00:00 2001 From: Peng Guanwen Date: Sat, 5 Jan 2019 23:30:53 +0800 Subject: [PATCH 03/74] Add emphasis, strong and code support in header --- components/rendering/src/markdown.rs | 40 +++++++++++++++++--------- components/rendering/tests/markdown.rs | 27 +++++++++++++++++ 2 files changed, 54 insertions(+), 13 deletions(-) diff --git a/components/rendering/src/markdown.rs b/components/rendering/src/markdown.rs index 368901a4..926d0c9f 100644 --- a/components/rendering/src/markdown.rs +++ b/components/rendering/src/markdown.rs @@ -82,23 +82,37 @@ fn fix_link(link: &str, context: &RenderContext) -> Result { Ok(result) } -/// returns true if event have been processed -fn push_to_temp_header(event: &Event, temp_header: &mut TempHeader) -> bool { - match event { - Event::End(Tag::Link(_, _)) => { - temp_header.add_html(""); - } - Event::Start(Tag::Code) => { - temp_header.add_html(""); - } - Event::End(Tag::Code) => { - temp_header.add_html(""); - } +fn start_tag(temp_header: &mut TempHeader, tag: &Tag) -> bool { + match tag { + Tag::Emphasis => temp_header.add_html(""), + Tag::Strong => temp_header.add_html(""), + Tag::Code => temp_header.add_html(""), + // Tag::Link is handled elsewhere _ => return false, } true } +fn end_tag(temp_header: &mut TempHeader, tag: &Tag) -> bool { + match tag { + Tag::Emphasis => temp_header.add_html(""), + Tag::Strong => temp_header.add_html(""), + Tag::Code => temp_header.add_html(""), + Tag::Link(_, _) => temp_header.add_html(""), + _ => return false, + } + true +} + +/// returns true if event have been processed +fn push_to_temp_header(event: &Event, temp_header: &mut TempHeader) -> bool { + match event { + Event::Start(tag) => start_tag(temp_header, tag), + Event::End(tag) => end_tag(temp_header, tag), + _ => false, + } +} + pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result { // the rendered html let mut html = String::with_capacity(content.len()); @@ -126,7 +140,7 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> ResultEmphasis text\n") +} + +#[test] +fn can_understand_strong_in_header() { + let permalinks_ctx = HashMap::new(); + let config = Config::default(); + let context = RenderContext::new(&ZOLA_TERA, &config, "", &permalinks_ctx, InsertAnchor::None); + let res = render_content("# **Strong** text", &context).unwrap(); + assert_eq!(res.body, "

Strong text

\n") +} + +#[test] +fn can_understand_code_in_header() { + let permalinks_ctx = HashMap::new(); + let config = Config::default(); + let context = RenderContext::new(&ZOLA_TERA, &config, "", &permalinks_ctx, InsertAnchor::None); + let res = render_content("# `Code` text", &context).unwrap(); + assert_eq!(res.body, "

Code text

\n") +} + #[test] fn can_make_valid_relative_link_in_header() { let mut permalinks = HashMap::new(); From 7130616f630646074e40f45c55a3665297da002b Mon Sep 17 00:00:00 2001 From: Peng Guanwen Date: Sun, 6 Jan 2019 19:04:53 +0800 Subject: [PATCH 04/74] Minor fixes --- components/rendering/src/markdown.rs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/components/rendering/src/markdown.rs b/components/rendering/src/markdown.rs index 926d0c9f..6b79077c 100644 --- a/components/rendering/src/markdown.rs +++ b/components/rendering/src/markdown.rs @@ -54,8 +54,6 @@ fn fix_link(link: &str, context: &RenderContext) -> Result { // - it could be a relative link (starting with `./`) // - it could be a link to a co-located asset // - it could be a normal link - // - any of those can be in a header or not: if it's in a header - // we need to append to a string let result = if link.starts_with("./") { match resolve_internal_link(&link, context.permalinks) { Ok(url) => url, @@ -82,18 +80,18 @@ fn fix_link(link: &str, context: &RenderContext) -> Result { Ok(result) } -fn start_tag(temp_header: &mut TempHeader, tag: &Tag) -> bool { +fn push_start_tag(temp_header: &mut TempHeader, tag: &Tag) -> bool { match tag { Tag::Emphasis => temp_header.add_html(""), Tag::Strong => temp_header.add_html(""), Tag::Code => temp_header.add_html(""), - // Tag::Link is handled elsewhere + // Tag::Link is handled in `markdown_to_html` _ => return false, } true } -fn end_tag(temp_header: &mut TempHeader, tag: &Tag) -> bool { +fn push_end_tag(temp_header: &mut TempHeader, tag: &Tag) -> bool { match tag { Tag::Emphasis => temp_header.add_html(""), Tag::Strong => temp_header.add_html(""), @@ -107,8 +105,8 @@ fn end_tag(temp_header: &mut TempHeader, tag: &Tag) -> bool { /// returns true if event have been processed fn push_to_temp_header(event: &Event, temp_header: &mut TempHeader) -> bool { match event { - Event::Start(tag) => start_tag(temp_header, tag), - Event::End(tag) => end_tag(temp_header, tag), + Event::Start(tag) => push_start_tag(temp_header, tag), + Event::End(tag) => push_end_tag(temp_header, tag), _ => false, } } @@ -140,7 +138,7 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result Date: Mon, 7 Jan 2019 13:20:19 -0500 Subject: [PATCH 05/74] add id to continue reading p tag (#577) * add id to continue reading p tag --- components/rendering/src/markdown.rs | 2 +- components/rendering/tests/markdown.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/components/rendering/src/markdown.rs b/components/rendering/src/markdown.rs index 6b79077c..dc409ce7 100644 --- a/components/rendering/src/markdown.rs +++ b/components/rendering/src/markdown.rs @@ -16,7 +16,7 @@ use utils::site::resolve_internal_link; use context::RenderContext; use table_of_contents::{make_table_of_contents, Header, TempHeader}; -const CONTINUE_READING: &str = "

\n"; +const CONTINUE_READING: &str = "

\n"; #[derive(Debug)] pub struct Rendered { diff --git a/components/rendering/tests/markdown.rs b/components/rendering/tests/markdown.rs index 4838b6a0..6149e4f5 100644 --- a/components/rendering/tests/markdown.rs +++ b/components/rendering/tests/markdown.rs @@ -708,7 +708,7 @@ fn can_handle_summaries() { .unwrap(); assert_eq!( res.body, - "

Hello world

\n

\n

Bla bla

\n" + "

Hello world

\n

\n

Bla bla

\n" ); assert_eq!( res.summary_len, From 3d9c27e095e3774ed4071e7cd61d8062ccb00eba Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Mon, 7 Jan 2019 19:21:55 +0100 Subject: [PATCH 06/74] Tweak to docs to mention the paragraph id for continue-reading --- CHANGELOG.md | 1 + docs/content/documentation/content/page.md | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 91bc573b..9c2d8b20 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ - Add support for content in multiple languages - Lower latency on serve before rebuilding from 2 to 1 second - Allow processing PNG and produced images are less blurry +- Add an id (`zola-continue-reading`) ## 0.5.1 (2018-12-14) diff --git a/docs/content/documentation/content/page.md b/docs/content/documentation/content/page.md index 45a6626f..fef7f3a4 100644 --- a/docs/content/documentation/content/page.md +++ b/docs/content/documentation/content/page.md @@ -102,6 +102,6 @@ where you want the summary to end and the content up to that point will be also available separately in the [template](./documentation/templates/pages-sections.md#page-variables). -An anchor link to this position named `continue-reading` is created so you can link -directly to it if needed for example: +An anchor link to this position named `continue-reading` is created, wrapped in a paragraph +with a `zola-continue-reading` id, so you can link directly to it if needed for example: `Continue Reading` From cae9223ebdaedb024459ffc6c9cc27607eb4eeb6 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Mon, 7 Jan 2019 19:24:08 +0100 Subject: [PATCH 07/74] Mention that serve deletes the public dir as well --- docs/content/documentation/getting-started/cli-usage.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/content/documentation/getting-started/cli-usage.md b/docs/content/documentation/getting-started/cli-usage.md index a1a24ea9..95267f53 100644 --- a/docs/content/documentation/getting-started/cli-usage.md +++ b/docs/content/documentation/getting-started/cli-usage.md @@ -58,6 +58,8 @@ if you are running zola in a Docker container. In the event you don't want zola to run a local webserver, you can use the `--watch-only` flag. +Before starting, it will delete the public directory to ensure it starts from a clean slate. + ```bash $ zola serve $ zola serve --port 2000 From 538866487b4e79ca04c52256bbeb79df6b298f03 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Mon, 7 Jan 2019 21:03:34 +0100 Subject: [PATCH 08/74] Add multilingual taxonomies --- Cargo.lock | 387 +++++++++--------- components/config/src/config.rs | 4 +- components/library/src/taxonomies/mod.rs | 128 +++++- components/site/src/lib.rs | 8 +- components/site/tests/site.rs | 1 + components/site/tests/site_i18n.rs | 14 + components/templates/src/global_fns/mod.rs | 4 +- .../documentation/content/multilingual.md | 3 + .../documentation/content/taxonomies.md | 3 +- test_site_i18n/config.toml | 5 + test_site_i18n/content/blog/something.fr.md | 3 + test_site_i18n/content/blog/something.md | 3 + test_site_i18n/templates/auteurs/list.html | 3 + test_site_i18n/templates/auteurs/single.html | 21 + test_site_i18n/templates/authors/list.html | 3 + test_site_i18n/templates/authors/single.html | 21 + 16 files changed, 404 insertions(+), 207 deletions(-) create mode 100644 test_site_i18n/templates/auteurs/list.html create mode 100644 test_site_i18n/templates/auteurs/single.html create mode 100644 test_site_i18n/templates/authors/list.html create mode 100644 test_site_i18n/templates/authors/single.html diff --git a/Cargo.lock b/Cargo.lock index 0d998f57..df0e9528 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3,7 +3,7 @@ name = "MacTypes-sys" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -18,17 +18,17 @@ dependencies = [ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-signal 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "trust-dns-proto 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "trust-dns-resolver 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -48,12 +48,12 @@ dependencies = [ "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "tower-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "trust-dns-resolver 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -90,7 +90,7 @@ dependencies = [ "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", @@ -99,11 +99,11 @@ dependencies = [ "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -116,7 +116,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.23 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.24 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -181,7 +181,7 @@ name = "atty" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -199,7 +199,7 @@ dependencies = [ "autocfg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -210,7 +210,7 @@ version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -359,7 +359,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -367,7 +367,7 @@ name = "core-foundation-sys" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -393,7 +393,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -590,7 +590,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "encoding_rs" -version = "0.8.13" +version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -639,7 +639,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.23 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.24 (registry+https://github.com/rust-lang/crates.io-index)", "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -654,7 +654,7 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.50 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -664,7 +664,7 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crc32fast 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "miniz-sys 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "miniz_oxide_c_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -714,7 +714,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "fsevent-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -722,7 +722,7 @@ name = "fsevent-sys" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -818,7 +818,7 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "string 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -834,7 +834,7 @@ name = "hostname" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "winutil 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -848,7 +848,7 @@ dependencies = [ "markup5ever 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.23 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.24 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -895,12 +895,12 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -914,7 +914,7 @@ dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)", "native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -978,10 +978,10 @@ dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "inotify-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -989,7 +989,7 @@ name = "inotify-sys" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -997,7 +997,7 @@ name = "iovec" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1053,7 +1053,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "libc" -version = "0.2.45" +version = "0.2.46" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1152,8 +1152,8 @@ name = "markup5ever" version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "phf 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", - "phf_codegen 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", + "phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", + "phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1173,7 +1173,7 @@ version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1196,8 +1196,8 @@ version = "2.0.0-alpha.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "mime 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)", - "phf 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", - "phf_codegen 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", + "phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", + "phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1207,7 +1207,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1225,7 +1225,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", "crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "miniz_oxide 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1239,7 +1239,7 @@ dependencies = [ "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1264,7 +1264,7 @@ version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1285,7 +1285,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "openssl 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1302,7 +1302,7 @@ version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1322,7 +1322,7 @@ dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1342,7 +1342,7 @@ dependencies = [ "fsevent-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1357,7 +1357,7 @@ dependencies = [ "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.23 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.24 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1396,7 +1396,7 @@ name = "num_cpus" version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1406,7 +1406,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "onig_sys 69.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1416,7 +1416,7 @@ version = "69.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1429,7 +1429,7 @@ dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-sys 0.9.40 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1444,7 +1444,7 @@ version = "0.9.40" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1457,15 +1457,6 @@ dependencies = [ "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "parking_lot" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "parking_lot" version = "0.7.1" @@ -1475,25 +1466,13 @@ dependencies = [ "parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "parking_lot_core" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "parking_lot_core" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1530,7 +1509,7 @@ dependencies = [ "pest_meta 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.23 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.24 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1545,33 +1524,33 @@ dependencies = [ [[package]] name = "phf" -version = "0.7.23" +version = "0.7.24" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", + "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "phf_codegen" -version = "0.7.23" +version = "0.7.24" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "phf_generator 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", - "phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", + "phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", + "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "phf_generator" -version = "0.7.23" +version = "0.7.24" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "phf_shared" -version = "0.7.23" +version = "0.7.24" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1647,7 +1626,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1658,36 +1637,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_os 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_xorshift 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_chacha" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "autocfg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1719,6 +1697,18 @@ dependencies = [ "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rand_os" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rand_pcg" version = "0.1.1" @@ -1730,7 +1720,7 @@ dependencies = [ [[package]] name = "rand_xorshift" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1753,7 +1743,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1839,7 +1829,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "encoding_rs 0.8.13 (registry+https://github.com/rust-lang/crates.io-index)", + "encoding_rs 0.8.14 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1852,8 +1842,8 @@ dependencies = [ "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", "serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1912,7 +1902,7 @@ name = "sass-rs" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "sass-sys 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1922,7 +1912,7 @@ version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1963,7 +1953,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "security-framework-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1974,7 +1964,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "MacTypes-sys 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2002,7 +1992,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.23 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.24 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2049,7 +2039,7 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arc-swap 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2110,7 +2100,7 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.50 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2132,7 +2122,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "new_debug_unreachable 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", + "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", "precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2144,8 +2134,8 @@ name = "string_cache_codegen" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "phf_generator 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", - "phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", + "phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", + "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2174,12 +2164,12 @@ dependencies = [ "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.23 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.24 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "syn" -version = "0.15.23" +version = "0.15.24" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2194,7 +2184,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.23 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.24 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2225,8 +2215,8 @@ version = "3.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.50 (registry+https://github.com/rust-lang/crates.io-index)", "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2260,7 +2250,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futf 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "mac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "utf-8 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", + "utf-8 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2296,7 +2286,7 @@ name = "termion" version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.50 (registry+https://github.com/rust-lang/crates.io-index)", "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2333,14 +2323,14 @@ name = "time" version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.50 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2349,15 +2339,15 @@ dependencies = [ "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-fs 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-fs 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-uds 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2367,7 +2357,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2376,30 +2366,31 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-executor" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-fs" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-io" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2409,7 +2400,7 @@ dependencies = [ [[package]] name = "tokio-reactor" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2418,10 +2409,10 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2430,41 +2421,42 @@ version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", "signal-hook 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-tcp" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-threadpool" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "crossbeam-channel 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2475,7 +2467,7 @@ dependencies = [ "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2488,25 +2480,25 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-uds" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2539,10 +2531,10 @@ dependencies = [ "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", "socket2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2562,10 +2554,10 @@ dependencies = [ "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", "socket2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2585,7 +2577,7 @@ dependencies = [ "lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "resolv-conf 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", "trust-dns-proto 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2718,7 +2710,7 @@ dependencies = [ [[package]] name = "utf-8" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2980,7 +2972,7 @@ dependencies = [ "checksum encoding-index-singlebyte 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3351d5acffb224af9ca265f435b859c7c01537c0849754d3db3fdf2bfe2ae84a" "checksum encoding-index-tradchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fd0e20d5688ce3cab59eb3ef3a2083a5c77bf496cb798dc6fcdb75f323890c18" "checksum encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569" -"checksum encoding_rs 0.8.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1a8fa54e6689eb2549c4efed8d00d7f3b2b994a064555b0e8df4ae3764bcc4be" +"checksum encoding_rs 0.8.14 (registry+https://github.com/rust-lang/crates.io-index)" = "a69d152eaa438a291636c1971b0a370212165ca8a75759eb66818c5ce9b538f7" "checksum error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "07e791d3be96241c77c43846b665ef1384606da2cd2a48730abe606a12906e02" "checksum error-chain 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6930e04918388a9a2e41d518c25cf679ccafe26733fb4127dbf21993f2575d46" "checksum failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2" @@ -3028,7 +3020,7 @@ dependencies = [ "checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" "checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1" "checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" -"checksum libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)" = "2d2857ec59fadc0773853c664d2d18e7198e83883e7060b63c924cb077bd5c74" +"checksum libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)" = "023a4cd09b2ff695f9734c1934145a315594b7986398496841c7031a5a1bbdbd" "checksum libflate 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)" = "bff3ac7d6f23730d3b533c35ed75eef638167634476a499feef16c428d74b57b" "checksum linked-hash-map 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7860ec297f7008ff7a1e3382d7f7e1dcd69efc94751a2284bafc3d013c2aa939" "checksum linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "70fb39025bc7cdd76305867c4eccf2f2dcf6e9a57f5b21a93e1c2d86cd03ec9e" @@ -3069,19 +3061,17 @@ dependencies = [ "checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" "checksum openssl-sys 0.9.40 (registry+https://github.com/rust-lang/crates.io-index)" = "1bb974e77de925ef426b6bc82fce15fd45bdcbeb5728bffcfc7cdeeb7ce1c2d6" "checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" -"checksum parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5" "checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" -"checksum parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c" "checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" "checksum pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "54f0c72a98d8ab3c99560bfd16df8059cc10e1f9a8e83e6e3b97718dd766e9c3" "checksum pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "833d1ae558dc601e9a60366421196a8d94bc0ac980476d0b67e1d0988d72b2d0" "checksum pest_generator 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "63120576c4efd69615b5537d3d052257328a4ca82876771d6944424ccfd9f646" "checksum pest_meta 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f5a3492a4ed208ffc247adcdcc7ba2a95be3104f58877d0d02f0df39bf3efb5e" -"checksum phf 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)" = "cec29da322b242f4c3098852c77a0ca261c9c01b806cae85a5572a1eb94db9a6" -"checksum phf_codegen 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)" = "7d187f00cd98d5afbcd8898f6cf181743a449162aeb329dcd2f3849009e605ad" -"checksum phf_generator 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)" = "03dc191feb9b08b0dc1330d6549b795b9d81aec19efe6b4a45aec8d4caee0c4b" -"checksum phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)" = "b539898d22d4273ded07f64a05737649dc69095d92cb87c7097ec68e3f150b93" +"checksum phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "b3da44b85f8e8dfaec21adae67f95d93244b2ecf6ad2a692320598dcc8e6dd18" +"checksum phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "b03e85129e324ad4166b06b2c7491ae27fe3ec353af72e72cd1654c7225d517e" +"checksum phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "09364cc93c159b8b06b1f4dd8a4398984503483891b0c26b867cf431fb132662" +"checksum phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "234f71a15de2288bcb7e3b6515828d22af7ec8598ee6d24c3b526fa0a80b67a0" "checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" "checksum plist 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0c7316832d9ac5da02786bdc89a3faf0ca07070212b388766e969078fd593edc" "checksum png 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f54b9600d584d3b8a739e1662a595fab051329eff43f20e7d8cc22872962145b" @@ -3092,14 +3082,15 @@ dependencies = [ "checksum quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "53fa22a1994bd0f9372d7a816207d8a2677ad0325b073f5c5332760f0fb62b5c" "checksum rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8356f47b32624fef5b3301c1be97e5944ecdd595409cc5da11d05f211db6cfbd" "checksum rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e464cd887e869cddcae8792a4ee31d23c7edd516700695608f5b98c67ee0131c" -"checksum rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ae9d223d52ae411a33cf7e54ec6034ec165df296ccd23533d671a28252b6f66a" -"checksum rand_chacha 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "771b009e3a508cb67e8823dda454aaa5368c7bc1c16829fb77d3e980440dd34a" +"checksum rand 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b65e163105a6284f841bd23100a015895f54340e88a5ffc9ca7b8b33827cfce0" +"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" "checksum rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1961a422c4d189dfb50ffa9320bf1f2a9bd54ecb92792fb9477f99a1045f3372" "checksum rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0905b6b7079ec73b314d4c748701f6931eb79fd97c668caa3f1899b22b32c6db" "checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" "checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" +"checksum rand_os 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "de5ac4de1c2973e1391dc305cb0fbf8788cb58068e98255439b7485a77022273" "checksum rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "086bd09a33c7044e56bb44d5bdde5a60e7f119a9e95b0775f545de759a32fe05" -"checksum rand_xorshift 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "effa3fcaa47e18db002bdde6060944b6d2f9cfd8db471c30e873448ad9187be3" +"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" "checksum rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "373814f27745b2686b350dd261bfd24576a6fb0e2c5919b3a2b6005f820b0473" "checksum rayon-core 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b055d1e92aba6877574d8fe604a63c8b5df60f60e5982bf7ccbb1338ea527356" "checksum redox_syscall 0.1.50 (registry+https://github.com/rust-lang/crates.io-index)" = "52ee9a534dc1301776eff45b4fa92d2c39b1d8c3d3357e6eb593e0d795506fc2" @@ -3145,7 +3136,7 @@ dependencies = [ "checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" "checksum strum 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f6c3a2071519ab6a48f465808c4c1ffdd00dfc8e93111d02b4fc5abab177676e" "checksum strum_macros 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8baacebd7b7c9b864d83a6ba7a246232983e277b86fa5cdec77f565715a4b136" -"checksum syn 0.15.23 (registry+https://github.com/rust-lang/crates.io-index)" = "9545a6a093a3f0bd59adb472700acc08cad3776f860f16a897dfce8c88721cbc" +"checksum syn 0.15.24 (registry+https://github.com/rust-lang/crates.io-index)" = "734ecc29cd36e8123850d9bf21dfd62ef8300aaa8f879aabaa899721808be37c" "checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" "checksum syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e02dd9df97a68a2d005ace28ff24c610abfc3ce17afcfdb22a077645dabb599a" "checksum tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "7e91405c14320e5c79b3d148e1c86f40749a36e490642202a31689cb1a3452b2" @@ -3157,19 +3148,19 @@ dependencies = [ "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" "checksum tiff 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a2cc6c4fd13cb1cfd20abdb196e794ceccb29371855b7e7f575945f920a5b3c2" "checksum time 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "847da467bf0db05882a9e2375934a8a55cffdc9db0d128af1518200260ba1f6c" -"checksum tokio 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "a7817d4c98cc5be21360b3b37d6036fe9b7aefa5b7a201b7b16ff33423822f7d" +"checksum tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "4790d0be6f4ba6ae4f48190efa2ed7780c9e3567796abdb285003cf39840d9c5" "checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" "checksum tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "331c8acc267855ec06eb0c94618dcbbfea45bed2d20b77252940095273fb58f6" -"checksum tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c117b6cf86bb730aab4834f10df96e4dd586eff2c3c27d3781348da49e255bde" -"checksum tokio-fs 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "60ae25f6b17d25116d2cba342083abe5255d3c2c79cb21ea11aa049c53bf7c75" -"checksum tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "7392fe0a70d5ce0c882c4778116c519bd5dbaa8a7c3ae3d04578b3afafdcda21" -"checksum tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "502b625acb4ee13cbb3b90b8ca80e0addd263ddacf6931666ef751e610b07fb5" +"checksum tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "30c6dbf2d1ad1de300b393910e8a3aa272b724a400b6531da03eed99e329fbf0" +"checksum tokio-fs 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0e9cbbc8a3698b7ab652340f46633364f9eaa928ddaaee79d8b8f356dd79a09d" +"checksum tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b53aeb9d3f5ccf2ebb29e19788f96987fa1355f8fe45ea193928eaaaf3ae820f" +"checksum tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "afbcdb0f0d2a1e4c440af82d7bbf0bf91a8a8c0575bcd20c05d15be7e9d3a02f" "checksum tokio-signal 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "dd6dc5276ea05ce379a16de90083ec80836440d5ef8a6a39545a3207373b8296" -"checksum tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7ad235e9dadd126b2d47f6736f65aa1fdcd6420e66ca63f44177bc78df89f912" -"checksum tokio-threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "56c5556262383032878afad66943926a1d1f0967f17e94bd7764ceceb3b70e7f" +"checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" +"checksum tokio-threadpool 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "17465013014410310f9f61fa10bf4724803c149ea1d51efece131c38efca93aa" "checksum tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "4f37f0111d76cc5da132fe9bc0590b9b9cfd079bc7e75ac3846278430a299ff8" "checksum tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "66268575b80f4a4a710ef83d087fdfeeabdce9b74c797535fbac18a2cb906e92" -"checksum tokio-uds 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "99ce87382f6c1a24b513a72c048b2c8efe66cb5161c9061d00bee510f08dc168" +"checksum tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "037ffc3ba0e12a0ab4aca92e5234e0dedeb48fddf6ccd260f1f150a36a9f2445" "checksum toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f" "checksum tower-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b32f72af77f1bfe3d3d4da8516a238ebe7039b51dd8637a09841ac7f16d2c987" "checksum trust-dns-proto 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0838272e89f1c693b4df38dc353412e389cf548ceed6f9fd1af5a8d6e0e7cf74" @@ -3194,7 +3185,7 @@ dependencies = [ "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" "checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" "checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" -"checksum utf-8 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "bab35f71693630bb1953dce0f2bcd780e7cde025027124a202ac08a45ba25141" +"checksum utf-8 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)" = "05e42f7c18b8f902290b009cde6d651262f956c98bc51bca4cd1d511c9cd85c7" "checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737" "checksum uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dab5c5526c5caa3d106653401a267fed923e7046f35895ffcb5ca42db64942e6" "checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" diff --git a/components/config/src/config.rs b/components/config/src/config.rs index 8e556dfc..57c8284f 100644 --- a/components/config/src/config.rs +++ b/components/config/src/config.rs @@ -42,6 +42,8 @@ pub struct Taxonomy { pub paginate_path: Option, /// Whether to generate a RSS feed only for each taxonomy term, defaults to false pub rss: bool, + /// The language for that taxonomy, only used in multilingual sites + pub lang: Option, } impl Taxonomy { @@ -64,7 +66,7 @@ impl Taxonomy { impl Default for Taxonomy { fn default() -> Taxonomy { - Taxonomy { name: String::new(), paginate_by: None, paginate_path: None, rss: false } + Taxonomy { name: String::new(), paginate_by: None, paginate_path: None, rss: false, lang: None } } } diff --git a/components/library/src/taxonomies/mod.rs b/components/library/src/taxonomies/mod.rs index f2708903..6b74f9ca 100644 --- a/components/library/src/taxonomies/mod.rs +++ b/components/library/src/taxonomies/mod.rs @@ -48,7 +48,7 @@ pub struct TaxonomyItem { } impl TaxonomyItem { - pub fn new(name: &str, path: &str, config: &Config, keys: Vec, library: &Library) -> Self { + pub fn new(name: &str, taxonomy: &TaxonomyConfig, config: &Config, keys: Vec, library: &Library) -> Self { // Taxonomy are almost always used for blogs so we filter by dates // and it's not like we can sort things across sections by anything other // than dates @@ -64,7 +64,11 @@ impl TaxonomyItem { .collect(); let (mut pages, ignored_pages) = sort_pages_by_date(data); let slug = slugify(name); - let permalink = config.make_permalink(&format!("/{}/{}", path, slug)); + let permalink = if let Some(ref lang) = taxonomy.lang { + config.make_permalink(&format!("/{}/{}/{}", lang, taxonomy.name, slug)) + } else { + config.make_permalink(&format!("/{}/{}", taxonomy.name, slug)) + }; // We still append pages without dates at the end pages.extend(ignored_pages); @@ -108,7 +112,7 @@ impl Taxonomy { ) -> Taxonomy { let mut sorted_items = vec![]; for (name, pages) in items { - sorted_items.push(TaxonomyItem::new(&name, &kind.name, config, pages, library)); + sorted_items.push(TaxonomyItem::new(&name, &kind, config, pages, library)); } sorted_items.sort_by(|a, b| a.name.cmp(&b.name)); @@ -186,6 +190,14 @@ pub fn find_taxonomies(config: &Config, library: &Library) -> Result t = Some(x), + "categories" => c = Some(x), + "auteurs" => a = Some(x), + _ => unreachable!(), + } + } + (t.unwrap(), c.unwrap(), a.unwrap()) + }; + + assert_eq!(tags.items.len(), 2); + assert_eq!(categories.items.len(), 2); + assert_eq!(authors.items.len(), 1); + + assert_eq!(tags.items[0].name, "db"); + assert_eq!(tags.items[0].slug, "db"); + assert_eq!(tags.items[0].permalink, "http://a-website.com/tags/db/"); + assert_eq!(tags.items[0].pages.len(), 1); + + assert_eq!(tags.items[1].name, "rust"); + assert_eq!(tags.items[1].slug, "rust"); + assert_eq!(tags.items[1].permalink, "http://a-website.com/tags/rust/"); + assert_eq!(tags.items[1].pages.len(), 2); + + assert_eq!(authors.items[0].name, "Vincent Prouillet"); + assert_eq!(authors.items[0].slug, "vincent-prouillet"); + assert_eq!(authors.items[0].permalink, "http://a-website.com/fr/auteurs/vincent-prouillet/"); + assert_eq!(authors.items[0].pages.len(), 1); + + assert_eq!(categories.items[0].name, "Other"); + assert_eq!(categories.items[0].slug, "other"); + assert_eq!(categories.items[0].permalink, "http://a-website.com/categories/other/"); + assert_eq!(categories.items[0].pages.len(), 1); + + assert_eq!(categories.items[1].name, "Programming tutorials"); + assert_eq!(categories.items[1].slug, "programming-tutorials"); + assert_eq!( + categories.items[1].permalink, + "http://a-website.com/categories/programming-tutorials/" + ); + assert_eq!(categories.items[1].pages.len(), 1); + } + + #[test] + fn errors_on_taxonomy_of_different_language() { + let mut config = Config::default(); + config.languages.push(Language {rss: false, code: "fr".to_string()}); + let mut library = Library::new(2, 0, false); + + config.taxonomies = + vec![TaxonomyConfig { name: "tags".to_string(), ..TaxonomyConfig::default() }]; + + let mut page1 = Page::default(); + page1.lang = Some("fr".to_string()); + let mut taxo_page1 = HashMap::new(); + taxo_page1.insert("tags".to_string(), vec!["rust".to_string(), "db".to_string()]); + page1.meta.taxonomies = taxo_page1; + library.insert_page(page1); + + let taxonomies = find_taxonomies(&config, &library); + assert!(taxonomies.is_err()); + let err = taxonomies.unwrap_err(); + // no path as this is created by Default + assert_eq!( + err.description(), + "Page `` has taxonomy `tags` which is not available in that language" + ); + } } diff --git a/components/site/src/lib.rs b/components/site/src/lib.rs index a7fbb4cf..2308cbc6 100644 --- a/components/site/src/lib.rs +++ b/components/site/src/lib.rs @@ -723,7 +723,13 @@ impl Site { } ensure_directory_exists(&self.output_path)?; - let output_path = self.output_path.join(&taxonomy.kind.name); + let output_path = if let Some(ref lang) = taxonomy.kind.lang { + let mid_path = self.output_path.join(lang); + create_directory(&mid_path)?; + mid_path.join(&taxonomy.kind.name) + } else { + self.output_path.join(&taxonomy.kind.name) + }; let list_output = taxonomy.render_all_terms(&self.tera, &self.config, &self.library)?; create_directory(&output_path)?; create_file(&output_path.join("index.html"), &self.inject_livereload(list_output))?; diff --git a/components/site/tests/site.rs b/components/site/tests/site.rs index f347bc74..b1cab795 100644 --- a/components/site/tests/site.rs +++ b/components/site/tests/site.rs @@ -479,6 +479,7 @@ fn can_build_site_with_pagination_for_taxonomy() { paginate_by: Some(2), paginate_path: None, rss: true, + lang: None, }); site.load().unwrap(); diff --git a/components/site/tests/site_i18n.rs b/components/site/tests/site_i18n.rs index cba00020..9023a730 100644 --- a/components/site/tests/site_i18n.rs +++ b/components/site/tests/site_i18n.rs @@ -125,4 +125,18 @@ fn can_build_multilingual_site() { assert!(file_contains!(public, "fr/rss.xml", "https://example.com/fr/blog/something-else/")); // Italian doesn't have RSS enabled assert!(!file_exists!(public, "it/rss.xml")); + + // Taxonomies are per-language + assert!(file_exists!(public, "authors/index.html")); + assert!(file_contains!(public, "authors/index.html", "Queen")); + assert!(!file_contains!(public, "authors/index.html", "Vincent")); + assert!(!file_exists!(public, "auteurs/index.html")); + assert!(file_exists!(public, "authors/queen-elizabeth/rss.xml")); + + assert!(!file_exists!(public, "fr/authors/index.html")); + assert!(file_exists!(public, "fr/auteurs/index.html")); + assert!(!file_contains!(public, "fr/auteurs/index.html", "Queen")); + assert!(file_contains!(public, "fr/auteurs/index.html", "Vincent")); + assert!(!file_exists!(public, "fr/auteurs/vincent-prouillet/rss.xml")); + } diff --git a/components/templates/src/global_fns/mod.rs b/components/templates/src/global_fns/mod.rs index 24ba3934..310b2655 100644 --- a/components/templates/src/global_fns/mod.rs +++ b/components/templates/src/global_fns/mod.rs @@ -297,7 +297,7 @@ mod tests { fn can_get_taxonomy() { let taxo_config = TaxonomyConfig { name: "tags".to_string(), ..TaxonomyConfig::default() }; let library = Library::new(0, 0, false); - let tag = TaxonomyItem::new("Programming", "tags", &Config::default(), vec![], &library); + let tag = TaxonomyItem::new("Programming", &taxo_config, &Config::default(), vec![], &library); let tags = Taxonomy { kind: taxo_config, items: vec![tag] }; let taxonomies = vec![tags.clone()]; @@ -336,7 +336,7 @@ mod tests { fn can_get_taxonomy_url() { let taxo_config = TaxonomyConfig { name: "tags".to_string(), ..TaxonomyConfig::default() }; let library = Library::new(0, 0, false); - let tag = TaxonomyItem::new("Programming", "tags", &Config::default(), vec![], &library); + let tag = TaxonomyItem::new("Programming", &taxo_config, &Config::default(), vec![], &library); let tags = Taxonomy { kind: taxo_config, items: vec![tag] }; let taxonomies = vec![tags.clone()]; diff --git a/docs/content/documentation/content/multilingual.md b/docs/content/documentation/content/multilingual.md index 5dd1aaad..d7889722 100644 --- a/docs/content/documentation/content/multilingual.md +++ b/docs/content/documentation/content/multilingual.md @@ -16,6 +16,9 @@ languages = [ ] ``` +If you want to use per-language taxonomies, ensure you set the `lang` field in their +configuration. + ## Content Once the languages are added in, you can start to translate your content. Zola uses the filename to detect the language: diff --git a/docs/content/documentation/content/taxonomies.md b/docs/content/documentation/content/taxonomies.md index 20c0f985..b446fa0c 100644 --- a/docs/content/documentation/content/taxonomies.md +++ b/docs/content/documentation/content/taxonomies.md @@ -7,13 +7,14 @@ Zola has built-in support for taxonomies. The first step is to define the taxonomies in your [config.toml](./documentation/getting-started/configuration.md). -A taxonomy has 4 variables: +A taxonomy has 5 variables: - `name`: a required string that will be used in the URLs, usually the plural version (i.e. tags, categories etc) - `paginate_by`: if this is set to a number, each term page will be paginated by this much. - `paginate_path`: if set, will be the path used by paginated page and the page number will be appended after it. For example the default would be page/1 - `rss`: if set to `true`, a RSS feed will be generated for each individual term. +- `lang`: only set this if you are making a multilingual site and want to indicate which language this taxonomy is for Once this is done, you can then set taxonomies in your content and Zola will pick them up: diff --git a/test_site_i18n/config.toml b/test_site_i18n/config.toml index 0a6635a4..98be3c6f 100644 --- a/test_site_i18n/config.toml +++ b/test_site_i18n/config.toml @@ -13,6 +13,11 @@ build_search_index = false generate_rss = true +taxonomies = [ + {name = "authors", rss = true}, + {name = "auteurs", lang = "fr"}, +] + languages = [ {code = "fr", rss = true}, {code = "it", rss = false}, diff --git a/test_site_i18n/content/blog/something.fr.md b/test_site_i18n/content/blog/something.fr.md index bfb19b84..22579a84 100644 --- a/test_site_i18n/content/blog/something.fr.md +++ b/test_site_i18n/content/blog/something.fr.md @@ -1,6 +1,9 @@ +++ title = "Quelque chose" date = 2018-10-09 + +[taxonomies] +auteurs = ["Vincent Prouillet"] +++ Un article diff --git a/test_site_i18n/content/blog/something.md b/test_site_i18n/content/blog/something.md index ee990de4..587edd80 100644 --- a/test_site_i18n/content/blog/something.md +++ b/test_site_i18n/content/blog/something.md @@ -1,6 +1,9 @@ +++ title = "Something" date = 2018-10-09 + +[taxonomies] +authors = ["Queen Elizabeth"] +++ A blog post diff --git a/test_site_i18n/templates/auteurs/list.html b/test_site_i18n/templates/auteurs/list.html new file mode 100644 index 00000000..5dfaaf87 --- /dev/null +++ b/test_site_i18n/templates/auteurs/list.html @@ -0,0 +1,3 @@ +{% for author in terms %} + {{ author.name }} {{ author.slug }} {{ author.pages | length }} +{% endfor %} diff --git a/test_site_i18n/templates/auteurs/single.html b/test_site_i18n/templates/auteurs/single.html new file mode 100644 index 00000000..0c3f8fb8 --- /dev/null +++ b/test_site_i18n/templates/auteurs/single.html @@ -0,0 +1,21 @@ +{% if not paginator %} + Tag: {{ term.name }} + + {% for page in term.pages %} + + {% endfor %} +{% else %} + Tag: {{ term.name }} + {% for page in paginator.pages %} + {{page.title|safe}} + {% endfor %} + Num pagers: {{ paginator.number_pagers }} + Page size: {{ paginator.paginate_by }} + Current index: {{ paginator.current_index }} + First: {{ paginator.first | safe }} + Last: {{ paginator.last | safe }} + {% if paginator.previous %}has_prev{% endif%} + {% if paginator.next %}has_next{% endif%} +{% endif %} diff --git a/test_site_i18n/templates/authors/list.html b/test_site_i18n/templates/authors/list.html new file mode 100644 index 00000000..3b8116f1 --- /dev/null +++ b/test_site_i18n/templates/authors/list.html @@ -0,0 +1,3 @@ +{% for term in terms %} + {{ term.name }} {{ term.slug }} {{ term.pages | length }} +{% endfor %} diff --git a/test_site_i18n/templates/authors/single.html b/test_site_i18n/templates/authors/single.html new file mode 100644 index 00000000..0c3f8fb8 --- /dev/null +++ b/test_site_i18n/templates/authors/single.html @@ -0,0 +1,21 @@ +{% if not paginator %} + Tag: {{ term.name }} + + {% for page in term.pages %} + + {% endfor %} +{% else %} + Tag: {{ term.name }} + {% for page in paginator.pages %} + {{page.title|safe}} + {% endfor %} + Num pagers: {{ paginator.number_pagers }} + Page size: {{ paginator.paginate_by }} + Current index: {{ paginator.current_index }} + First: {{ paginator.first | safe }} + Last: {{ paginator.last | safe }} + {% if paginator.previous %}has_prev{% endif%} + {% if paginator.next %}has_next{% endif%} +{% endif %} From c027cd97d6f2ba1942825247fffbd4dc0028a808 Mon Sep 17 00:00:00 2001 From: Peng Guanwen Date: Sat, 12 Jan 2019 16:55:52 +0800 Subject: [PATCH 09/74] Footnote is now supported in headers This fixes #569 . `markdown_to_html` is heavily refactored, header-related things is handled in a second pass. --- components/rendering/src/markdown.rs | 184 +++++++++--------- components/rendering/src/table_of_contents.rs | 48 ----- components/rendering/tests/markdown.rs | 37 +++- components/utils/src/lib.rs | 1 + components/utils/src/vec.rs | 44 +++++ 5 files changed, 169 insertions(+), 145 deletions(-) create mode 100644 components/utils/src/vec.rs diff --git a/components/rendering/src/markdown.rs b/components/rendering/src/markdown.rs index dc409ce7..f01eb29a 100644 --- a/components/rendering/src/markdown.rs +++ b/components/rendering/src/markdown.rs @@ -1,22 +1,25 @@ use std::borrow::Cow::{Borrowed, Owned}; -use self::cmark::{Event, Options, Parser, Tag}; use pulldown_cmark as cmark; use slug::slugify; use syntect::easy::HighlightLines; use syntect::html::{ - start_highlighted_html_snippet, styled_line_to_highlighted_html, IncludeBackground, + IncludeBackground, start_highlighted_html_snippet, styled_line_to_highlighted_html, }; use config::highlighting::{get_highlighter, SYNTAX_SET, THEME_SET}; -use errors::Result; -use link_checker::check_url; -use utils::site::resolve_internal_link; - use context::RenderContext; -use table_of_contents::{make_table_of_contents, Header, TempHeader}; +use errors::Result; +use front_matter::InsertAnchor; +use link_checker::check_url; +use table_of_contents::{Header, make_table_of_contents, TempHeader}; +use utils::site::resolve_internal_link; +use utils::vec::InsertMany; + +use self::cmark::{Event, Options, Parser, Tag}; const CONTINUE_READING: &str = "

\n"; +const ANCHOR_LINK_TEMPLATE: &str = "anchor-link.html"; #[derive(Debug)] pub struct Rendered { @@ -25,6 +28,18 @@ pub struct Rendered { pub toc: Vec
, } +struct HeaderIndex { + start: usize, + end: usize, + level: i32, +} + +impl HeaderIndex { + fn new(start: usize, level: i32) -> HeaderIndex { + HeaderIndex { start, end: 0, level } + } +} + // We might have cases where the slug is already present in our list of anchor // for example an article could have several titles named Example // We add a counter after the slug if the slug is already present, which @@ -65,7 +80,8 @@ fn fix_link(link: &str, context: &RenderContext) -> Result { format!("{}{}", context.current_page_permalink, link) } else if context.config.check_external_links && !link.starts_with('#') - && !link.starts_with("mailto:") { + && !link.starts_with("mailto:") + { let res = check_url(&link); if res.is_valid() { link.to_string() @@ -80,35 +96,36 @@ fn fix_link(link: &str, context: &RenderContext) -> Result { Ok(result) } -fn push_start_tag(temp_header: &mut TempHeader, tag: &Tag) -> bool { - match tag { - Tag::Emphasis => temp_header.add_html(""), - Tag::Strong => temp_header.add_html(""), - Tag::Code => temp_header.add_html(""), - // Tag::Link is handled in `markdown_to_html` - _ => return false, +/// get only text in a slice of events +fn get_text(parser_slice: &[Event]) -> String { + let mut title = String::new(); + + for event in parser_slice.iter() { + if let Event::Text(text) = event { + title += text; + } } - true + + title } -fn push_end_tag(temp_header: &mut TempHeader, tag: &Tag) -> bool { - match tag { - Tag::Emphasis => temp_header.add_html(""), - Tag::Strong => temp_header.add_html(""), - Tag::Code => temp_header.add_html(""), - Tag::Link(_, _) => temp_header.add_html(""), - _ => return false, - } - true -} +fn get_header_indexes(events: &[Event]) -> Vec { + let mut header_indexes = vec![]; -/// returns true if event have been processed -fn push_to_temp_header(event: &Event, temp_header: &mut TempHeader) -> bool { - match event { - Event::Start(tag) => push_start_tag(temp_header, tag), - Event::End(tag) => push_end_tag(temp_header, tag), - _ => false, + for (i, event) in events.iter().enumerate() { + match event { + Event::Start(Tag::Header(level)) => { + header_indexes.push(HeaderIndex::new(i, *level)); + } + Event::End(Tag::Header(_)) => { + let msg = "Header end before start?"; + header_indexes.last_mut().expect(msg).end = i; + } + _ => (), + } } + + header_indexes } pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result { @@ -119,17 +136,9 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result = None; - // If we get text in header, we need to insert the id and a anchor - let mut in_header = false; - // pulldown_cmark can send several text events for a title if there are markdown - // specific characters like `!` in them. We only want to insert the anchor the first time - let mut header_created = false; - let mut anchors: Vec = vec![]; - let mut headers = vec![]; - // Defaults to a 0 level so not a real header - // It should be an Option ideally but not worth the hassle to update - let mut temp_header = TempHeader::default(); + let mut inserted_anchors: Vec = vec![]; + let mut headers: Vec = vec![]; let mut opts = Options::empty(); let mut has_summary = false; @@ -137,26 +146,9 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result { - // Header first - if in_header { - if header_created { - temp_header.add_text(&text); - return Event::Html(Borrowed("")); - } - // += as we might have some or other things already there - temp_header.add_text(&text); - header_created = true; - return Event::Html(Borrowed("")); - } - // if we are in the middle of a code block if let Some((ref mut highlighter, in_extra)) = highlighter { let highlighted = if in_extra { @@ -217,47 +209,55 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result", fixed_link) - } else { - format!("", fixed_link, title) - }; - temp_header.add_html(&html); - return Event::Html(Borrowed("")); - } - Event::Start(Tag::Link(Owned(fixed_link), title)) } - Event::Start(Tag::Header(num)) => { - in_header = true; - temp_header = TempHeader::new(num); - Event::Html(Borrowed("")) - } - Event::End(Tag::Header(_)) => { - // End of a header, reset all the things and return the header string - - let id = find_anchor(&anchors, slugify(&temp_header.title), 0); - anchors.push(id.clone()); - temp_header.permalink = format!("{}#{}", context.current_page_permalink, id); - temp_header.id = id; - - in_header = false; - header_created = false; - let val = temp_header.to_string(context.tera, context.insert_anchor); - headers.push(temp_header.clone()); - temp_header = TempHeader::default(); - Event::Html(Owned(val)) - } Event::Html(ref markup) if markup.contains("") => { has_summary = true; Event::Html(Borrowed(CONTINUE_READING)) } _ => event, } - }); + }).collect::>(); // We need to collect the events to make a second pass - cmark::html::push_html(&mut html, parser); + let mut header_indexes = get_header_indexes(&events); + + let mut anchors_to_insert = vec![]; + + for header_idx in header_indexes { + let start_idx = header_idx.start; + let end_idx = header_idx.end; + let title = get_text(&events[start_idx + 1 .. end_idx]); + let id = find_anchor(&inserted_anchors, slugify(&title), 0); + inserted_anchors.push(id.clone()); + + // insert `id` to the tag + let html = format!("", lvl = header_idx.level, id = id); + events[start_idx] = Event::Html(Owned(html)); + + // generate anchors and places to insert them + if context.insert_anchor != InsertAnchor::None { + let anchor_idx = match context.insert_anchor { + InsertAnchor::Left => start_idx + 1, + InsertAnchor::Right => end_idx, + InsertAnchor::None => 0, // Not important + }; + let mut c = tera::Context::new(); + c.insert("id", &id); + let anchor_link = context.tera.render(ANCHOR_LINK_TEMPLATE, &c).unwrap(); + anchors_to_insert.push((anchor_idx, Event::Html(Owned(anchor_link)))); + } + + // record header to make table of contents + let permalink = format!("{}#{}", context.current_page_permalink, id); + let temp_header = TempHeader { level: header_idx.level, id, permalink, title }; + headers.push(temp_header); + } + + if context.insert_anchor != InsertAnchor::None { + events.insert_many(anchors_to_insert); + } + + cmark::html::push_html(&mut html, events.into_iter()); } if let Some(e) = error { diff --git a/components/rendering/src/table_of_contents.rs b/components/rendering/src/table_of_contents.rs index 5cc115e0..777d5f24 100644 --- a/components/rendering/src/table_of_contents.rs +++ b/components/rendering/src/table_of_contents.rs @@ -1,6 +1,3 @@ -use front_matter::InsertAnchor; -use tera::{Context as TeraContext, Tera}; - #[derive(Debug, PartialEq, Clone, Serialize)] pub struct Header { #[serde(skip_serializing)] @@ -30,7 +27,6 @@ pub struct TempHeader { pub id: String, pub permalink: String, pub title: String, - pub html: String, } impl TempHeader { @@ -40,50 +36,6 @@ impl TempHeader { id: String::new(), permalink: String::new(), title: String::new(), - html: String::new(), - } - } - - pub fn add_html(&mut self, val: &str) { - self.html += val; - } - - pub fn add_text(&mut self, val: &str) { - self.html += val; - self.title += val; - } - - /// Transform all the information we have about this header into the HTML string for it - pub fn to_string(&self, tera: &Tera, insert_anchor: InsertAnchor) -> String { - let anchor_link = if insert_anchor != InsertAnchor::None { - let mut c = TeraContext::new(); - c.insert("id", &self.id); - tera.render("anchor-link.html", &c).unwrap() - } else { - String::new() - }; - - match insert_anchor { - InsertAnchor::None => format!( - "{t}\n", - lvl = self.level, - t = self.html, - id = self.id - ), - InsertAnchor::Left => format!( - "{a}{t}\n", - lvl = self.level, - a = anchor_link, - t = self.html, - id = self.id - ), - InsertAnchor::Right => format!( - "{t}{a}\n", - lvl = self.level, - a = anchor_link, - t = self.html, - id = self.id - ), } } } diff --git a/components/rendering/tests/markdown.rs b/components/rendering/tests/markdown.rs index 6149e4f5..a85829db 100644 --- a/components/rendering/tests/markdown.rs +++ b/components/rendering/tests/markdown.rs @@ -375,6 +375,19 @@ fn can_insert_anchor_right() { ); } +#[test] +fn can_insert_anchor_for_multi_header() { + let permalinks_ctx = HashMap::new(); + let config = Config::default(); + let context = RenderContext::new(&ZOLA_TERA, &config, "", &permalinks_ctx, InsertAnchor::Right); + let res = render_content("# Hello\n# World", &context).unwrap(); + assert_eq!( + res.body, + "

Hello🔗\n

\n\ +

World🔗\n

\n" + ); +} + // See https://github.com/Keats/gutenberg/issues/42 #[test] fn can_insert_anchor_with_exclamation_mark() { @@ -528,7 +541,7 @@ fn can_understand_emphasis_in_header() { let config = Config::default(); let context = RenderContext::new(&ZOLA_TERA, &config, "", &permalinks_ctx, InsertAnchor::None); let res = render_content("# *Emphasis* text", &context).unwrap(); - assert_eq!(res.body, "

Emphasis text

\n") + assert_eq!(res.body, "

Emphasis text

\n"); } #[test] @@ -537,7 +550,7 @@ fn can_understand_strong_in_header() { let config = Config::default(); let context = RenderContext::new(&ZOLA_TERA, &config, "", &permalinks_ctx, InsertAnchor::None); let res = render_content("# **Strong** text", &context).unwrap(); - assert_eq!(res.body, "

Strong text

\n") + assert_eq!(res.body, "

Strong text

\n"); } #[test] @@ -546,7 +559,21 @@ fn can_understand_code_in_header() { let config = Config::default(); let context = RenderContext::new(&ZOLA_TERA, &config, "", &permalinks_ctx, InsertAnchor::None); let res = render_content("# `Code` text", &context).unwrap(); - assert_eq!(res.body, "

Code text

\n") + assert_eq!(res.body, "

Code text

\n"); +} + +// See https://github.com/getzola/zola/issues/569 +#[test] +fn can_understand_footnote_in_header() { + let permalinks_ctx = HashMap::new(); + let config = Config::default(); + let context = RenderContext::new(&ZOLA_TERA, &config, "", &permalinks_ctx, InsertAnchor::None); + let res = render_content("# text [^1] there\n[^1]: footnote", &context).unwrap(); + assert_eq!(res.body, r##"

text 1 there

+
1 +

footnote

+
+"##); } #[test] @@ -641,8 +668,8 @@ fn can_validate_valid_external_links() { &permalinks_ctx, InsertAnchor::None, ); - let res = render_content("[a link](http://google.com)", &context).unwrap(); - assert_eq!(res.body, "

a link

\n"); + let res = render_content("[a link](http://bing.com)", &context).unwrap(); + assert_eq!(res.body, "

a link

\n"); } #[test] diff --git a/components/utils/src/lib.rs b/components/utils/src/lib.rs index 25581e80..8e462ccf 100644 --- a/components/utils/src/lib.rs +++ b/components/utils/src/lib.rs @@ -14,3 +14,4 @@ pub mod fs; pub mod net; pub mod site; pub mod templates; +pub mod vec; diff --git a/components/utils/src/vec.rs b/components/utils/src/vec.rs new file mode 100644 index 00000000..eac02dce --- /dev/null +++ b/components/utils/src/vec.rs @@ -0,0 +1,44 @@ +pub trait InsertMany { + type Element; + fn insert_many(&mut self, elem_to_insert: Vec<(usize, Self::Element)>); +} + +impl InsertMany for Vec { + type Element = T; + + /// Efficiently insert multiple element in their specified index. + /// The index should be sorted in ascending order. + /// + /// This is done in O(n) time. + fn insert_many(&mut self, elem_to_insert: Vec<(usize, T)>) { + let mut inserted = vec![]; + let mut last_idx = 0; + + for (idx, elem) in elem_to_insert.into_iter() { + let head_len = idx - last_idx; + inserted.extend(self.splice(0 .. head_len, std::iter::empty())); + inserted.push(elem); + last_idx = idx; + } + let len = self.len(); + inserted.extend(self.drain(0..len)); + + *self = inserted; + } +} + +#[cfg(test)] +mod test { + use super::InsertMany; + + #[test] + fn insert_many_works() { + let mut v = vec![1, 2, 3, 4, 5]; + v.insert_many(vec![(0, 0), (2, -1), (5, 6)]); + assert_eq!(v, &[0, 1, 2, -1, 3, 4, 5, 6]); + + let mut v2 = vec![1, 2, 3, 4, 5]; + v2.insert_many(vec![(0, 0), (2, -1)]); + assert_eq!(v2, &[0, 1, 2, -1, 3, 4, 5]); + } +} \ No newline at end of file From 80786a2fbbcc7760bd522ad59ce907b8a1c759c4 Mon Sep 17 00:00:00 2001 From: Peng Guanwen Date: Sat, 12 Jan 2019 17:25:01 +0800 Subject: [PATCH 10/74] Revert accidentally change --- components/rendering/tests/markdown.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/rendering/tests/markdown.rs b/components/rendering/tests/markdown.rs index a85829db..aaa108f9 100644 --- a/components/rendering/tests/markdown.rs +++ b/components/rendering/tests/markdown.rs @@ -668,8 +668,8 @@ fn can_validate_valid_external_links() { &permalinks_ctx, InsertAnchor::None, ); - let res = render_content("[a link](http://bing.com)", &context).unwrap(); - assert_eq!(res.body, "

a link

\n"); + let res = render_content("[a link](http://google.com)", &context).unwrap(); + assert_eq!(res.body, "

a link

\n"); } #[test] From 0bcc706a55bb74b2c71aef9153156beb9abb9433 Mon Sep 17 00:00:00 2001 From: Ryan McGrath Date: Tue, 15 Jan 2019 14:20:47 -0800 Subject: [PATCH 11/74] One more time, Dracula theme, lol --- .../getting-started/configuration.md | 1 + sublime_themes/all.themedump | Bin 21844 -> 22646 bytes sublime_themes/dracula.tmTheme | 938 ++++++++++++++++++ 3 files changed, 939 insertions(+) create mode 100755 sublime_themes/dracula.tmTheme diff --git a/docs/content/documentation/getting-started/configuration.md b/docs/content/documentation/getting-started/configuration.md index 2acba61f..0ce7b32d 100644 --- a/docs/content/documentation/getting-started/configuration.md +++ b/docs/content/documentation/getting-started/configuration.md @@ -108,6 +108,7 @@ Zola currently has the following highlight themes available: - [classic-modified](https://tmtheme-editor.herokuapp.com/#!/editor/theme/Classic%20Modified) - [demain](https://tmtheme-editor.herokuapp.com/#!/editor/theme/Demain) - [dimmed-fluid](https://tmtheme-editor.herokuapp.com/#!/editor/theme/Dimmed%20Fluid) +- [dracula](https://draculatheme.com/) - [gray-matter-dark](https://tmtheme-editor.herokuapp.com/#!/editor/theme/Gray%20Matter%20Dark) - [gruvbox-dark](https://github.com/morhetz/gruvbox) - [gruvbox-light](https://github.com/morhetz/gruvbox) diff --git a/sublime_themes/all.themedump b/sublime_themes/all.themedump index 25e76899c4cfc54f738a89f3ced372613e90a89a..e47484f465ec56ddae17ebf86c77aaa041970213 100644 GIT binary patch literal 22646 zcmbPfTc~hTU(KmiEd?->ZcbT4qR2nj<8n!R6`VxZ#Ad*3?IK#=qwnpFH#C z_Fjv79i9FDrt$NMzV)WXY1h85y}o_l*V_BP;`{9;n$X<=(&Vh1BWk`sEjwi^n|P^ZDFvt>gdG_k3NOUus>S_i_KT*_Hq0 z-v5o>lx@2D9#`GEt6A%0vZj5{-~2S>mGZ&$`~SUkX1MTY!Ro5bsn?>9R_#u+oEmiD z-PP**+zt8<4z5nCU6R`u;pqH*Su97L15>>bf4r2b?B*+*=FDM9(&JCu?q2Q{Leb-c@4Bcj`J z)5$$&#obL@60r=QI_rP2ww$uhI$O3l(R%HRC?0t`A@+OrjE=jX$NjZxlMfJ_#xAd> zv+u3UKK-=EiPJW(6!;n_X20M;LWk#!9}C2z!`23xMu$!8TWlI8dGctR?5bN!|MIN)SRP)_ePglf zo2iY@uN1w}>VEVx+m2^J#0g(0BD=?KeRYue7aNQIEs-m6`x>hYXy6I}c8X=`9zV7Pko4hG5H@jLQy>3dayP`d1w}H~q zp52}ei|5!M-FN-qfyNyd-gv%Wose+3@XSZP*v0>gyd0IaUb?Wh9+$6|dC-u3BRfE4 zlZds7Sh20frE^=q|F>a}(ehq;UCwH6kzjqN$QskA%wz3YQCA->_$u7KF!saxgHo41 z+~PI)sCBEcsBp=pU1dw|a&^!BVm0+)*PiM8YWbQ$O}HUoYZZ& z@s!8ivLh9I@^)(+m&wgD+jaHKr8>i9d#k@QrBo%&D4eE!`0%FQx#!Jw`l8Y-ulWCF zSkiV@G;ifIyK}P061 z(^jWU)ta%`CMieO=De}(o_|fJ@5ZEvuHTVm@#XE+I|8ZVg85Y$G8QZ^)r4*{%PpA0 zBxdMvlsQ*ge&VLPY=KEkzpnV*+L|4i`b6&7*2;?{F+qd=yhUbfZac`J6TmwdF- z{@1a}3`QQwbH=PWo0TWG2PijgP;jcR<#pOG6QLz0xHEN8vHSx)_MdkQ&Hldo_oeaf zqC$R^h*vj?&$P@8sqR-jqtVx#B)T!r^wz3S<_(pfpE*8w)HdF)(IYW ztFdZ1J$qSC^V~%;*C&_;t!)2VFxNIcFygDx;uF=MC-=VOVMu&&=VD`Pzi9u95?hyw ziZd@m*8I=@lbp9*Hf2#pTWB@wic1l`J2K3VWr=TbJ2f@oV(3Nl+1p##KVQ=klZsSX z^&+jvt!)vT)Kx2wvoGfVe&@e%;+cmJy3TG0oyerE8gXt$;N~pn8_NW(6u4ZZk95eW zg!CmEn@{_+;^&!6{*N;H>$Wb-YEAPn_o{E}xhI_J?e#dgLBn9uo6B-%k~I4yy!Qs} z(P(7U>d|^v(R7qkInbj{-TT<#q=vRau9}UdTfVBah?!yCmZR}(Yfy*FpNvHk=ZzG#S{CF?m#~??^K%_X|C`A0$?Ct)?=qF1X{06d zIdH;#ElIxD3EXqvEo%@x7vlLsFs37AmDshv$qSj|*Phf}xMgFDBdgJlta!=EK zY-T&syhXlR=a}domzLf=i;nHgz4HF&ERn@u=kezU$1zWRaLagC5q|&&>uCm=GZFLl zzCL>)g2`FdEI44T_OXp~gj=tvPZ3Q_sLqfN+Q1dMWl>+`(eIu-K4-i`6p{j`B${x| z%q^4PJ-<%0dRNQ_d4bJgpK5P%*O(i{UuktI2^F)0E?!>KTSl8eDAY0|Zl*$hmw0`wGUhE>d@QTfw$yMB*A}Ksa z6*os}>T-T&d8xG0qWco#DQk~T*##mWIAcOXc12g&h1&oBdA?MIkY8@ zx1q?JHxBnFaQ`?tk2gs^y*b7G^(iH<-chtImPPkI_QA9PAeUpFg>Kjm57r=jZ3&awUDXKETxS z>?bcruMG$5ejzRMq~NWYv({}ac^R}_Tl>R3|C+U{+m|@sKkt~-d}NDOvWMW~gsXBZ z6(&xPP1yS2$m5Hx^N$~_-mYhVdxx0uQKg@3O`BTZiM8KbwC99IGh;7T*UeuRf3|a} zEWe@prKkDY-owZLJ$kKQF1h`~@$$c>DUDMrul!m3f=yb0Y3_lEnd~QzZFUv^%=54@ zrO=CSb&{vJkww>&q}&^!VLz;Q$XFB=NAUESHs#!MT)hA8UiJu4#WgjBA1roNH2-@V z9G-p0X43LI50&$nK3b@QhW(l$HjWN2p-Ab-(?=cH4g|^Ek1}@7I?$p1_&$bO|S+OYjP)EyY z0jrmLkIXfGw(kC`RgXWY%-dr5cuVp1-JGo7<`jNpE#A^-$^T%^#_V^U>w?O-WaeF* zvvGlZmgRyfrl*M;mu;B;_$RYgy(T|r&<*ELi;gXB*?v#AByoz<*|cwQ?ABFZR;*sY z)mm(J@WYR9H9?0KaLE1q+e0;m;q`TNbw!R!)i%qY! zB2Mveb4T2gn35E|Tw*qdyoptOv$Rs6(AtZqPGpGwwRelkvc6g<<}GB>*Xy>tGi|4g z?`MbGC2QWbCvWQep)gCe$i%0m?9xU7{vy6!{cp1$=SpQ8F8-mHje7LF|Ljl2-8S>;&wKv-BOrB{$iRMOvNyk^gROj!k|z z>$0Hm>G}I^nr_?w&uMy%(rJtTT>P!4Vh-Mn`jNITLCJ9G=V`Ob`%DyBBVMI+ZFjW` z+jviB_smwdj|)B?w%@TtI$HhSggH^d0-0MjO_u&DsTXy2l4KCK-M=&CyEnxgZ1%fb zKC^83t~t!cTwlNO&ay3k+cEp{)=jG0`U*{iHy+z)>3EFIG{f!I_3rKcOvX_<7KsNB z2l*XLJM55gIBTlaWn-%__bUfqG?mxBOIUR#E0HIyQ|j7|m#g#ABU`*=IiuC=mnh3F zHtEkd^^cpvJ>{*|rYe!QRiW_FN`4 zVVdJ~dx?bX){=}1 zMpFbsihKhPzu?(?o7JZ2#M=#@8`EPP%6oQJ^*ol@cFM%v>7L3G{g?l=TX@eujJ;MI z$Ll+1ZpsJkDIXqY)|gE1n%gVa!Fcy<@J&x;L2aggoaK_&jZRD3XQ!Rq*zBe+W3i&J z*lTY6iK~k0XTR8#?lBg)?V2X=sAJbX!;I)wR_2dJJ35JGe9v-_OwSHTu#hz}r`qWZCmJMs}Hk4nt zj=Ny-;Luf;`(Yhfs~#4p7#}F!v*`Ugl@C9zzy9JSQ0k|vaZdGvZ)51|zJv=oNf#%T z?q4)#N_vxecPFd+vvWKfcdz_pxzvTXEoJJm_mjS;JUwFQ854C=#fYhy!zZ6}<+8)Z zTYd&lepYp4$1{J%U9%k6OxJd*3MyNfaW0c?GcGT>9MCUu`i`fIy6_2yWk;W>Cy891 z&9EzxW3xKD@0S-3&d+P8oqvGYZmF5^MaOw^(znhw+OFJReP?lVWf1@OLMHwPOYY2Z zVb9IV4KQba)pGAmWIx|IPR%!`S>z^g#=dc3Pb|`_FlVt}z1#MMVB-0%jpu|t4%9~O zacQyI$bEy?@!XZ@%W{JEd=BpNRcKtgOQMrwr9Jm0-h*c*tPkw(IP$)biF5I5Pj#iX zd%iY&j2UfgiTvVflcel3S0|_KUHW~~&$dU~Dj4=A=s%jLyME^K69?l~8orx(WU5*q zgGA}JN!Espj_Gn4DG%8e)E!hX6N|eLB6_-PPL7oN#)dx2Ynh)eFn^a@|E1*(LzU)w zi61|+ZY?%kKd0U7<9P*+Cm*Xf-xS=iQRhf+@VnQ?L^D^0%{p>C`NSdB__kYDS6#gn zQ_C}}JyXbh=eA3mvUGaY`F1qhI*WX)+i1ZgpUYvbP~_6_^U%L@eFyli-AUUvqe9Fk z&CvAc>__`omT%gW=#pB!X5EtDPWQc1pC1{pPQShNmPIMQRFO`xz4M7zQx-0~c#)_4 zaM<1!kBjfMYnJU~COtEYpeh-Ow_NbKXO;c<@M)t`T^`dP0MT;ACu^7ql+`iUArBKh9+O0M<=@#|)L1nyC+?HAemWZ~hvqNf?z z=TZ-+4W!Lh5Cyg^*yM#hwUAqpw36s^Vx*GmJ{l1c`XMC`IkchAHQjb83 zPG^55*N1wS`$TLn_%6}dY4uA`^VQtO9TOMn>qbv=TB7lAb+Bd7l%NnX%~^FzH1=j} z@(A2}l||XLGi#RH5{;*#wf!Qk$LA{qiHJQHa_Ks>%2Y{{I-XO&!+ zXD(SW*@ zi`W{-D!HDWm=!*85rXvBK zRDDr)O$-nJ>k%llaGKW=jh>bK6Bo@>ULes~wnXFRi+9SdD_;n6_gVyfanPE$s4C_9 zc8@@>z58A?D7$8h$~<6d?UMU>?(n*e@4h%*FX-pleQecN6@!^I*Z4*6ZmYfh?x5_$ zfQxr`m%qQWSJ!dHi*vcNKi}RqM^{_Ri_NXg`(OI=b=!9wleE6qaeU8Dn=h4*BX?gs zmsfxH=(>;B%EMwlWon6u9=&~Oe!xZcc{>-b4!Ed%IC%XE4VxEVoL&2Q{5LOJRK9=l z>P3s{FU?vI5LmKi7mw&t_RYH&ElT%>jx$2#ht7F+}KGE9e$$z!AynfC4wQx~}RHmq?D*K}SuC535F7t}kemwSZ zU02tm)r;j9F1jZ9AHJW zTD$xnGS6=9@_WQQqqWO#FZ0w^kO`MfLPC5#fR$LSNW1vE4Mz>-*l}z`JeBf>VEeBMZ3PAeiyj>(wY4?SD8-Gn0?>k zR+i~G%g<+o{*~GP6=HXumss;T`hIcm^*qb#OXsh7#v5HEIPI(T{%&Wp56g?!YwSMu z_Iv$R)4JDtxG$DR?~pvj=V2nJB9+t3e&IbsfJyxJ{Nv#WjT<3$DbsbD7K)sWJa@_M zZ+6~_wu@cMl}@He{+3K!QgnFnp&O#zSr&`sZ&vQS=%4G;Ftg`U$|{R4pC3xh?8Xd@ zXT3JNUpT>5zG}k?+D9>~-Em$bnlfQQTm&;SHy_vfCwq_Np zkJyx%ncrT`lrpJif0U-6DFF-nScP2Du9 zF86H>O0vh2|GCa#SQax)f0_PSHZT2)pQX#D^5*=1^rNHAQS!glH=-);;{c)9_@B zQ(af~~7rYou6ZvF>j`>+S_}{H4}_9 z6j-Xu#&$l(@WWq=iQ6P1OjvUauN2I=nWVvdHpg(Lt{UUz^Erl>kBK>3oy{=}{P8lS zTd~PT@TPHe&w}fkdEJfi>#8%m8}Az#NBh+07`lX?&oTVF_2`dD-vpEzytF;$?909` zePKS!dhgnn6U$@V88}Mc{X1WCyhAACl~!w$d5nzJ{FL+8&oIsnHhFwi)TGK|P2h5d z^Ri73j&gN#d1=kA&%TzeU{U(%{hgof3yy|7YoGeD#!Ne9`Bj6PyCu6mtEDEMy6t@O z&!7KnEz&}NTo-9J`LXr$ygIRK%6)U0)empP%z7=leO;5mk9ApzjnN(H-=v>8{GNJb zRgqS8!k%dEX0bO9osMT^^1sz?P52+u{(-@`!)A4%%vtN@8+AXuIU(@HX_{leVxDxt zObhdlvcvypZw#*tU(uFzbn!>WQ)07r9gaB>b))CWHSvCFEp4e6GmahjGkfdD`m$sm zlS3TockRTR;tw4Rp4Bx&=la`!Q&u|)O{`*Axaala>vvZqs&p^mI%fX-p-g~Snksjs zi+CApW~OrM#=sJ-S-hJ?x+ehrTAH7HK#(D+?)Z1x{)ZDiq821(&Mn*h@4-^h zAf-qNJ687Wt4+tRGWh&NESpkyv#2(T%{Asb^5X%!Jx8f|{Ds)U z^HZx+V)dq$pKLn0+eYz@>V&G=c?(u=SeSQ}LF0$UXG!TyiJuB4T`%_CJl_16y_eUr z>eHkd7W?d8FJ35f#(7)vb>9E$V}Gol^YP8*{|}_P#r4a2tL5ttnqH{SOPPGm?sv|0 zi~oNYf@O50iBaRX@BZ{CyzuKK_F*&$;>g{kUB<8uu4o{ji{o)gvhN z*)D&Zi4kY(w7wfA=%&1ny=2#-`SkAk>ANcpDst|tN>!hkx%Q#mR;`jfpMLB%6)FE; z=W;mTa^Wj4bNeqTP3$UMONAUg{Hmu)`ipi}Ts@oJxGt@IcTmJTk;eA&XU{Tn_M1f7 z3yR;n^d~u7wpemO!s4bEwr0kO7gSAySfVt8wt8)gH2tGr_B;MZdtHC*`S^>QCK%q% zWSu9GoSb~LXm8hvB_(ZzPpT~p(mv1B`}<|r=kG2RDSf}Mh5!8Z+N>~l<(wymGUvVi z^{mX?-0jL+aJ%IZ;Zr9pj$hi^ZsW@! zX`}Pw*78VwMcty1s4cl`H&qK2NvHEHk}_486nw?wf-d(WkHbu7qJ*Qu);8uGn3i?l z!oKBOfN-o^?lZ1k-|S9ADxa-#sY$L~{po+z^|}MwwK^w0d-B2I@3GcNkyHE3%1RgP z*joGON8gEGN|zM{AGNM3oqJVKw2fb$F)zusG;W*HC-F<-$M5mJneC-D`K$WYeXGhE zwilh~aN2LSxX;svhjGv2{WYg=-#I6HO!>va?sF%T6ih-y&%T-|78w!oe@dar*UJnn!Z~m+Xiik)qLVPcO65(-|Gj%<#ZXR z-%mRDN_ppc-yrvueJ;;WZgV?!-|)}r#Oa?l%)8>w72I~BCoI=Du0^0t+;4V_{X@e) zm+k*+KXBcuvFCEipH_yWL5%+n%q^LJX`)3DWAMJd&55mYWiLKl`Y`$Tv4y{Pc^q@L zaJp1u^}$YaidV&*4JX^UTJKi79XPZ!|N8BgA0O0iZu|ZHu9{AyM|5jIs8jEg{-nKH zGHkn(R91X;<@6{!S0l)N`ql}d+~4oj7j0U#!}m+YN(0R~pCXpbo1^Jn{QUP3){|d@ z_SU@2Z? ziPT|p{i5Fd`riwcb}xPZ|K)~kn_n*$SM00*S?*uI?(=20yz7-(6C!8*f3R$}P^Ipj z?;DFBMeEDg{S8}T9QmQ?^U*nc68R-ZvL){KKK{6oHEM34pyH38{`T1~)+8TUQ6if0 zOb~LYUjUa-Y&Pbjw#ye#P9pRwR8PZ_kXYbChk7Vz%u8?WVeo7 z!PAZ(pLzOvC@lKANWXiTafqY-!*dk}H%fIJG@iETr}=z#l|#b%^-p^K-mK*>7v5KN zKRvDN>GcnXv&&vqs0eH{ePa;vW{>FIlHaxmj2I+RbiTf_u49StoMFoURl(Qzg?A#l~L3_;uNW-nQLkdb?gIZ9kly8WZ#B!+CzEOEU8s*UhbS zxa3##e7gMy*M>{eI^0h^&waY9ZQ&QQuGAlf-nN?$Y@DNfL|S?Rw@smE@ySd754xK( z#w0sROqYMWByi8|AG@oyJTK&htrxO2@Le6dZRhSk&-~weUrOK8Vf5H}{-2~tan~}x z9P)eKckFeebS7{4Vi)hw$8pRn^8bD}Td=lpdUJcr4Hf^1cVgzInQSj#sd@FmksF*5 zOmB|mZr{?#8=<%N`I)eTj%u5hzR7)Vt^dQG{qBwH_eHCZo=Et-$?~DE<0thxE#Dn6 zK@UIX^UveIaO#!8u?c}(ouSIPYhD_@u6`Z9o-s$+=Z8d@#e_oLsm09q;{;#1mP`n~ zm$2*BIi5WiyAoEci+iJH8Y9T^_;>h@&fYwh!#l(0zf~)8-2L4D{uCR{f7i|C$(T7M z_yuc<+T=GD9p`YYKN0`x|AX1bGN<)wyT6@v^GY|<&M(66rp~qZf4E|f{Jv%4?hhR5 z1>83&9LiPh-52I!BPtm;o88Ll^+aWNh2zr`6qkHB+-%!#XSl1w?xgCb6HgK>dMzg1 zT<4eDy5*6_wtp9o3(rVzYj3apG=;as>9L2{iFYd&EL7@gDc|?uy}_>~!dsR(s<_Q^ zR4Kfa`=qG7v|~=aGtc%jPVT=1tsZS`o!PlozWt=%cg30`k56@;)w$KO^TfJ)|7(NRH~n+|7k#uh>e%<6%dhv>d^y~3vb^)nzKcZ#!tGZ+tetN7M{u_} zE5EhtM9E3h^%jaNZkokV{^j?xKYe@BD|UMOT|ddl{jm7-k7o)UfxS6`O4MTEyq4k=_3n zFQxDH_4c;gsmV^>%^4J6ZTeZ@HS1p4jM-iA`f42>^Npx{zpf3{rl{H zug^2IHdI<4u`)c$%F3wsz;S}AI7`GS<_o9hYi&riktp@-3$)A?H~ zCeE3t*!yu!5F_*M&2c>5vdS$IFL;&abLl%5*vUTd3DZh2Ra0XAsX3MJ`>Dv8$0tm^Arhlk2@+<6w^;0V)QCOHx18y?kq_aLdBDbx9tVp_XWQ zl%!JJk0P$Nj(OLoO!#Pa(%b9lwSUq|VRvftHNMZ}am~LRFv9>**{oZ`NcF}h4GVo?1@7^A|n(8+>Y|>oFf)(#u+#D;MxfXd9BNO z8^7H9%@#Cg`L_kVcg|Xd&#euv-}z$By~lj{WkI_4l$-r3PhgO6PL-G6COKN<-i;t{j!>! z+cmU~i$A>kZ()6{=%&B=f(ObzU3igX8QIc$I??Od0-X$%tK54Oc``y(vSzHkxZvOi z{<^2jra0V_KC))rrA2YyPF0t@Vm@JN)vtNR=a<4lh2<9foLxILYU^HBsg)nS`+swI zsZdqe0{1joA-|LZD*C=Asr5K)o&6XobuQ0>pA7@IbSVt-MXq-D(M<8FFyg# zv+g~`%;N3lr1#<}<0Y92^{Z){JM~3Q7amHiiQt+p)H;8GoAQ5)g{C(p{6Z%g)g~pp zxca-i`I^KEet#=vgL(D;Dis!)zAg5Y*uG`E1@ray!E0)N6#Y08F#m2%+-mc(&Ndah zGsl-39D8@n)urvkjx<%7@af5dn@&GY>RGz`-_bkS%NG5QyKt1pasJ*L>7ECJcy`af zZdzLVWTw+fkt-M8OkZ8P>P2|sX|ZCZ|L=_x+^c|Z zzQe=7fAbMn*~8DqN7;~V)<>cqT;Xb=I`ZP+Of3ogWuHtdAb*9XZ zqxc_i*|6<6*cg2FwL;3V=?PE&++q!E6+X7iM`r!Xdmc{TA1)1h&eSF<8n`Y_pVcV& zP4oI0PnmQY4;_8b=>AwZQAMk6MeNFL6E+=^QaCvECC62z&2byAT)7h$xYAQmYL|=M zWVymKADMzgCth3?;O3)tg6EUl7w3OLpPcLXe<`Nh{7|U+9KEroHG9s-2l_F|e|LRd zBP^&}b~Q6~)-vyXpX-(8pUmI!Q>yR%XW^g}4oLxX=C1w;jEY~1Rb;icTx;iNb1p4V-23(3ibl`$jpo^bOYY4u%X}!*+cht7r8?X6!u!h` z)}9jdWZ16BIK7Ke`SGzF!GPTs{!E&9GyuR8K-%ma0Uq+w9AQ z2_D-Vwg)W@k#O=~_j`9LD_4$O=-e4Rl?8?`1plY`=4i@z9c#GtbRmzV)9yVC8z*OP zU#w^ml-R&B`P>?j3WLAXd|eLT-Bfm9nZwC1Kjiog-v5>U==1H;vdqsxHH$dsi2qv5 z6eG%5vL>-4`_ZeMUFwQfFE(A(v7E~GlsQV+LR7+Cw3DGP($_^-_T9GopO`I@;tG0R zhc0asWjlK`^hB)4^n0CF&g`NE)vK?h#~xZdeU(wFR{n7zV}+wPrnqg4X!1P1VrkTC z(Ljf@yz#=VIyX~S8|c{ihs>X>nY^Dh-?BZXzh~RgL!1{T=UmvO*kLm#?a1QmzkOuQ zUhK5IcI$-Af+%r2r_OoIx)-j#;pE!XkijTk5;=`yX45~>FP9IQEp$4$DvaBsKz8Ni zJ)E95CgkTX=J*@x-=Z2~H}x_faVRNG^zeVm zd|c=4_Nb2=be_03eYsd6@h4nFYvzUp5!wOsm_iGESs!24*z(+&Z_|W}o3c&ipL^Ub z+Y+$u$lhz%r@x_I2j!ycOBdIHlBZLY96|c>4t+S)4J;8W#?!Ax%PeQg@FD4Pt29oUR8M0HUC51 z(YHO-eE%nA^X&iZ_2sVR9iNoruF94Nf7|`{JTcinFr&M>^M5=4orxO88=3s}Z@GPa z-$qAuCAUWweP!;)cg~yr#eH9;ZJSl#LES};>&kfVYE50XD`I_~&Gn+laFYaIIfb1e zTpVr3J(suD?s&OZR{qM$Ep8L1sL1DRTJg};NMpf-H%5{^SLIetaWdWX@3X*+qn^ep zK2}F|nW{CVm*y6|Rd`94ceNmKqDhr%2U-IYZ}pATtmsuh#+iF5Bu zt856&iG1Io%v^O=HP4c(PO1CS!aFfh5o>l&iYW=$`1<_bPvPlmtL&F2biLXh!^%`@ zqH$Efx>~5s$nM)M({)=+qW(NNHp}IB`4Oe*KUR5M^K>%VlFX^adeiC1ygSR|9TPUp z-&fwL#@oB#f!igYJ%-w06You#re<;2lfji`!Rr_c1Pc??}kc`gqKMwJDm?a zq{07j-wU=G2Xfd7UY}Jhefd`DK}0@@mS|!XpdJ&OT`VIop2Xisdi%EmITBTHe*xYT#*Sn5DOr^R?60sUn{| z<9c}Zhx5(!wcN*ebdzyh=~J$4-vs65{s?Z?T&eV8y)nz;1=088QmmCtzw{kcDgWfM zoH6!>Tg09=%@jU%uNXO#m8Ev<-TgM7Pl@Iq)7`u!ezJym!GgnOTeJFOZ|7wk`mC(q z8@2TB2?g=bJ|7;OaOqlm^zp2WMcf9Lp1c#SuddNn(&aioTd?+8^~#r9w7&j%+VT0? z8li2vpT5V07hUY2owo_3mjtHrskTr-Z5)>m3qdk`_;M{dXZLzZ2?S9DtUz#o+?*LTJ1-z!bdT{l~2+kE@ir)$q7%?>_&J4iS3 z+GLB!=401fFD-m`R@Jke%jswJ@%TrMyGwW5vo;(*v+I7ST0n(L)KXcYSIc&Wyy|%R zMfCHDJ1;do)?7c_uCaH|{Euyt8-ou%Fj5wLIJ@2RXcp%Zmr0o+XD69qWCmqwcmCvt3-NdhYeS-v?@A zpO!BFU@TH&a8!C?=H8Hs)vl3zHr^{&O3iQoVXk~ru=LECfTgBkj;GpYL_GblX>}+g zTbfk(fmOyehq-06{mpy4UKh#je^z{<#N<-RVe9pqrV5G8_L`JuH2I17R{;xwr@p@1 z7kxK3-Sf1HbJt$o;Hgg@zRSLO?pNm)?W?Oylf0OlO+V$`-=Ar^xBcmt9dRy~<1VF| z9W}O&{Q2AE&y$OrB=asFbTRVwcI#4Q>(!{5xmMJhJ49vTzPeKdbDq`ed%t~geOY49 z!DI2c$8NnZKELx=VWD-%363~V>214L+x5Gwi{G(dpk#UUjW({3{YsGciVI>l zyCjX46dy{zbzE%ut!F(dhef|hopD?k)p_aDC6;a1A}T5q_onrh%ogC>meW))->Y`Q zyQ!0;9&!i2U{2zH>%6}7$%-4H-nPN<%RN_rIvVnGPMNN7l335A$Cq*{8=t=Q?G*3d z{V{su4~bh{c7fkF9}%-=4x!9O?nId#ppKRRu*e~8&tzDFuc)>H;3aQ=4j4SqPm*NJPE zwdeG;{vpPZ{1;S~OtGAtvGSLT?BtgPK2BXTY!9Bktgba9;JPjBPQ9s{r1Mw zdh5P-A3STL+U(xG%2vBt@@v;*^=}2QYH#h06MC$2XQOb?yuA5kFOP6amc^Gp`ysOI z#`3!s3-g`dzUDjQWwF+7?XQovvT^a@zjjCjzr6hFoL8+!ZS2LFT@Sx!iuQY_O4P>g zlx$M`p1Czm?cJ{R+E1)qzh#D|9eI`K6sFYSv-sV@-jCN-#74$%`d)MQkq|6 zkEC=YPkgHL<>dW_w<44d-10oIt1wh`;rFR?&P8{egD-x zW%8>QFmF9n>C=_q8k1ul^esRp=HX|S`?3t__Nt|Y%q+!{$KHtt@m@IeFhMG#Rr0aI zK8@oirg!!pkrZ_Jo^r0wCB_+J_`UKj?gvzEBZ`o3D_;tH|N zpHsVYkIOHdZ`94r!ToAOds%JTpR*5(WQ|@feCVN&J7?9O&a9S=#@gpRjNC%?j~{*S z+94D-?{Up;m!q0Jy^DSuu2@`k@#*z_y!DOKFMM!1{C?l>yib{adWYW5tNS&5p-t*4 zEA~xuOwI3>1UI?-E00Tiq4N9L=XQz1+no|lsYE{g)EThJKGH6qOU!!l_1^2c7bMr} z?^F_8V-&-Alu24VTxe>Agp7>egh^K4XEs|cp1SPx&w_XTiWT!$I8V>o5%`A1Wa=qj ztCi;(zX;El-NBnUV=33(=}&emJUG_xUjJdj6vnJ4Hs=5S>|^&cxO9^5^Z&b1WsG6! zo;`jY4wG)%xEtr36sfB1S-ohs{FM3Ivz)_r%G?saqP}G6roSHijV#_Oue~fDhg^7Z zd9A8LM`gJw>y{0=Nz?jQ*iCG`(mR~>?M7vJC2eqd^}#u1B0 zHx`O4{9ad~ezI?;Q|w!}NuRnGzioeC;axMU<3rE3)J(&a$S<#VOD{j#*ni>4?fBJO zH(gxwTvo68?(KWa=GWQuIF>DqD|@x_!VC${T`6rX_BzQ5Wyan{B4HaP9gX)uukOj;tj(XgYn=iSGHs+BX2+C{7u+jCW{foFx|1Ir^02V!5R%r2^3b!~!lWkkpv z_n6tvbI%Af^i4lMdFE%EJiR%aPJY+U)QfIBZO(lYxVe(UYr)fqoK z`SNf1<`a5pg?%#9elKa`E$ro1Vwj_}lX2%CjYTQ{r9@4H63pH1S#sZMy291l6JNXa z#fEPS^gMX31U>w*oj-1IaA&~!Z5`z^s^Vi>BuqdnjI+W|Jy_i>z_a_=ycs)oaX1!y zWG$W)F0LryXI;K`b%<|En%b&aC&U>x$W|^m^=9>+$Vt1IrYse*sYuG^zZJ8ixHtRH z^UL$CZqBe=u>FhRY*X)VkFHIM{>i@I`n0K6>&$hx>=ZW@KRS3?H(7n-gcCKgTXy`L zR2|dVb-vqFBq}Yn`pYHZ*ttxGkHTBRcrV^r8F69y+P{|!n3B5P_AU;8y2`dm*!Wc6 zn@Jis4ti-brP}=e^Ev$q&)fvNuW7B=X|>owvhj~xU#iKn9ch{2I~U!!Q67ILZ1;&HzAJ4v2EJwHKmXQS zEwBGyN^5)QG?6$vooJ4|$)8*grJfaao22rsHC_JJ^aWkVFD};KaqN0J&)tZKAuaj+NslbBON-^2J9v9U$BoY!fsO8JvyUbQ+a>8@Q%=gnp z_RVT4pVZnUFUoJ>`SGRg^OA1ax;v4I4hy~?TikY~`qjnb%;%5nKe6+yk=);Vg1l1S zO2V{0PF#BR$!4eb2|hil%P(aZ&e+g=?c=0Sjy|UcR;DRt+Dlt)dV@XNkFILXWb8k= zreFPFu~C2fI*CKmUKeG3*{jL8Y^tD}01KbWoF(fIuyHPCUe2Ouc4F^#WhsTXr;YCz zKT+N1Ey{dmbBKD4rQjDM=R?Vp^w%6Rp7rs1+cZ608|f_{66WWpRj$ZVUoEqR&8;h3 zEu_D<{oLw>t*(zN#B|%AFI!mkuH)4kSCvImS6`d(vZST||BpjV4nChfl|RiAKB{7^ z>Qh$P->V?g$I+gC|JBdWVslH@-}e^&CiH)&$h6DJ`=(uUoE^VsyU9nc5BlGg%y%W! z{CL`QkW+a7F-bn<>dI#3fd87adgL^|>1p}3_$93kQnxS&MIm?VzWut{;bT)M}sc@FsRuWW_cs=)UnI!>-aaN&6BKWp5eG_ zyAJEN@_iFh-%ZxrwSvu^$KYN|XGmAnjs>iH)b|+(Zp&+5Xv>`J)9D_p68z?y(Zw4q z+RD-@{^b*ARVa$Y|8xFxuV7D;yz60^+P0f4Wm&BvQg3A!*;p^LCz%euG;u-!ezU>DYH^2NDDAIR#T6bSp#D0gm?5ar{ zYc$QWk`HbAXczl#r-9W%(7gO=!!KGqe>WbNV>_n3Z$~71txL?|!(r}fHP4I>H)uS# zobh4Xv#Xz$ZoA7QnjyWISG3pb!N4E7cYekEuMK^gn z&hZ@0yehSpWk&D+{Wm%kPnWgkSXOwqd{i*}sJV5bd69QZpv@2W3!A?r&9ixNd9CTO z2MtGGvfjBBFw=Mbs<2NvSG2?5dp>HKc;d%>t-Qp)0R}lg+@{=X;X5UCahc09rQJ13 z$F+BHRGku9m{Ry)pWUXPi*~jgOpHA}J*nl*Yf0vA6k?uQabo<#noT9bhATYs@roTA&Di4lF60@ejcCt z=RAA(WQQEbZnv@x?yJ5{h4=!xB`+45tiE86CHGLCpWf{Fsi|SfcxIB4_d26J|O}*9`g;LjIcWvf|I*Cd#uRMVawyxC*8r9*#~ z`L>U@1onIU|9D8zfhAJi;*OxMw9*U<8Hq!S&o|Dz8Th!q%9`VT{iijWT+f7*nfX6X z%(|ZS_(_@$k7DM+$Jc*-(Vx$hGOb_-&oNEz2v6fZPfaf>>pO1<=}?GhY~j4L;&YLI zk&SKnwFPb=O%@tm0zsP=XgFPtWpTZDI?mYN@zh%J zp4UMKp8d^kEE0Jy%DKGQnI&dwU#df~^&-m?2`^vqR80JE`Q=uR&=oI>r0Qn<+0b>^ zf-yX@=iG_spWjbQHaOn-Zfv=o!&E1a^=I8tu?M6X1(6k{G{i%3;2n{Ma%4gu~lU7Up~( zd&NSvRk=*MdjfXNk@eC!R{Cas%+mnXErEPnwXcRPmE)dy!c9^kMeyZL*#aenW=1|n z>)?Y6-%jK*au-|Ed_wJVj@xne&o4_?-CZ;Dx31a?k+fJY%~S8y)WSSxB(QMn^sR3* zGi~zrzy92Z!$xSvscD;IZgua`=nILu-nS+CA%|r}l6Hhmoj@DM#aMgISNtcsj|)89 z`L`|p^<&496ze3L>hJHa2E1U7+}z3&@q2Ot*BqxqN#Tccdc|IQnDQuP_uQ|k>3w&Z zFLlw=+Kk>eNurr&o$hU@?d3#KJ9S7a6&qXs(|8*kV)kvFogVUA5jG zU&LdS5`H^%IaVpoz`(==T$R(!GDGKRIW7b?bP}b~d`m@86W%=#T&B z&i?*?+nU5r_jmqmi#%ra%<|{j+tTdk&;GBw=OXbZZTGgf_x7g$-dVY5T7T5ki5J6` zEBXp-uzde{g20_t@p+~d-^4DhxT%+z9)9Iay5PdH-R$=_Bp;W%ly|1&Rff!px!M}*{1dB zAD+*5G5NE#+>D+_sy{hW)W!DQVOr6xzfYpdW`gR|(}m5c%~2}L%#Ub$UDF79>?|WV zIfG|9^L?3!)KFfBYtvnhd^#&q>743*GvDsXjo)jnj8zWrUGz}vXJ`L{*!2%GO!t`A z+?x6SYr!FN6{({wkr zM6+CF>Hp6UwH`367r(kYqNe_Wx#!!T!H{)vPbNJ~{3^HSQTEq=^>*ILpV}vyOu6!S zmuKv{@J{u&KQ}MjDgNDb`o<~u)>Zdi2`xUcs;zdLE$1s2R#xxg?wUd z-nTganN$5lhs&meVz+%i*riX>)V{S&TQ#EgP-my+*b(oC-hXxBGe=yP;wouuo?@r}x=QVTvJB1C)1) zA5p90+qYPAIWYX1e3(8}WzdUu#){rSp!VcJ@8L(!HyzXe|PDl6PP z$QR_QXnV=HY0`$HlUZdSn*Cm4xgm8%O&i;bZ#MghjmsSbgKYw1+)l_Oy=&XI-mnJhEIIdEtS-}*$rRRVG)8%L*ydXB@P7gd)!I~JA;zdzQqa=vJ5yT`mQ4l+TL-8S)W ztZ$dvd?-@>yU5Jet9ul^A0JxF`Q|3GdbDDgY2^a(2|2Cv=PX#cf+tn!I0?8Tg?w1Q5j zGF#uzowi6jdW(lxVW80Bw!e@6+%cS!JSmwsn$Pc|)9y|M(Q5gu<@XwoPnq7}ZG7{B zLh@CSp)uOOugn^lMgvnB+{0z_PgNqil0qrL2@hqXI%l8UNiejb=jS zvh$?Ni@zPyS>E2W*!SHWxp^#8pMGgzH@jL~_2=j_o#pKuHg$ge()s(#wVr)ZkO~*K zv|VxRTB;xa$GLWyMO7CbE}eMUdCfuJ#yN5`{FltS+-xvUq`2xp^^#LB9rJcCv9x`l zyyV17M@^+jKmJu8O6Ff?4x6)Sj+~UGtp=m-)H!lbHu!}2@xMQIqNpmx(st7vxk$hM zOaXtDw11I){1>xQc(hKxocQ$1i%AbVuAb0Ye%$bk!=^cM$Bmo?*elX3ZI@kSJYQ7h zvz%FbTSdC1t=dP%Ghl6X5^7b417n@t!*8S^#zG;r!ommIw*%tWmdw!ib@7b3H zwP}{NF5QQdXPa5tZg_HK`y9C$-T`3~qx|@9{9Lzsj@*X&m`iiyoZdUXog?>Q#wVeI z%3r)fNps5l_?t>*J^9k09QXM7mk%rUr(4>3w0vNB`lVs6lc=RFNB)5+muvm_UnOfe zE}DCpndeFG#LLYEHzG1zENxF5^jBWaexm-@yvxjG3GeFt_(6&LGV?JJ<>l-;ZpTi% zT)6e~D~q6t(@9UhEJ)Ojeg384x_X!&zm=(d#)h=(Z~vwp{qTR^lz(%L`{Zgbn)=<} zanE&rTtV;kx!cd4b_ z$sgOhLnf19CHwkIYrj5re*Q_o<*Ph;ES5(&ZNCS+oz43bBK|&DufBcm&9k#Ug)bhJs?NNyP^wE9N9(`#OJ5u~rfNukm^Q#GL7&D>r@0Dww3@eN_FSP9&p9&3o;m z{y)yF5${<#xr%4=e6P8_{mXWobF^jOH@Q{PbxpJC>VseSgWcww3E&FZq|)lPw?l`K znM+TlYU25$O___%E52{ZX_X}!!LI-C90vgAy; z%Rd7vCh>-v)g5KdTaaw_FxA3W+P6Y8A=AM?bW%Vk^Yycq*B)*P=sP@D=Wkny8dtcC zw2tVjvb_z3ioPejjlCylKFG1Svv%>;^S&v8I)e8Eo0e~$%xTMg^bBZtKA~d5G6uF2 z*Ei2f7TdSOb)JvTtRKPR@_ve&e45tBs^|Bo<~g#9h^+7_W756ImaB4hg@$>s(esRb z%S@&2hMY3|rV`q6c8hz*buBrkeAiT;bt@XzT-Oyvw4O&3jPQ=D0@>-TJX1afd5_tzLT=oA72UC{8QCBV)e0&{|<%Ux9WS? zz2xko%W|(`zHG3NJ9+%sa-(nWs@X(sOgwkx&$>Fvl|}m3qw|3}VV}!6ZVFy5JX1J- z;i;?F3fP=koo!teq*yo(Ta^aRvYBd`rqgkXZCeail(Bc;-Iu{h|D-O+GrcJmV-6Hw z<=hkZC|i8Pp~tgN?a}%6;->iO*&eYi+tSULpG27cwu-g>+R3vb^4W3C$$5(QDzg$r z3-`=>5Z>W{E2;Q`ol|Z&*w=Zks?1yBrUA?I%(Hr z&VC&qJwtQ9jla@Q`1@J7DOp9ZroY(HUij$Xgrg4|TeVltc)0no#qp}CJTv!K{Cd4D zX4Bd}(=)uCk7h26T0Y_B)!>iPk3GDC(=MkoSQ`m*>~3rR>fI&czUrGm6q{JoM(5Q# zT~l=r*y#O`Szwc-R?~)zOqVdwQfODg~$ctbF2AsGI&%sXNs;+ z?SXn*IB#!C#I`-3f3~UYQ~&ahMgP?v4vW`9JoY6ToBkfs zUU%Xf_hzZkX-Pk9jpIa{mV6A^P@%>Zdhv-~mx0>O=fVsi z=W2%oi=jGaa!|r0kB*QxbA>r~Dpx5AvAfA^Hq`2L%ebEP*yQb}3CS~m7r%)NvHZ39 z+~ZOgF<&;up46=Z-FNdQ@;-jmm-!%C`^a@g#(k3{ZNHp!JO2BhaK70mlj$WTGH&mE zjvap1|87@TY^wZ(jj|J@m_w~*wOg3wN>rml|FHg9^I|_Y*PeU6 zxr~aAdPOrPAMszg&NArl1J;V4$u6k}%)9DB*m5?1dFtYK&n0GqOpQX1O6f53+?c)-A2$1d zWq$V>xj%`sRtkQub8<(i%tX&BPXTWm_mnd-8to@!CK|gx@qFLGb3b+RNkK`u%x4`s z%TLHzDIGSsQSP4dLw9d|-wE0HZ3_*HWn^z}3f7d~*Hgm!^V^(1OTT2-JBiQ!`e*9V zKcZ!;Q*&-^I=b|!`ibSs=hsC|crov9nX-9?s-kOeI3vfqE!oG@S~m;NFZjQC{@*nR z{)-t+b<0t+JgU3oht&XuZm}7o@_3WcRlsX<7nyEWh=Twc^+j4?eWj` zu?n_`IRCinV~&dBX8-)(5kmT(#P#ZJ4@@hy@vD@0=6Go%-xlq@DbK>#WLhp)T+G&g ze|nnqUjB-d3*QCVYzuxK+gqez_v@tbrB5FhzZSagE3GEJ^zu{IejC;aymJ&g%*#3C z3qsvvS1&qJ|8w^Ba^V?_`I9CDFX1aC+mz^3)ePt>=bJCwb4gVy28VG&ak**13U_o|6Cdb0P;-I*tyL=z+a2Do;)e@#;P zbmha{XDQ3iiPtb4?VeF0wddvQjmL_5vrm72@$77$OSsDK6R+o)RVhk!znb?Yd*Zvw zr>WDccd7sUawXWGtHl4?ZIe>}JDK}S&;Q={X{yh6pWWXhcB$X}8j-}tv*?QL*B5KN z?|xpLZ8yo~`=6()f|qx_tNfY1tpDB5*ZMrmmQ_zG?Oa`b=*glhw#D1)YPnv_+vy*7 zv-ce*Bruh(+9n!IedpO_}neKjvdzFF(g)HLanE@#7b$85}88UBCy-Y3id zh(1~VXWj?@{FQIqo0x)p1^@k8adVr@K)yJRme>%e~(#)k{t(W~&?w>{W0Jn)77EBF`d`6;q1t{k^~2 zJ>6bO=|*^>MX6}%(Q`V}6&=c#$8J5dOHax3-a2)=zjZ5iY%vS}_+MI}O#F}QBKu~) zx?jEeuXN_wc%PLmzr(0_!Mp8ga-iz1j>Qb~PfgbIEpB$;{#LLsxqnmpx1-Avjm~w$6v^4yDQEr+Kb*nKfx~-^>@+_Wv!<=$*dt z$_bS%heDL18=eZtOqO_b(Otgv8I$|e6=6(QW{TEuT)M)!;!1MpEMd>B>;L~a@Lt{V zcIcsLEw#taG*8|zy;N%N3m?^16j1}TU)A6t~8_vh8wH`2A8cXwBRd?n=aYO9BXFO$zco_>bCnWo)y7t}od(mQ?k c#)Nq3rrO`XDmJwGt=?^}bmKqw?h;d30Fb1-TL1t6 literal 21844 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 + + + + + + + name + Dracula + settings + + + settings + + background + #282a36 + caret + #f8f8f0 + foreground + #f8f8f2 + invisibles + #3B3A32 + lineHighlight + #44475a + selection + #44475a + findHighlight + #effb7b + findHighlightForeground + #000000 + selectionBorder + #222218 + activeGuide + #9D550FB0 + bracketsForeground + #F8F8F2A5 + bracketsOptions + underline + bracketContentsForeground + #F8F8F2A5 + bracketContentsOptions + underline + tagsOptions + stippled_underline + + + + name + Comment + scope + comment + settings + + foreground + #6272a4 + fontStyle + + + + + name + String + scope + string + settings + + foreground + #f1fa8c + + + + name + Number + scope + constant.numeric + settings + + foreground + #bd93f9 + + + + name + Built-in constant + scope + constant.language + settings + + foreground + #bd93f9 + + + + name + User-defined constant + scope + constant.character, constant.other + settings + + foreground + #bd93f9 + + + + name + Variable + scope + variable + settings + + fontStyle + + + + + name + Ruby's @variable + scope + variable.other.readwrite.instance + settings + + fontStyle + + foreground + #ffb86c + + + + name + String interpolation + scope + constant.character.escaped, constant.character.escape, string source, string source.ruby + settings + + fontStyle + + foreground + #ff79c6 + + + + name + Ruby Regexp + scope + source.ruby string.regexp.classic.ruby,source.ruby string.regexp.mod-r.ruby + settings + + fontStyle + + foreground + #ff5555 + + + + name + Keyword + scope + keyword + settings + + foreground + #ff79c6 + + + + name + Storage + scope + storage + settings + + fontStyle + + foreground + #ff79c6 + + + + name + Storage type + scope + storage.type + settings + + fontStyle + italic + foreground + #8be9fd + + + + name + Storage Type Namespace + scope + storage.type.namespace + settings + + fontStyle + italic + foreground + #8be9fd + + + + name + Storage Type Class + scope + storage.type.class + settings + + fontStyle + italic + foreground + #ff79c6 + + + + name + Class name + scope + entity.name.class + settings + + fontStyle + underline + foreground + #8be9fd + + + + name + Meta Path + scope + meta.path + settings + + fontStyle + underline + foreground + #66d9ef + + + + name + Inherited class + scope + entity.other.inherited-class + settings + + fontStyle + italic underline + foreground + #8be9fd + + + + name + Function name + scope + entity.name.function + settings + + fontStyle + + foreground + #50fa7b + + + + name + Function argument + scope + variable.parameter + settings + + fontStyle + italic + foreground + #ffb86c + + + + name + Tag name + scope + entity.name.tag + settings + + fontStyle + + foreground + #ff79c6 + + + + name + Tag attribute + scope + entity.other.attribute-name + settings + + fontStyle + + foreground + #50fa7b + + + + name + Library function + scope + support.function + settings + + fontStyle + + foreground + #8be9fd + + + + name + Library constant + scope + support.constant + settings + + fontStyle + + foreground + #6be5fd + + + + name + Library class/type + scope + support.type, support.class + settings + + fontStyle + italic + foreground + #66d9ef + + + + name + Library variable + scope + support.other.variable + settings + + fontStyle + + + + + name + Support Other Namespace + scope + support.other.namespace + settings + + fontStyle + italic + foreground + #66d9ef + + + + name + Invalid + scope + invalid + settings + + background + #ff79c6 + fontStyle + + foreground + #F8F8F0 + + + + name + Invalid deprecated + scope + invalid.deprecated + settings + + background + #bd93f9 + foreground + #F8F8F0 + + + + name + JSON String + scope + meta.structure.dictionary.json string.quoted.double.json + settings + + foreground + #CFCFC2 + + + + name + diff.header + scope + meta.diff, meta.diff.header + settings + + foreground + #6272a4 + + + + name + diff.deleted + scope + markup.deleted + settings + + foreground + #ff79c6 + + + + name + diff.inserted + scope + markup.inserted + settings + + foreground + #50fa7b + + + + name + diff.changed + scope + markup.changed + settings + + foreground + #E6DB74 + + + + scope + constant.numeric.line-number.find-in-files - match + settings + + foreground + #bd93f9 + + + + scope + entity.name.filename + settings + + foreground + #E6DB74 + + + + scope + message.error + settings + + foreground + #F83333 + + + + name + JSON Punctuation + scope + punctuation.definition.string.begin.json - meta.structure.dictionary.value.json, punctuation.definition.string.end.json - meta.structure.dictionary.value.json + settings + + foreground + #EEEEEE + + + + name + JSON Structure + scope + meta.structure.dictionary.json string.quoted.double.json + settings + + foreground + #8be9fd + + + + name + JSON String + scope + meta.structure.dictionary.value.json string.quoted.double.json + settings + + foreground + #f1fa8c + + + + name + JSON: 6 deep + scope + meta meta meta meta meta meta meta.structure.dictionary.value string + settings + + foreground + #50fa7b + + + + name + JSON: 5 deep + scope + meta meta meta meta meta meta.structure.dictionary.value string + settings + + foreground + #ffb86c + + + + name + JSON: 4 deep + scope + meta meta meta meta meta.structure.dictionary.value string + settings + + foreground + #ff79c6 + + + + name + JSON: 3 deep + scope + meta meta meta meta.structure.dictionary.value string + settings + + foreground + #bd93f9 + + + + name + JSON: 2 deep + scope + meta meta meta.structure.dictionary.value string + settings + + foreground + #50fa7b + + + + name + JSON: 1 deep + scope + meta meta.structure.dictionary.value string + settings + + foreground + #ffb86c + + + + + + name + Markup: strike + scope + markup.strike + settings + + fontStyle + italic + foreground + #FFB86C + + + + name + Markup: bold + scope + markup.bold + settings + + fontStyle + bold + foreground + #FFB86C + + + + name + Markup: italic + scope + markup.italic + settings + + fontStyle + italic + foreground + #FFB86C + + + + name + Markdown: heading + scope + markup.heading + settings + + foreground + #8BE9FD + + + + name + Markdown: List Items Punctuation + scope + punctuation.definition.list_item.markdown + settings + + foreground + #FF79C6 + + + + name + Markdown: Blockquote + scope + markup.quote + settings + + fontStyle + italic + foreground + #6272A4 + + + + name + Markdown: Blockquote Punctuation + scope + punctuation.definition.blockquote.markdown + settings + + fontStyle + italic + background + #6272A4 + foreground + #6272A4 + + + + name + Markdown: Separator + scope + meta.separator + settings + + foreground + #6272A4 + + + + name + Markup: raw inline + scope + text.html.markdown markup.raw.inline + settings + + foreground + #50FA7B + + + + name + Markup: underline + scope + markup.underline + settings + + fontStyle + underline + foreground + #BD93F9 + + + + name + Markup: Raw block + scope + markup.raw.block + settings + + foreground + #CFCFC2 + + + + name + Markdown: Raw Block fenced source + scope + markup.raw.block.fenced.markdown source + settings + + foreground + #F8F8F2 + + + + name + Markdown: Fenced Bode Block + scope + punctuation.definition.fenced.markdown, variable.language.fenced.markdown + settings + + fontStyle + italic + foreground + #6272A4 + + + + name + Markdown: Fenced Language + scope + variable.language.fenced.markdown + settings + + fontStyle + italic + foreground + #6272A4 + + + + name + Punctuation Accessor + scope + punctuation.accessor + settings + + foreground + #FF79C6 + + + + name + Meta Function Return Type + scope + meta.function.return-type + settings + + foreground + #FF79C6 + + + + name + Punctuation Section Block Begin + scope + punctuation.section.block.begin + settings + + foreground + #ffffff + + + + name + Punctuation Section Block End + scope + punctuation.section.block.end + settings + + foreground + #ffffff + + + + name + Punctuation Section Embedded Begin + scope + punctuation.section.embedded.begin + settings + + foreground + #ff79c6 + + + + name + Punctuation Section Embedded End + scope + punctuation.section.embedded.end + settings + + foreground + #ff79c6 + + + + name + Punctuation Separator Namespace + scope + punctuation.separator.namespace + settings + + foreground + #ff79c6 + + + + name + Variable Function + scope + variable.function + settings + + foreground + #50fa7b + + + + name + Variable Other + scope + variable.other + settings + + foreground + #ffffff + + + + name + Variable Language + scope + variable.language + settings + + foreground + #bd93f9 + + + + name + Entity Name Module Ruby + scope + entity.name.module.ruby + settings + + foreground + #8be9fd + + + + name + Entity Name Constant Ruby + scope + entity.name.constant.ruby + settings + + foreground + #bd93f9 + + + + name + Support Function Builtin Ruby + scope + support.function.builtin.ruby + settings + + foreground + #ffffff + + + + name + Storage Type Namespace CS + scope + storage.type.namespace.cs + settings + + foreground + #ff79c6 + + + + name + Entity Name Namespace CS + scope + entity.name.namespace.cs + settings + + foreground + #8be9fd + + + + uuid + 83091B89-765E-4F0D-9275-0EC6CB084126 + colorSpaceName + sRGB + semanticClass + theme.dracula + author + Zeno Rocha + + From 1dbd8874c0bf19757f79f026c47692bd6d9014b4 Mon Sep 17 00:00:00 2001 From: Peng Guanwen Date: Wed, 16 Jan 2019 17:09:23 +0800 Subject: [PATCH 12/74] derive Debug for HeaderIndex --- components/rendering/src/markdown.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/components/rendering/src/markdown.rs b/components/rendering/src/markdown.rs index f01eb29a..6279e733 100644 --- a/components/rendering/src/markdown.rs +++ b/components/rendering/src/markdown.rs @@ -28,6 +28,7 @@ pub struct Rendered { pub toc: Vec
, } +#[derive(Debug)] struct HeaderIndex { start: usize, end: usize, From 69fb399726f5947958eeef554d00b2b812e44e10 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Thu, 10 Jan 2019 17:17:07 +0100 Subject: [PATCH 13/74] Add failing shortcode body split test --- components/rendering/tests/markdown.rs | 27 ++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/components/rendering/tests/markdown.rs b/components/rendering/tests/markdown.rs index 6149e4f5..6f189ed8 100644 --- a/components/rendering/tests/markdown.rs +++ b/components/rendering/tests/markdown.rs @@ -748,3 +748,30 @@ fn doesnt_try_to_highlight_content_from_shortcode() { let res = render_content(markdown_string, &context).unwrap(); assert_eq!(res.body, expected); } + +// https://github.com/Keats/tera/issues/373 +#[test] +fn can_split_lines_shortcode_body() { + let permalinks_ctx = HashMap::new(); + let mut tera = Tera::default(); + tera.extend(&ZOLA_TERA).unwrap(); + + let shortcode = r#"{{ body | split(pat="\n") }}"#; + + let markdown_string = r#" +{% alert() %} +multi +ple +lines +{% end %} + "#; + + let expected = r#"

["multi", "ple", "lines"]

"#; + + tera.add_raw_template(&format!("shortcodes/{}.html", "alert"), shortcode).unwrap(); + let config = Config::default(); + let context = RenderContext::new(&tera, &config, "", &permalinks_ctx, InsertAnchor::None); + + let res = render_content(markdown_string, &context).unwrap(); + assert_eq!(res.body, expected); +} From 5caf24f06c9eb39d8d73b18c5a59b54b39c88f99 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Fri, 11 Jan 2019 20:29:46 +0100 Subject: [PATCH 14/74] Remove error-chain Closes #576 --- Cargo.lock | 3 +- components/config/Cargo.toml | 1 + components/config/src/config.rs | 24 ++--- components/config/src/lib.rs | 8 +- components/config/src/theme.rs | 20 ++-- components/errors/Cargo.toml | 1 - components/errors/src/lib.rs | 103 ++++++++++++++++++--- components/front_matter/src/lib.rs | 10 +- components/imageproc/src/lib.rs | 4 +- components/library/src/content/page.rs | 6 +- components/library/src/content/section.rs | 6 +- components/library/src/pagination/mod.rs | 4 +- components/library/src/taxonomies/mod.rs | 10 +- components/rendering/src/shortcode.rs | 4 +- components/rendering/tests/markdown.rs | 2 +- components/site/src/lib.rs | 10 +- components/templates/Cargo.toml | 1 - components/templates/src/global_fns/mod.rs | 2 - components/templates/src/lib.rs | 4 +- components/utils/src/fs.rs | 22 ++++- docs/templates/page.html | 1 + src/cmd/serve.rs | 10 +- src/console.rs | 8 +- 23 files changed, 176 insertions(+), 88 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index df0e9528..6f7a0032 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -342,6 +342,7 @@ dependencies = [ "serde_derive 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", "syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "utils 0.1.0", ] [[package]] @@ -616,7 +617,6 @@ dependencies = [ name = "errors" version = "0.1.0" dependencies = [ - "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "image 0.20.1 (registry+https://github.com/rust-lang/crates.io-index)", "syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2229,7 +2229,6 @@ dependencies = [ "base64 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "config 0.1.0", "csv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "errors 0.1.0", "imageproc 0.1.0", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/components/config/Cargo.toml b/components/config/Cargo.toml index ad0f9297..a8090aa6 100644 --- a/components/config/Cargo.toml +++ b/components/config/Cargo.toml @@ -13,3 +13,4 @@ lazy_static = "1" syntect = "3" errors = { path = "../errors" } +utils = { path = "../utils" } diff --git a/components/config/src/config.rs b/components/config/src/config.rs index 57c8284f..4c02086c 100644 --- a/components/config/src/config.rs +++ b/components/config/src/config.rs @@ -1,6 +1,4 @@ use std::collections::HashMap; -use std::fs::File; -use std::io::prelude::*; use std::path::{Path, PathBuf}; use chrono::Utc; @@ -9,9 +7,10 @@ use syntect::parsing::{SyntaxSet, SyntaxSetBuilder}; use toml; use toml::Value as Toml; -use errors::{Result, ResultExt}; +use errors::Result; use highlighting::THEME_SET; use theme::Theme; +use utils::fs::read_file_with_error; // We want a default base url for tests static DEFAULT_BASE_URL: &'static str = "http://a-website.com"; @@ -66,7 +65,13 @@ impl Taxonomy { impl Default for Taxonomy { fn default() -> Taxonomy { - Taxonomy { name: String::new(), paginate_by: None, paginate_path: None, rss: false, lang: None } + Taxonomy { + name: String::new(), + paginate_by: None, + paginate_path: None, + rss: false, + lang: None, + } } } @@ -172,15 +177,12 @@ impl Config { /// Parses a config file from the given path pub fn from_file>(path: P) -> Result { - let mut content = String::new(); let path = path.as_ref(); let file_name = path.file_name().unwrap(); - File::open(path) - .chain_err(|| { - format!("No `{:?}` file found. Are you in the right directory?", file_name) - })? - .read_to_string(&mut content)?; - + let content = read_file_with_error( + path, + &format!("No `{:?}` file found. Are you in the right directory?", file_name), + )?; Config::parse(&content) } diff --git a/components/config/src/lib.rs b/components/config/src/lib.rs index b7a4ebcb..3c7443a9 100644 --- a/components/config/src/lib.rs +++ b/components/config/src/lib.rs @@ -1,14 +1,16 @@ #[macro_use] extern crate serde_derive; -extern crate toml; -#[macro_use] -extern crate errors; extern crate chrono; extern crate globset; +extern crate toml; #[macro_use] extern crate lazy_static; extern crate syntect; +#[macro_use] +extern crate errors; +extern crate utils; + mod config; pub mod highlighting; mod theme; diff --git a/components/config/src/theme.rs b/components/config/src/theme.rs index 1bce6bf9..d6bd40ca 100644 --- a/components/config/src/theme.rs +++ b/components/config/src/theme.rs @@ -1,11 +1,10 @@ use std::collections::HashMap; -use std::fs::File; -use std::io::prelude::*; use std::path::PathBuf; use toml::Value as Toml; -use errors::{Result, ResultExt}; +use errors::Result; +use utils::fs::read_file_with_error; /// Holds the data from a `theme.toml` file. /// There are other fields than `extra` in it but Zola @@ -40,15 +39,12 @@ impl Theme { /// Parses a theme file from the given path pub fn from_file(path: &PathBuf) -> Result { - let mut content = String::new(); - File::open(path) - .chain_err(|| { - "No `theme.toml` file found. \ - Is the `theme` defined in your `config.toml present in the `themes` directory \ - and does it have a `theme.toml` inside?" - })? - .read_to_string(&mut content)?; - + let content = read_file_with_error( + path, + "No `theme.toml` file found. \ + Is the `theme` defined in your `config.toml present in the `themes` directory \ + and does it have a `theme.toml` inside?", + )?; Theme::parse(&content) } } diff --git a/components/errors/Cargo.toml b/components/errors/Cargo.toml index eacf9168..c065109d 100644 --- a/components/errors/Cargo.toml +++ b/components/errors/Cargo.toml @@ -4,7 +4,6 @@ version = "0.1.0" authors = ["Vincent Prouillet "] [dependencies] -error-chain = "0.12" tera = "0.11" toml = "0.4" image = "0.20" diff --git a/components/errors/src/lib.rs b/components/errors/src/lib.rs index 0d0a32dc..5c2c2dab 100755 --- a/components/errors/src/lib.rs +++ b/components/errors/src/lib.rs @@ -1,27 +1,102 @@ -#![allow(unused_doc_comments)] - -#[macro_use] -extern crate error_chain; extern crate image; extern crate syntect; extern crate tera; extern crate toml; -error_chain! { - errors {} +use std::convert::Into; +use std::error::Error as StdError; +use std::fmt; - links { - Tera(tera::Error, tera::ErrorKind); - } +#[derive(Debug)] +pub enum ErrorKind { + Msg(String), + Tera(tera::Error), + Io(::std::io::Error), + Toml(toml::de::Error), + Image(image::ImageError), + Syntect(syntect::LoadingError), +} - foreign_links { - Io(::std::io::Error); - Toml(toml::de::Error); - Image(image::ImageError); - Syntect(syntect::LoadingError); +/// The Error type +#[derive(Debug)] +pub struct Error { + /// Kind of error + pub kind: ErrorKind, + pub source: Option>, +} +unsafe impl Sync for Error {} +unsafe impl Send for Error {} + +impl StdError for Error { + fn source(&self) -> Option<&(dyn StdError + 'static)> { + self.source.as_ref().map(|c| &**c) } } +impl fmt::Display for Error { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match self.kind { + ErrorKind::Msg(ref message) => write!(f, "{}", message), + ErrorKind::Tera(ref e) => write!(f, "{}", e), + ErrorKind::Io(ref e) => write!(f, "{}", e), + ErrorKind::Toml(ref e) => write!(f, "{}", e), + ErrorKind::Image(ref e) => write!(f, "{}", e), + ErrorKind::Syntect(ref e) => write!(f, "{}", e), + } + } +} + +impl Error { + /// Creates generic error + pub fn msg(value: impl ToString) -> Self { + Self { kind: ErrorKind::Msg(value.to_string()), source: None } + } + + /// Creates generic error with a cause + pub fn chain(value: impl ToString, source: impl Into>) -> Self { + Self { kind: ErrorKind::Msg(value.to_string()), source: Some(source.into()) } + } +} + + +impl From<&str> for Error { + fn from(e: &str) -> Self { + Self::msg(e) + } +} +impl From for Error { + fn from(e: String) -> Self { + Self::msg(e) + } +} +impl From for Error { + fn from(e: toml::de::Error) -> Self { + Self { kind: ErrorKind::Toml(e), source: None } + } +} +impl From for Error { + fn from(e: syntect::LoadingError) -> Self { + Self { kind: ErrorKind::Syntect(e), source: None } + } +} +impl From for Error { + fn from(e: tera::Error) -> Self { + Self { kind: ErrorKind::Tera(e), source: None } + } +} +impl From<::std::io::Error> for Error { + fn from(e: ::std::io::Error) -> Self { + Self { kind: ErrorKind::Io(e), source: None } + } +} +impl From for Error { + fn from(e: image::ImageError) -> Self { + Self { kind: ErrorKind::Image(e), source: None } + } +} +/// Convenient wrapper around std::Result. +pub type Result = ::std::result::Result; + // So we can use bail! in all other crates #[macro_export] macro_rules! bail { diff --git a/components/front_matter/src/lib.rs b/components/front_matter/src/lib.rs index 986399c4..c0ca8b70 100644 --- a/components/front_matter/src/lib.rs +++ b/components/front_matter/src/lib.rs @@ -12,7 +12,7 @@ extern crate toml; extern crate errors; extern crate utils; -use errors::{Result, ResultExt}; +use errors::{Result, Error}; use regex::Regex; use std::path::Path; @@ -71,8 +71,8 @@ pub fn split_section_content( content: &str, ) -> Result<(SectionFrontMatter, String)> { let (front_matter, content) = split_content(file_path, content)?; - let meta = SectionFrontMatter::parse(&front_matter).chain_err(|| { - format!("Error when parsing front matter of section `{}`", file_path.to_string_lossy()) + let meta = SectionFrontMatter::parse(&front_matter).map_err(|e| { + Error::chain(format!("Error when parsing front matter of section `{}`", file_path.to_string_lossy()), e) })?; Ok((meta, content)) } @@ -81,8 +81,8 @@ pub fn split_section_content( /// Returns a parsed `PageFrontMatter` and the rest of the content pub fn split_page_content(file_path: &Path, content: &str) -> Result<(PageFrontMatter, String)> { let (front_matter, content) = split_content(file_path, content)?; - let meta = PageFrontMatter::parse(&front_matter).chain_err(|| { - format!("Error when parsing front matter of page `{}`", file_path.to_string_lossy()) + let meta = PageFrontMatter::parse(&front_matter).map_err(|e| { + Error::chain(format!("Error when parsing front matter of page `{}`", file_path.to_string_lossy()), e) })?; Ok((meta, content)) } diff --git a/components/imageproc/src/lib.rs b/components/imageproc/src/lib.rs index e1951845..4ebdbea0 100644 --- a/components/imageproc/src/lib.rs +++ b/components/imageproc/src/lib.rs @@ -20,7 +20,7 @@ use image::{FilterType, GenericImageView}; use rayon::prelude::*; use regex::Regex; -use errors::{Result, ResultExt}; +use errors::{Result, Error}; use utils::fs as ufs; static RESIZED_SUBDIR: &'static str = "processed_images"; @@ -456,7 +456,7 @@ impl Processor { let target = self.resized_path.join(Self::op_filename(*hash, op.collision_id, op.format)); op.perform(&self.content_path, &target) - .chain_err(|| format!("Failed to process image: {}", op.source)) + .map_err(|e| Error::chain(format!("Failed to process image: {}", op.source), e)) }) .collect::>() } diff --git a/components/library/src/content/page.rs b/components/library/src/content/page.rs index 5736e174..9a800148 100644 --- a/components/library/src/content/page.rs +++ b/components/library/src/content/page.rs @@ -8,7 +8,7 @@ use slug::slugify; use tera::{Context as TeraContext, Tera}; use config::Config; -use errors::{Result, ResultExt}; +use errors::{Result, Error}; use front_matter::{split_page_content, InsertAnchor, PageFrontMatter}; use library::Library; use rendering::{render_content, Header, RenderContext}; @@ -234,7 +234,7 @@ impl Page { context.tera_context.insert("page", &SerializingPage::from_page_basic(self, None)); let res = render_content(&self.raw_content, &context) - .chain_err(|| format!("Failed to render content of {}", self.file.path.display()))?; + .map_err(|e| Error::chain(format!("Failed to render content of {}", self.file.path.display()), e))?; self.summary = res.summary_len.map(|l| res.body[0..l].to_owned()); self.content = res.body; @@ -258,7 +258,7 @@ impl Page { context.insert("lang", &self.lang); render_template(&tpl_name, tera, &context, &config.theme) - .chain_err(|| format!("Failed to render page '{}'", self.file.path.display())) + .map_err(|e| Error::chain(format!("Failed to render page '{}'", self.file.path.display()), e)) } /// Creates a vectors of asset URLs. diff --git a/components/library/src/content/section.rs b/components/library/src/content/section.rs index 041b9ac0..cb2d940a 100644 --- a/components/library/src/content/section.rs +++ b/components/library/src/content/section.rs @@ -5,7 +5,7 @@ use slotmap::Key; use tera::{Context as TeraContext, Tera}; use config::Config; -use errors::{Result, ResultExt}; +use errors::{Result, Error}; use front_matter::{split_section_content, SectionFrontMatter}; use rendering::{render_content, Header, RenderContext}; use utils::fs::{find_related_assets, read_file}; @@ -172,7 +172,7 @@ impl Section { context.tera_context.insert("section", &SerializingSection::from_section_basic(self, None)); let res = render_content(&self.raw_content, &context) - .chain_err(|| format!("Failed to render content of {}", self.file.path.display()))?; + .map_err(|e| Error::chain(format!("Failed to render content of {}", self.file.path.display()), e))?; self.content = res.body; self.toc = res.toc; Ok(()) @@ -190,7 +190,7 @@ impl Section { context.insert("lang", &self.lang); render_template(tpl_name, tera, &context, &config.theme) - .chain_err(|| format!("Failed to render section '{}'", self.file.path.display())) + .map_err(|e| Error::chain(format!("Failed to render section '{}'", self.file.path.display()), e)) } /// Is this the index section? diff --git a/components/library/src/pagination/mod.rs b/components/library/src/pagination/mod.rs index ad02385b..da2c1c18 100644 --- a/components/library/src/pagination/mod.rs +++ b/components/library/src/pagination/mod.rs @@ -4,7 +4,7 @@ use slotmap::Key; use tera::{to_value, Context, Tera, Value}; use config::Config; -use errors::{Result, ResultExt}; +use errors::{Result, Error}; use utils::templates::render_template; use content::{Section, SerializingPage, SerializingSection}; @@ -222,7 +222,7 @@ impl<'a> Paginator<'a> { context.insert("paginator", &self.build_paginator_context(pager)); render_template(&self.template, tera, &context, &config.theme) - .chain_err(|| format!("Failed to render pager {}", pager.index)) + .map_err(|e| Error::chain(format!("Failed to render pager {}", pager.index), e)) } } diff --git a/components/library/src/taxonomies/mod.rs b/components/library/src/taxonomies/mod.rs index 6b74f9ca..c44265ca 100644 --- a/components/library/src/taxonomies/mod.rs +++ b/components/library/src/taxonomies/mod.rs @@ -5,7 +5,7 @@ use slug::slugify; use tera::{Context, Tera}; use config::{Config, Taxonomy as TaxonomyConfig}; -use errors::{Result, ResultExt}; +use errors::{Result, Error}; use utils::templates::render_template; use content::SerializingPage; @@ -145,7 +145,7 @@ impl Taxonomy { context.insert("current_path", &format!("/{}/{}", self.kind.name, item.slug)); render_template(&format!("{}/single.html", self.kind.name), tera, &context, &config.theme) - .chain_err(|| format!("Failed to render single term {} page.", self.kind.name)) + .map_err(|e| Error::chain(format!("Failed to render single term {} page.", self.kind.name), e)) } pub fn render_all_terms( @@ -164,7 +164,7 @@ impl Taxonomy { context.insert("current_path", &self.kind.name); render_template(&format!("{}/list.html", self.kind.name), tera, &context, &config.theme) - .chain_err(|| format!("Failed to render a list of {} page.", self.kind.name)) + .map_err(|e| Error::chain(format!("Failed to render a list of {} page.", self.kind.name), e)) } pub fn to_serialized<'a>(&'a self, library: &'a Library) -> SerializedTaxonomy<'a> { @@ -334,7 +334,7 @@ mod tests { let err = taxonomies.unwrap_err(); // no path as this is created by Default assert_eq!( - err.description(), + format!("{}", err), "Page `` has taxonomy `tags` which is not defined in config.toml" ); } @@ -442,7 +442,7 @@ mod tests { let err = taxonomies.unwrap_err(); // no path as this is created by Default assert_eq!( - err.description(), + format!("{}", err), "Page `` has taxonomy `tags` which is not available in that language" ); } diff --git a/components/rendering/src/shortcode.rs b/components/rendering/src/shortcode.rs index 804b4876..6836b200 100644 --- a/components/rendering/src/shortcode.rs +++ b/components/rendering/src/shortcode.rs @@ -4,7 +4,7 @@ use regex::Regex; use tera::{to_value, Context, Map, Value}; use context::RenderContext; -use errors::{Result, ResultExt}; +use errors::{Result, Error}; // This include forces recompiling this source file if the grammar file changes. // Uncomment it when doing changes to the .pest file @@ -116,7 +116,7 @@ fn render_shortcode( let res = context .tera .render(&tpl_name, &tera_context) - .chain_err(|| format!("Failed to render {} shortcode", name))?; + .map_err(|e| Error::chain(format!("Failed to render {} shortcode", name), e))?; // Small hack to avoid having multiple blank lines because of Tera tags for example // A blank like will cause the markdown parser to think we're out of HTML and start looking diff --git a/components/rendering/tests/markdown.rs b/components/rendering/tests/markdown.rs index 6f189ed8..ebd74942 100644 --- a/components/rendering/tests/markdown.rs +++ b/components/rendering/tests/markdown.rs @@ -660,7 +660,7 @@ fn can_show_error_message_for_invalid_external_links() { let res = render_content("[a link](http://google.comy)", &context); assert!(res.is_err()); let err = res.unwrap_err(); - assert!(err.description().contains("Link http://google.comy is not valid")); + assert!(format!("{}", err).contains("Link http://google.comy is not valid")); } #[test] diff --git a/components/site/src/lib.rs b/components/site/src/lib.rs index 2308cbc6..9b59e564 100644 --- a/components/site/src/lib.rs +++ b/components/site/src/lib.rs @@ -30,7 +30,7 @@ use sass_rs::{compile_file, Options as SassOptions, OutputStyle}; use tera::{Context, Tera}; use config::{get_config, Config}; -use errors::{Result, ResultExt}; +use errors::{Result, Error}; use front_matter::InsertAnchor; use library::{ find_taxonomies, sort_actual_pages_by_date, Library, Page, Paginator, Section, Taxonomy, @@ -87,7 +87,7 @@ impl Site { format!("{}/{}", path.to_string_lossy().replace("\\", "/"), "templates/**/*.*ml"); // Only parsing as we might be extending templates from themes and that would error // as we haven't loaded them yet - let mut tera = Tera::parse(&tpl_glob).chain_err(|| "Error parsing templates")?; + let mut tera = Tera::parse(&tpl_glob).map_err(|e| Error::chain("Error parsing templates", e))?; if let Some(theme) = config.theme.clone() { // Grab data from the extra section of the theme config.merge_with_theme(&path.join("themes").join(&theme).join("theme.toml"))?; @@ -104,9 +104,9 @@ impl Site { format!("themes/{}/templates/**/*.*ml", theme) ); let mut tera_theme = - Tera::parse(&theme_tpl_glob).chain_err(|| "Error parsing templates from themes")?; + Tera::parse(&theme_tpl_glob).map_err(|e| Error::chain("Error parsing templates from themes", e))?; rewrite_theme_paths(&mut tera_theme, &theme); - // TODO: same as below + // TODO: we do that twice, make it dry? if theme_path.join("templates").join("robots.txt").exists() { tera_theme .add_template_file(theme_path.join("templates").join("robots.txt"), None)?; @@ -470,7 +470,7 @@ impl Site { pub fn clean(&self) -> Result<()> { if self.output_path.exists() { // Delete current `public` directory so we can start fresh - remove_dir_all(&self.output_path).chain_err(|| "Couldn't delete output directory")?; + remove_dir_all(&self.output_path).map_err(|e| Error::chain("Couldn't delete output directory", e))?; } Ok(()) diff --git a/components/templates/Cargo.toml b/components/templates/Cargo.toml index c3001f40..b84e15b4 100644 --- a/components/templates/Cargo.toml +++ b/components/templates/Cargo.toml @@ -11,7 +11,6 @@ pulldown-cmark = "0.2" toml = "0.4" csv = "1" serde_json = "1.0" -error-chain = "0.12" reqwest = "0.9" url = "1.5" diff --git a/components/templates/src/global_fns/mod.rs b/components/templates/src/global_fns/mod.rs index 310b2655..ffb390b5 100644 --- a/components/templates/src/global_fns/mod.rs +++ b/components/templates/src/global_fns/mod.rs @@ -1,5 +1,3 @@ -extern crate error_chain; - use std::collections::HashMap; use std::sync::{Arc, Mutex}; diff --git a/components/templates/src/lib.rs b/components/templates/src/lib.rs index c9723fbf..a75e2ff6 100644 --- a/components/templates/src/lib.rs +++ b/components/templates/src/lib.rs @@ -25,7 +25,7 @@ pub mod global_fns; use tera::{Context, Tera}; -use errors::{Result, ResultExt}; +use errors::{Result, Error}; lazy_static! { pub static ref ZOLA_TERA: Tera = { @@ -57,5 +57,5 @@ pub fn render_redirect_template(url: &str, tera: &Tera) -> Result { context.insert("url", &url); tera.render("internal/alias.html", &context) - .chain_err(|| format!("Failed to render alias for '{}'", url)) + .map_err(|e| Error::chain(format!("Failed to render alias for '{}'", url), e)) } diff --git a/components/utils/src/fs.rs b/components/utils/src/fs.rs index ec08d3f9..fdbccbdb 100644 --- a/components/utils/src/fs.rs +++ b/components/utils/src/fs.rs @@ -4,7 +4,7 @@ use std::path::{Path, PathBuf}; use std::time::SystemTime; use walkdir::WalkDir; -use errors::{Result, ResultExt}; +use errors::{Result, Error}; pub fn is_path_in_directory(parent: &Path, path: &Path) -> Result { let canonical_path = path @@ -19,7 +19,8 @@ pub fn is_path_in_directory(parent: &Path, path: &Path) -> Result { /// Create a file with the content given pub fn create_file(path: &Path, content: &str) -> Result<()> { - let mut file = File::create(&path).chain_err(|| format!("Failed to create {:?}", path))?; + let mut file = File::create(&path) + .map_err(|e| Error::chain(format!("Failed to create {:?}", path), e))?; file.write_all(content.as_bytes())?; Ok(()) } @@ -37,7 +38,7 @@ pub fn ensure_directory_exists(path: &Path) -> Result<()> { pub fn create_directory(path: &Path) -> Result<()> { if !path.exists() { create_dir_all(path) - .chain_err(|| format!("Was not able to create folder {}", path.display()))?; + .map_err(|e| Error::chain(format!("Was not able to create folder {}", path.display()), e))?; } Ok(()) } @@ -46,7 +47,7 @@ pub fn create_directory(path: &Path) -> Result<()> { pub fn read_file(path: &Path) -> Result { let mut content = String::new(); File::open(path) - .chain_err(|| format!("Failed to open '{:?}'", path.display()))? + .map_err(|e| Error::chain(format!("Failed to open '{:?}'", path.display()), e))? .read_to_string(&mut content)?; // Remove utf-8 BOM if any. @@ -57,6 +58,19 @@ pub fn read_file(path: &Path) -> Result { Ok(content) } +/// Return the content of a file, with error handling added. +/// The default error message is overwritten by the message given. +/// That means it is allocation 2 strings, oh well +pub fn read_file_with_error(path: &Path, message: &str) -> Result { + let res = read_file(&path); + if res.is_ok() { + return res; + } + let mut err = Error::msg(message); + err.source = res.unwrap_err().source; + Err(err) +} + /// Looks into the current folder for the path and see if there's anything that is not a .md /// file. Those will be copied next to the rendered .html file pub fn find_related_assets(path: &Path) -> Vec { diff --git a/docs/templates/page.html b/docs/templates/page.html index 8f6c09b8..723f0b1c 100644 --- a/docs/templates/page.html +++ b/docs/templates/page.html @@ -4,4 +4,5 @@ {% block doc_content %}

{{page.title}}

{{page.content | safe}} +{{hey}} {% endblock doc_content %} diff --git a/src/cmd/serve.rs b/src/cmd/serve.rs index 7672aac2..43408ef8 100644 --- a/src/cmd/serve.rs +++ b/src/cmd/serve.rs @@ -36,7 +36,7 @@ use ctrlc; use notify::{watcher, RecursiveMode, Watcher}; use ws::{Message, Sender, WebSocket}; -use errors::{Result, ResultExt}; +use errors::{Result, Error as ZolaError}; use site::Site; use utils::fs::copy_file; @@ -179,23 +179,23 @@ pub fn serve( let mut watcher = watcher(tx, Duration::from_secs(1)).unwrap(); watcher .watch("content/", RecursiveMode::Recursive) - .chain_err(|| "Can't watch the `content` folder. Does it exist?")?; + .map_err(|e| ZolaError::chain("Can't watch the `content` folder. Does it exist?", e))?; watcher .watch(config_file, RecursiveMode::Recursive) - .chain_err(|| "Can't watch the `config` file. Does it exist?")?; + .map_err(|e| ZolaError::chain("Can't watch the `config` file. Does it exist?", e))?; if Path::new("static").exists() { watching_static = true; watcher .watch("static/", RecursiveMode::Recursive) - .chain_err(|| "Can't watch the `static` folder.")?; + .map_err(|e| ZolaError::chain("Can't watch the `static` folder.", e))?; } if Path::new("templates").exists() { watching_templates = true; watcher .watch("templates/", RecursiveMode::Recursive) - .chain_err(|| "Can't watch the `templates` folder.")?; + .map_err(|e| ZolaError::chain("Can't watch the `templates` folder.", e))?; } // Sass support is optional so don't make it an error to no have a sass folder diff --git a/src/console.rs b/src/console.rs index 4d1ba191..2d50ca91 100644 --- a/src/console.rs +++ b/src/console.rs @@ -1,4 +1,5 @@ use std::env; +use std::error::Error as StdError; use std::io::Write; use std::time::Instant; @@ -6,7 +7,6 @@ use atty; use chrono::Duration; use termcolor::{Color, ColorChoice, ColorSpec, StandardStream, WriteColor}; -use errors::Error; use site::Site; lazy_static! { @@ -91,13 +91,15 @@ pub fn report_elapsed_time(instant: Instant) { } /// Display an error message and the actual error(s) -pub fn unravel_errors(message: &str, error: &Error) { +pub fn unravel_errors(message: &str, error: &StdError) { if !message.is_empty() { self::error(message); } self::error(&format!("Error: {}", error)); - for e in error.iter().skip(1) { + let mut cause = error.source(); + while let Some(e) = cause { self::error(&format!("Reason: {}", e)); + cause = e.source(); } } From 83472a53d728e6a1f5788996c99abed275e461e9 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Thu, 17 Jan 2019 18:18:02 +0100 Subject: [PATCH 15/74] Register load_data early Closes #582 --- CHANGELOG.md | 5 ++++- components/site/src/lib.rs | 8 ++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c2d8b20..e3c7e58b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,10 @@ - Add support for content in multiple languages - Lower latency on serve before rebuilding from 2 to 1 second - Allow processing PNG and produced images are less blurry -- Add an id (`zola-continue-reading`) +- Add an id (`zola-continue-reading`) to the paragraph generated after a summary +- Add Dracula syntax highlighting theme +- Fix using inline styles in headers + ## 0.5.1 (2018-12-14) diff --git a/components/site/src/lib.rs b/components/site/src/lib.rs index 9b59e564..bffc3feb 100644 --- a/components/site/src/lib.rs +++ b/components/site/src/lib.rs @@ -335,6 +335,10 @@ impl Site { "resize_image", global_fns::make_resize_image(self.imageproc.clone()), ); + self.tera.register_function( + "load_data", + global_fns::make_load_data(self.content_path.clone(), self.base_path.clone()), + ); } pub fn register_tera_global_fns(&mut self) { @@ -349,10 +353,6 @@ impl Site { "get_taxonomy_url", global_fns::make_get_taxonomy_url(&self.taxonomies), ); - self.tera.register_function( - "load_data", - global_fns::make_load_data(self.content_path.clone(), self.base_path.clone()), - ); } /// Add a page to the site From 1b4cfd49d0290a4f3e827f4cd2310d72c7820cd7 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Thu, 17 Jan 2019 18:29:18 +0100 Subject: [PATCH 16/74] More early tera fns and mention limitation of shortcodes in docs --- components/site/src/lib.rs | 10 +++++----- docs/content/documentation/content/shortcodes.md | 4 ++++ 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/components/site/src/lib.rs b/components/site/src/lib.rs index bffc3feb..5c3a98f8 100644 --- a/components/site/src/lib.rs +++ b/components/site/src/lib.rs @@ -339,20 +339,20 @@ impl Site { "load_data", global_fns::make_load_data(self.content_path.clone(), self.base_path.clone()), ); + self.tera.register_function("trans", global_fns::make_trans(self.config.clone())); + self.tera.register_function( + "get_taxonomy_url", + global_fns::make_get_taxonomy_url(&self.taxonomies), + ); } pub fn register_tera_global_fns(&mut self) { - self.tera.register_function("trans", global_fns::make_trans(self.config.clone())); self.tera.register_function("get_page", global_fns::make_get_page(&self.library)); self.tera.register_function("get_section", global_fns::make_get_section(&self.library)); self.tera.register_function( "get_taxonomy", global_fns::make_get_taxonomy(&self.taxonomies, &self.library), ); - self.tera.register_function( - "get_taxonomy_url", - global_fns::make_get_taxonomy_url(&self.taxonomies), - ); } /// Add a page to the site diff --git a/docs/content/documentation/content/shortcodes.md b/docs/content/documentation/content/shortcodes.md index edcdbc6a..290c2c3e 100644 --- a/docs/content/documentation/content/shortcodes.md +++ b/docs/content/documentation/content/shortcodes.md @@ -36,6 +36,10 @@ That's it, Zola will now recognise this template as a shortcode named `youtube` The markdown renderer will wrap an inline HTML node like `` or `` into a paragraph. If you want to disable that, simply wrap your shortcode in a `div`. +Shortcodes are rendered before parsing the markdown so it doesn't have access to the table of contents. Because of that, +you also cannot use the `get_page`/`get_section`/`get_taxonomy` global function. It might work while running `zola serve` because +it has been loaded but it will fail during `zola build`. + ## Using shortcodes There are two kinds of shortcodes: From 5ab3466e2bbf85bd0f696d494025aa6d4ed0125d Mon Sep 17 00:00:00 2001 From: Peng Guanwen Date: Fri, 18 Jan 2019 22:46:18 +0800 Subject: [PATCH 17/74] Doc improvements --- components/rendering/src/markdown.rs | 35 ++++++++++++++-------------- components/utils/src/vec.rs | 2 +- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/components/rendering/src/markdown.rs b/components/rendering/src/markdown.rs index 6279e733..01e31af0 100644 --- a/components/rendering/src/markdown.rs +++ b/components/rendering/src/markdown.rs @@ -28,16 +28,17 @@ pub struct Rendered { pub toc: Vec
, } +// tracks a header in a slice of pulldown-cmark events #[derive(Debug)] -struct HeaderIndex { - start: usize, - end: usize, +struct HeaderRef { + start_idx: usize, + end_idx: usize, level: i32, } -impl HeaderIndex { - fn new(start: usize, level: i32) -> HeaderIndex { - HeaderIndex { start, end: 0, level } +impl HeaderRef { + fn new(start: usize, level: i32) -> HeaderRef { + HeaderRef { start_idx: start, end_idx: 0, level } } } @@ -110,23 +111,23 @@ fn get_text(parser_slice: &[Event]) -> String { title } -fn get_header_indexes(events: &[Event]) -> Vec { - let mut header_indexes = vec![]; +fn get_header_refs(events: &[Event]) -> Vec { + let mut header_refs = vec![]; for (i, event) in events.iter().enumerate() { match event { Event::Start(Tag::Header(level)) => { - header_indexes.push(HeaderIndex::new(i, *level)); + header_refs.push(HeaderRef::new(i, *level)); } Event::End(Tag::Header(_)) => { let msg = "Header end before start?"; - header_indexes.last_mut().expect(msg).end = i; + header_refs.last_mut().expect(msg).end_idx = i; } _ => (), } } - header_indexes + header_refs } pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result { @@ -220,19 +221,19 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result>(); // We need to collect the events to make a second pass - let mut header_indexes = get_header_indexes(&events); + let header_refs = get_header_refs(&events); let mut anchors_to_insert = vec![]; - for header_idx in header_indexes { - let start_idx = header_idx.start; - let end_idx = header_idx.end; + for header_ref in header_refs { + let start_idx = header_ref.start_idx; + let end_idx = header_ref.end_idx; let title = get_text(&events[start_idx + 1 .. end_idx]); let id = find_anchor(&inserted_anchors, slugify(&title), 0); inserted_anchors.push(id.clone()); // insert `id` to the tag - let html = format!("", lvl = header_idx.level, id = id); + let html = format!("", lvl = header_ref.level, id = id); events[start_idx] = Event::Html(Owned(html)); // generate anchors and places to insert them @@ -250,7 +251,7 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result InsertMany for Vec { type Element = T; /// Efficiently insert multiple element in their specified index. - /// The index should be sorted in ascending order. + /// The elements should sorted in ascending order by their index. /// /// This is done in O(n) time. fn insert_many(&mut self, elem_to_insert: Vec<(usize, T)>) { From b65979fac78dbfaf4242d0aabda7497e35bf8e14 Mon Sep 17 00:00:00 2001 From: Nicolas Pochet Date: Wed, 16 Jan 2019 10:59:29 +0100 Subject: [PATCH 18/74] Render the theme template files if present * Change the behavior of the template rendering: * Check if the template bare name is present * Check if the template is part of a theme * Fallback to defaults * Change the behavior of the shortcode rendering: * Call the template rendering function * Prepend `__zola_builtins/` to most of the default elements in `ZOLA_TERA` * Add a test to verify the presence and content of a `404.html` page from a theme's template --- components/rendering/src/shortcode.rs | 12 +++++------ components/site/tests/site.rs | 11 ++++++++++ components/templates/src/lib.rs | 25 +++++++++++++++------- components/utils/src/templates.rs | 13 ++++++++++- test_site/themes/sample/templates/404.html | 1 + 5 files changed, 47 insertions(+), 15 deletions(-) create mode 100644 test_site/themes/sample/templates/404.html diff --git a/components/rendering/src/shortcode.rs b/components/rendering/src/shortcode.rs index 6836b200..e45838ee 100644 --- a/components/rendering/src/shortcode.rs +++ b/components/rendering/src/shortcode.rs @@ -4,7 +4,7 @@ use regex::Regex; use tera::{to_value, Context, Map, Value}; use context::RenderContext; -use errors::{Result, Error}; +use errors::{Error, Result}; // This include forces recompiling this source file if the grammar file changes. // Uncomment it when doing changes to the .pest file @@ -111,12 +111,12 @@ fn render_shortcode( tera_context.insert("body", b.trim_right()); } tera_context.extend(context.tera_context.clone()); - let tpl_name = format!("shortcodes/{}.html", name); - let res = context - .tera - .render(&tpl_name, &tera_context) - .map_err(|e| Error::chain(format!("Failed to render {} shortcode", name), e))?; + let template_name = format!("shortcodes/{}.html", name); + + let res = + utils::templates::render_template(&template_name, &context.tera, &tera_context, &None) + .map_err(|e| Error::chain(format!("Failed to render {} shortcode", name), e))?; // Small hack to avoid having multiple blank lines because of Tera tags for example // A blank like will cause the markdown parser to think we're out of HTML and start looking diff --git a/components/site/tests/site.rs b/components/site/tests/site.rs index b1cab795..7c4a55cf 100644 --- a/components/site/tests/site.rs +++ b/components/site/tests/site.rs @@ -629,3 +629,14 @@ fn can_apply_page_templates() { assert_eq!(child.meta.template, Some("page_template_child.html".into())); assert_eq!(child.meta.title, Some("Local section override".into())); } + +// https://github.com/getzola/zola/issues/571 +#[test] +fn can_build_site_custom_builtins_from_theme() { + let (_, _tmp_dir, public) = build_site("test_site"); + + assert!(&public.exists()); + // 404.html is a theme template. + assert!(file_exists!(public, "404.html")); + assert!(file_contains!(public, "404.html", "Oops")); +} diff --git a/components/templates/src/lib.rs b/components/templates/src/lib.rs index a75e2ff6..c9c48ca9 100644 --- a/components/templates/src/lib.rs +++ b/components/templates/src/lib.rs @@ -31,15 +31,24 @@ lazy_static! { pub static ref ZOLA_TERA: Tera = { let mut tera = Tera::default(); tera.add_raw_templates(vec![ - ("404.html", include_str!("builtins/404.html")), - ("rss.xml", include_str!("builtins/rss.xml")), - ("sitemap.xml", include_str!("builtins/sitemap.xml")), - ("robots.txt", include_str!("builtins/robots.txt")), + ("__zola_builtins/404.html", include_str!("builtins/404.html")), + ("__zola_builtins/rss.xml", include_str!("builtins/rss.xml")), + ("__zola_builtins/sitemap.xml", include_str!("builtins/sitemap.xml")), + ("__zola_builtins/robots.txt", include_str!("builtins/robots.txt")), ("anchor-link.html", include_str!("builtins/anchor-link.html")), - ("shortcodes/youtube.html", include_str!("builtins/shortcodes/youtube.html")), - ("shortcodes/vimeo.html", include_str!("builtins/shortcodes/vimeo.html")), - ("shortcodes/gist.html", include_str!("builtins/shortcodes/gist.html")), - ("shortcodes/streamable.html", include_str!("builtins/shortcodes/streamable.html")), + ( + "__zola_builtins/shortcodes/youtube.html", + include_str!("builtins/shortcodes/youtube.html"), + ), + ( + "__zola_builtins/shortcodes/vimeo.html", + include_str!("builtins/shortcodes/vimeo.html"), + ), + ("__zola_builtins/shortcodes/gist.html", include_str!("builtins/shortcodes/gist.html")), + ( + "__zola_builtins/shortcodes/streamable.html", + include_str!("builtins/shortcodes/streamable.html"), + ), ("internal/alias.html", include_str!("builtins/internal/alias.html")), ]) .unwrap(); diff --git a/components/utils/src/templates.rs b/components/utils/src/templates.rs index 2b0ee29e..b2f4c418 100644 --- a/components/utils/src/templates.rs +++ b/components/utils/src/templates.rs @@ -25,12 +25,23 @@ pub fn render_template( context: &Context, theme: &Option, ) -> Result { + // check if it is in the templates if tera.templates.contains_key(name) { return tera.render(name, context).map_err(|e| e.into()); } + // check if it is part of a theme if let Some(ref t) = *theme { - return tera.render(&format!("{}/templates/{}", t, name), context).map_err(|e| e.into()); + let theme_template_name = format!("{}/templates/{}", t, name); + if tera.templates.contains_key(&theme_template_name) { + return tera.render(&theme_template_name, context).map_err(|e| e.into()); + } + } + + // check if it is part of ZOLA_TERA defaults + let default_name = format!("__zola_builtins/{}", name); + if tera.templates.contains_key(&default_name) { + return tera.render(&default_name, context).map_err(|e| e.into()); } // maybe it's a default one? diff --git a/test_site/themes/sample/templates/404.html b/test_site/themes/sample/templates/404.html new file mode 100644 index 00000000..8d430af3 --- /dev/null +++ b/test_site/themes/sample/templates/404.html @@ -0,0 +1 @@ +Oops \ No newline at end of file From e119b685338cd2d50888e30f1d232abc5268572c Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Mon, 21 Jan 2019 17:54:44 +0100 Subject: [PATCH 19/74] Remove earlier/later/lighter/heavier from pages when rendering sections --- CHANGELOG.md | 5 + Cargo.lock | 546 ++++++++++-------- components/errors/Cargo.toml | 2 +- components/imageproc/Cargo.toml | 2 +- components/library/src/content/ser.rs | 2 +- .../documentation/templates/pages-sections.md | 2 + 6 files changed, 311 insertions(+), 248 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e3c7e58b..7a60d667 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ ## 0.6.0 (unreleased) +### Breaking +- `earlier/later` and `lighter/heavier` are not set anymore on pages when rendering +a section + +### Other - Add support for content in multiple languages - Lower latency on serve before rebuilding from 2 to 1 second - Allow processing PNG and produced images are less blurry diff --git a/Cargo.lock b/Cargo.lock index 6f7a0032..9f586709 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,9 +1,9 @@ [[package]] name = "MacTypes-sys" -version = "1.3.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -18,10 +18,10 @@ dependencies = [ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -47,7 +47,7 @@ dependencies = [ "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -61,12 +61,11 @@ dependencies = [ [[package]] name = "actix-web" -version = "0.7.17" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "actix 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)", "actix-net 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "askama_escape 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "base64 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -76,29 +75,29 @@ dependencies = [ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "h2 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "h2 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mime 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)", + "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", "mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.36 (registry+https://github.com/rust-lang/crates.io-index)", "serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -106,6 +105,7 @@ dependencies = [ "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "v_htmlescape 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -114,9 +114,9 @@ name = "actix_derive" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.24 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -129,7 +129,7 @@ name = "aho-corasick" version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -171,24 +171,19 @@ dependencies = [ "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "askama_escape" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "atty" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "autocfg" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -196,10 +191,10 @@ name = "backtrace" version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -210,7 +205,7 @@ version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -236,7 +231,7 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -299,8 +294,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -338,8 +333,8 @@ dependencies = [ "errors 0.1.0", "globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", @@ -350,7 +345,7 @@ name = "cookie" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "time 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -360,7 +355,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -368,7 +363,7 @@ name = "core-foundation-sys" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -394,8 +389,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -465,7 +460,7 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "csv-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -473,7 +468,7 @@ name = "csv-core" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -525,9 +520,9 @@ dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rust-stemmers 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.36 (registry+https://github.com/rust-lang/crates.io-index)", "strum 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "strum_macros 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -617,7 +612,7 @@ dependencies = [ name = "errors" version = "0.1.0" dependencies = [ - "image 0.20.1 (registry+https://github.com/rust-lang/crates.io-index)", + "image 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", "syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -637,9 +632,9 @@ name = "failure_derive" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.24 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -654,8 +649,8 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -664,7 +659,7 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crc32fast 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", "miniz-sys 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "miniz_oxide_c_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -695,8 +690,8 @@ dependencies = [ "errors 0.1.0", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", @@ -714,7 +709,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "fsevent-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -722,7 +717,7 @@ name = "fsevent-sys" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -800,13 +795,13 @@ dependencies = [ "aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "h2" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -816,8 +811,8 @@ dependencies = [ "http 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "string 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -834,7 +829,7 @@ name = "hostname" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", "winutil 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -846,9 +841,9 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "markup5ever 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.24 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -881,20 +876,20 @@ dependencies = [ [[package]] name = "hyper" -version = "0.12.19" +version = "0.12.21" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "h2 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "h2 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -912,7 +907,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.21 (registry+https://github.com/rust-lang/crates.io-index)", "native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -929,7 +924,7 @@ dependencies = [ [[package]] name = "image" -version = "0.20.1" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -939,7 +934,8 @@ dependencies = [ "num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", "num-rational 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "png 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "png 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", + "safe-transmute 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "tiff 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -949,7 +945,7 @@ name = "imageproc" version = "0.1.0" dependencies = [ "errors 0.1.0", - "image 0.20.1 (registry+https://github.com/rust-lang/crates.io-index)", + "image 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -978,7 +974,7 @@ dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "inotify-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -989,7 +985,7 @@ name = "inotify-sys" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -997,7 +993,7 @@ name = "iovec" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1053,7 +1049,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "libc" -version = "0.2.46" +version = "0.2.47" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1079,8 +1075,8 @@ dependencies = [ "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rendering 0.1.0", - "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "slotmap 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1094,7 +1090,7 @@ name = "link_checker" version = "0.1.0" dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "reqwest 0.9.5 (registry+https://github.com/rust-lang/crates.io-index)", + "reqwest 0.9.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1154,9 +1150,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", "phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.36 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "tendril 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1169,12 +1165,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "memchr" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1184,7 +1179,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "mime" -version = "0.3.12" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1195,7 +1190,7 @@ name = "mime_guess" version = "2.0.0-alpha.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "mime 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)", + "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", "phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", "phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1207,7 +1202,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1225,7 +1220,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", "crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", "miniz_oxide 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1239,11 +1234,11 @@ dependencies = [ "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1255,7 +1250,7 @@ dependencies = [ "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1264,7 +1259,7 @@ version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1285,14 +1280,14 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "openssl 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-sys 0.9.40 (registry+https://github.com/rust-lang/crates.io-index)", "schannel 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", - "security-framework 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "security-framework-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "security-framework 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "security-framework-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1302,7 +1297,7 @@ version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1322,7 +1317,7 @@ dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1331,6 +1326,14 @@ name = "nodrop" version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "nom" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "notify" version = "4.0.6" @@ -1342,7 +1345,7 @@ dependencies = [ "fsevent-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1355,9 +1358,9 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.24 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1396,27 +1399,26 @@ name = "num_cpus" version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "onig" -version = "4.2.1" +version = "4.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", - "onig_sys 69.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "onig_sys 69.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "onig_sys" -version = "69.0.0" +version = "69.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1429,7 +1431,7 @@ dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-sys 0.9.40 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1444,7 +1446,7 @@ version = "0.9.40" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1471,10 +1473,10 @@ name = "parking_lot_core" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1507,9 +1509,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "pest_meta 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.24 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1545,7 +1547,7 @@ version = "0.7.24" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1570,13 +1572,13 @@ dependencies = [ "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "xml-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "png" -version = "0.12.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1592,7 +1594,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "proc-macro2" -version = "0.4.24" +version = "0.4.26" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1614,19 +1616,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "quote" -version = "0.6.10" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1637,23 +1641,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_os 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_os 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1664,7 +1668,7 @@ name = "rand_chacha" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1699,13 +1703,14 @@ dependencies = [ [[package]] name = "rand_os" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1743,10 +1748,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rdrand" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rebuild" version = "0.1.0" @@ -1761,7 +1774,7 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.1.50" +version = "0.1.51" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1769,7 +1782,7 @@ name = "redox_termios" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "redox_syscall 0.1.50 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1778,7 +1791,7 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "regex-syntax 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1813,8 +1826,8 @@ dependencies = [ "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "pulldown-cmark 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "templates 0.1.0", @@ -1824,33 +1837,36 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.9.5" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "encoding_rs 0.8.14 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.21 (registry+https://github.com/rust-lang/crates.io-index)", "hyper-tls 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "libflate 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mime 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)", + "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", "mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", "native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.36 (registry+https://github.com/rust-lang/crates.io-index)", "serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "resolv-conf" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "hostname 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1862,8 +1878,8 @@ name = "rust-stemmers" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1884,6 +1900,11 @@ name = "ryu" version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "safe-transmute" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "safemem" version = "0.3.0" @@ -1902,7 +1923,7 @@ name = "sass-rs" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", "sass-sys 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1912,7 +1933,7 @@ version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1948,23 +1969,23 @@ dependencies = [ [[package]] name = "security-framework" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", - "security-framework-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "security-framework-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "security-framework-sys" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "MacTypes-sys 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "MacTypes-sys 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1982,28 +2003,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde" -version = "1.0.84" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde_derive" -version = "1.0.84" +version = "1.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.24 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_json" -version = "1.0.34" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2013,7 +2034,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2039,7 +2060,7 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arc-swap 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2060,8 +2081,8 @@ dependencies = [ "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "sass-rs 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "search 0.1.0", - "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "templates 0.1.0", "tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2070,7 +2091,7 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2088,7 +2109,7 @@ dependencies = [ [[package]] name = "smallvec" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2100,8 +2121,8 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2112,7 +2133,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "string" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2124,7 +2145,7 @@ dependencies = [ "new_debug_unreachable 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", "precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2136,8 +2157,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2162,18 +2183,18 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.24 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "syn" -version = "0.15.24" +version = "0.15.26" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2182,9 +2203,9 @@ name = "synstructure" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.24 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2199,12 +2220,12 @@ dependencies = [ "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "onig 4.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "onig 4.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "plist 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex-syntax 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.36 (registry+https://github.com/rust-lang/crates.io-index)", "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "yaml-rust 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2215,9 +2236,9 @@ version = "3.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2234,8 +2255,8 @@ dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "library 0.1.0", "pulldown-cmark 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "reqwest 0.9.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", + "reqwest 0.9.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.36 (registry+https://github.com/rust-lang/crates.io-index)", "tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2265,8 +2286,8 @@ dependencies = [ "pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.36 (registry+https://github.com/rust-lang/crates.io-index)", "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "unic-segment 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2285,8 +2306,8 @@ name = "termion" version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2319,11 +2340,11 @@ dependencies = [ [[package]] name = "time" -version = "0.1.41" +version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.50 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2409,7 +2430,7 @@ dependencies = [ "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2420,7 +2441,7 @@ version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", "signal-hook 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2454,7 +2475,7 @@ dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2465,7 +2486,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2491,7 +2512,7 @@ dependencies = [ "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2505,7 +2526,7 @@ name = "toml" version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2528,7 +2549,7 @@ dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", "socket2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2541,7 +2562,7 @@ dependencies = [ [[package]] name = "trust-dns-proto" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2551,7 +2572,7 @@ dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", "socket2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2574,10 +2595,10 @@ dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "resolv-conf 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "resolv-conf 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", - "trust-dns-proto 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "trust-dns-proto 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2722,7 +2743,7 @@ name = "utils" version = "0.1.0" dependencies = [ "errors 0.1.0", - "serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2738,6 +2759,36 @@ dependencies = [ "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "v_escape" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "v_escape_derive 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "v_escape_derive" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "nom 4.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "v_htmlescape" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "v_escape 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "vcpkg" version = "0.2.6" @@ -2856,9 +2907,9 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2891,7 +2942,7 @@ dependencies = [ name = "zola" version = "0.6.0" dependencies = [ - "actix-web 0.7.17 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-web 0.7.18 (registry+https://github.com/rust-lang/crates.io-index)", "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2910,10 +2961,10 @@ dependencies = [ ] [metadata] -"checksum MacTypes-sys 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7dbbe033994ae2198a18517c7132d952a29fb1db44249a1234779da7c50f4698" +"checksum MacTypes-sys 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "eaf9f0d0b1cc33a4d2aee14fb4b2eac03462ef4db29c8ac4057327d8a71ad86f" "checksum actix 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6c616db5fa4b0c40702fb75201c2af7f8aa8f3a2e2c1dda3b0655772aa949666" "checksum actix-net 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "8bebfbe6629e0131730746718c9e032b58f02c6ce06ed7c982b9fef6c8545acd" -"checksum actix-web 0.7.17 (registry+https://github.com/rust-lang/crates.io-index)" = "ed4d8a167b9e2f20e6d6d4bd92cd81839d5a551096e700f70a9fefe078583e56" +"checksum actix-web 0.7.18 (registry+https://github.com/rust-lang/crates.io-index)" = "e9f33c941e5e69a58a6bfef33853228042ed3799fc4b5a4923a36a85776fb690" "checksum actix_derive 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4300e9431455322ae393d43a2ba1ef96b8080573c0fc23b196219efedfb6ba69" "checksum adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7e522997b529f05601e05166c07ed17789691f562762c7f3b987263d2dedee5c" "checksum aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1e9a933f4e58658d7b12defcf96dc5c720f20832deebe3e0a19efd3b6aaeeb9e" @@ -2922,9 +2973,8 @@ dependencies = [ "checksum arc-swap 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1025aeae2b664ca0ea726a89d574fe8f4e77dd712d443236ad1de00379450cf6" "checksum arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee" "checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" -"checksum askama_escape 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "719b48039ffac1564f67d70162109ba9341125cee0096a540e478355b3c724a7" "checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652" -"checksum autocfg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4e5f34df7a019573fb8bdc7e24a2bfebe51a2a1d6bfdbaeccedb3c41fc574727" +"checksum autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a6d640bee2da49f60a4068a7fae53acde8982514ab7bae8b8cea9e88cbcfd799" "checksum backtrace 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "b5b493b66e03090ebc4343eb02f94ff944e0cbc9ac6571491d170ba026741eb5" "checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" "checksum base64 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "621fc7ecb8008f86d7fb9b95356cd692ce9514b80a86d85b397f32a22da7b9e2" @@ -2995,7 +3045,7 @@ dependencies = [ "checksum gif 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4bca55ac1f213920ce3527ccd62386f1f15fa3f1714aeee1cf93f2c416903f" "checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" "checksum globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4743617a7464bbda3c8aec8558ff2f9429047e025771037df561d383337ff865" -"checksum h2 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "1ac030ae20dee464c5d0f36544d8b914a6bc606da44a57e052d2b0f5dae129e0" +"checksum h2 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "30e0b8e55b4d7ffedade2b9605851f8e85f5010663e7ad170ef3c0f0681bc43f" "checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" "checksum hostname 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "21ceb46a83a85e824ef93669c8b390009623863b5c195d1ba747292c0c72f94e" "checksum html5ever 0.22.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c213fa6a618dc1da552f54f85cba74b05d8e883c92ec4e89067736938084c26e" @@ -3003,10 +3053,10 @@ dependencies = [ "checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" "checksum humansize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6cab2627acfc432780848602f3f558f7e9dd427352224b0d9324025796d2a5e" "checksum humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca7e5f2e110db35f93b837c81797f3714500b81d517bf20c431b16d3ca4f114" -"checksum hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)" = "f1ebec079129e43af5e234ef36ee3d7e6085687d145b7ea653b262d16c6b65f1" +"checksum hyper 0.12.21 (registry+https://github.com/rust-lang/crates.io-index)" = "6d6b1a3d01ac8035b8d2d94e0e5254eab82746f09046baed763751b00253232b" "checksum hyper-tls 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "32cd73f14ad370d3b4d4b7dce08f69b81536c82e39fcc89731930fe5788cd661" "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" -"checksum image 0.20.1 (registry+https://github.com/rust-lang/crates.io-index)" = "44665b4395d1844c96e7dc8ed5754782a1cdfd9ef458a80bbe45702681450504" +"checksum image 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)" = "52fb0666a1273dac46f9725aa4859bcd5595fc3554cf3495051b4de8db745e7d" "checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d" "checksum inflate 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "84c683bde2d8413b8f1be3e459c30e4817672b6e7a31d9212b0323154e76eba7" "checksum inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "40b54539f3910d6f84fbf9a643efd6e3aa6e4f001426c0329576128255994718" @@ -3019,7 +3069,7 @@ dependencies = [ "checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" "checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1" "checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" -"checksum libc 0.2.46 (registry+https://github.com/rust-lang/crates.io-index)" = "023a4cd09b2ff695f9734c1934145a315594b7986398496841c7031a5a1bbdbd" +"checksum libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)" = "48450664a984b25d5b479554c29cc04e3150c97aa4c01da5604a2d4ed9151476" "checksum libflate 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)" = "bff3ac7d6f23730d3b533c35ed75eef638167634476a499feef16c428d74b57b" "checksum linked-hash-map 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7860ec297f7008ff7a1e3382d7f7e1dcd69efc94751a2284bafc3d013c2aa939" "checksum linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "70fb39025bc7cdd76305867c4eccf2f2dcf6e9a57f5b21a93e1c2d86cd03ec9e" @@ -3031,9 +3081,9 @@ dependencies = [ "checksum maplit 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "08cbb6b4fef96b6d77bfc40ec491b1690c779e77b05cd9f07f787ed376fd4c43" "checksum markup5ever 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)" = "897636f9850c3eef4905a5540683ed53dc9393860f0846cab2c2ddf9939862ff" "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" -"checksum memchr 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "db4c41318937f6e76648f42826b1d9ade5c09cafb5aef7e351240a70f39206e9" +"checksum memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e1dd4eaac298c32ce07eb6ed9242eda7d82955b9170b7d6db59b2e02cc63fcb8" "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" -"checksum mime 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)" = "0a907b83e7b9e987032439a387e187119cddafc92d5c2aaeb1d92580a793f630" +"checksum mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "3e27ca21f40a310bd06d9031785f4801710d566c184a6e15bad4f1d9b65f9425" "checksum mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "30de2e4613efcba1ec63d8133f344076952090c122992a903359be5a4f99c3ed" "checksum miniz-sys 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "0300eafb20369952951699b68243ab4334f4b10a88f411c221d444b36c40e649" "checksum miniz_oxide 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5ad30a47319c16cde58d0314f5d98202a80c9083b5f61178457403dfb14e509c" @@ -3047,6 +3097,7 @@ dependencies = [ "checksum new_debug_unreachable 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0cdc457076c78ab54d5e0d6fa7c47981757f1e34dc39ff92787f217dede586c4" "checksum nix 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d37e713a259ff641624b6cb20e3b12b2952313ba36b6823c0f16e6cfd9e5de17" "checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" +"checksum nom 4.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9c349f68f25f596b9f44cf0e7c69752a5c633b0550c3ff849518bfba0233774a" "checksum notify 4.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "873ecfd8c174964ae30f401329d140142312c8e5590719cf1199d5f1717d8078" "checksum num-derive 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8af1847c907c2f04d7bfd572fb25bbb4385c637fe5be163cf2f8c5d778fe1e7d" "checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" @@ -3054,8 +3105,8 @@ dependencies = [ "checksum num-rational 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4e96f040177bb3da242b5b1ecf3f54b5d5af3efbbfb18608977a5d2767b22f10" "checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" "checksum num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5a69d464bdc213aaaff628444e99578ede64e9c854025aa43b9796530afa9238" -"checksum onig 4.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3febe8cb22362af9e662c9c35e4d8a675de50b1b119823aa556892ac967fb776" -"checksum onig_sys 69.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "78c04019a39ebac42dfd8c7822af0a009043720845a812ddbb95e403298b0183" +"checksum onig 4.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2e69a05d35a8f30d626a1df53c8636fe1b689407d744c0c7623aa825c0a3356e" +"checksum onig_sys 69.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388410bf5fa341f10e58e6db3975f4bea1ac30247dd79d37a9e5ced3cb4cc3b0" "checksum openssl 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)" = "ec7bd7ca4cce6dbdc77e7c1230682740d307d1218a87fb0349a571272be749f9" "checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" "checksum openssl-sys 0.9.40 (registry+https://github.com/rust-lang/crates.io-index)" = "1bb974e77de925ef426b6bc82fce15fd45bdcbeb5728bffcfc7cdeeb7ce1c2d6" @@ -3073,36 +3124,38 @@ dependencies = [ "checksum phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "234f71a15de2288bcb7e3b6515828d22af7ec8598ee6d24c3b526fa0a80b67a0" "checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" "checksum plist 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0c7316832d9ac5da02786bdc89a3faf0ca07070212b388766e969078fd593edc" -"checksum png 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f54b9600d584d3b8a739e1662a595fab051329eff43f20e7d8cc22872962145b" +"checksum png 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9adebf7fb91ccf5eac9da1a8e00e83cb8ae882c3e8d8e4ad59da73cb8c82a2c9" "checksum precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" -"checksum proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)" = "77619697826f31a02ae974457af0b29b723e5619e113e9397b8b82c6bd253f09" +"checksum proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)" = "38fddd23d98b2144d197c0eca5705632d4fe2667d14a6be5df8934f8d74f1978" "checksum pulldown-cmark 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "eef52fac62d0ea7b9b4dc7da092aa64ea7ec3d90af6679422d3d7e0e14b6ee15" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" -"checksum quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "53fa22a1994bd0f9372d7a816207d8a2677ad0325b073f5c5332760f0fb62b5c" -"checksum rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8356f47b32624fef5b3301c1be97e5944ecdd595409cc5da11d05f211db6cfbd" +"checksum quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd8e04bd9c52e0342b406469d494fcb033be4bdbe5c606016defbb1681411e1" +"checksum rand 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "dee497e66d8d76bf08ce20c8d36e16f93749ab0bf89975b4f8ae5cee660c2da2" "checksum rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e464cd887e869cddcae8792a4ee31d23c7edd516700695608f5b98c67ee0131c" -"checksum rand 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b65e163105a6284f841bd23100a015895f54340e88a5ffc9ca7b8b33827cfce0" +"checksum rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3906503e80ac6cbcacb2c2973fa8e473f24d7e2747c8c92bb230c2441cad96b5" "checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" "checksum rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1961a422c4d189dfb50ffa9320bf1f2a9bd54ecb92792fb9477f99a1045f3372" "checksum rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0905b6b7079ec73b314d4c748701f6931eb79fd97c668caa3f1899b22b32c6db" "checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" "checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" -"checksum rand_os 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "de5ac4de1c2973e1391dc305cb0fbf8788cb58068e98255439b7485a77022273" +"checksum rand_os 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f46fbd5550acf75b0c2730f5dd1873751daf9beb8f11b44027778fae50d7feca" "checksum rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "086bd09a33c7044e56bb44d5bdde5a60e7f119a9e95b0775f545de759a32fe05" "checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" "checksum rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "373814f27745b2686b350dd261bfd24576a6fb0e2c5919b3a2b6005f820b0473" "checksum rayon-core 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b055d1e92aba6877574d8fe604a63c8b5df60f60e5982bf7ccbb1338ea527356" -"checksum redox_syscall 0.1.50 (registry+https://github.com/rust-lang/crates.io-index)" = "52ee9a534dc1301776eff45b4fa92d2c39b1d8c3d3357e6eb593e0d795506fc2" +"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" +"checksum redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)" = "423e376fffca3dfa06c9e9790a9ccd282fafb3cc6e6397d01dbf64f9bacc6b85" "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" "checksum regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "37e7cbbd370869ce2e8dff25c7018702d10b21a20ef7135316f8daecd6c25b7f" "checksum regex-syntax 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4e47a2ed29da7a9e1960e1639e7a982e6edc6d49be308a3b02daf511504a16d1" "checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" -"checksum reqwest 0.9.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ab52e462d1e15891441aeefadff68bdea005174328ce3da0a314f2ad313ec837" -"checksum resolv-conf 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c62bd95a41841efdf7fca2ae9951e64a8d8eae7e5da196d8ce489a2241491a92" +"checksum reqwest 0.9.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0e60f169af3915c294818d55dde549f00d2966cef36d6c5e7255d75df3f2b16f" +"checksum resolv-conf 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b263b4aa1b5de9ffc0054a2386f96992058bb6870aab516f8cdeb8a667d56dcb" "checksum rust-stemmers 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fbf06149ec391025664a5634200ced1afb489f0f3f8a140d515ebc0eb04b4bc0" "checksum rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "adacaae16d02b6ec37fdc7acfcddf365978de76d1983d3ee22afc260e1ca9619" "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" "checksum ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "eb9e9b8cde282a9fe6a42dd4681319bfb63f121b8a8ee9439c6f4107e58a46f7" +"checksum safe-transmute 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9604873ffe1980bc1f179103704a65c8aca141c248d9e52b7af95ff10578166e" "checksum safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8dca453248a96cb0749e36ccdfe2b0b4e54a61bfef89fb97ec621eb8e0a93dd9" "checksum same-file 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8f20c4be53a8a1ff4c1f1b2bd14570d2f634628709752f0702ecdd2b3f9a5267" "checksum sass-rs 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90f8cf6e645aa843ffffcbdc1e8752b1f221dfa314c81895aeb229a77aea7e05" @@ -3110,32 +3163,32 @@ dependencies = [ "checksum schannel 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "0e1a231dc10abf6749cfa5d7767f25888d484201accbd919b66ab5413c502d56" "checksum scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" -"checksum security-framework 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "697d3f3c23a618272ead9e1fb259c1411102b31c6af8b93f1d64cca9c3b0e8e0" -"checksum security-framework-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "40d95f3d7da09612affe897f320d78264f0d2320f3e8eea27d12bd1bd94445e2" +"checksum security-framework 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bfab8dda0e7a327c696d893df9ffa19cadc4bd195797997f5223cf5831beaf05" +"checksum security-framework-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3d6696852716b589dff9e886ff83778bb635150168e83afa8ac6b8a78cb82abc" "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -"checksum serde 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)" = "0e732ed5a5592c17d961555e3b552985baf98d50ce418b7b655f31f6ba7eb1b7" -"checksum serde_derive 1.0.84 (registry+https://github.com/rust-lang/crates.io-index)" = "b4d6115a3ca25c224e409185325afc16a0d5aaaabc15c42b09587d6f1ba39a5b" -"checksum serde_json 1.0.34 (registry+https://github.com/rust-lang/crates.io-index)" = "bdf540260cfee6da923831f4776ddc495ada940c30117977c70f1313a6130545" +"checksum serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)" = "534b8b91a95e0f71bca3ed5824752d558da048d4248c91af873b63bd60519752" +"checksum serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)" = "a915306b0f1ac5607797697148c223bedeaa36bcc2e28a01441cd638cc6567b4" +"checksum serde_json 1.0.36 (registry+https://github.com/rust-lang/crates.io-index)" = "574378d957d6dcdf1bbb5d562a15cbd5e644159432f84634b94e485267abbcc7" "checksum serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d48f9f99cd749a2de71d29da5f948de7f2764cc5a9d7f3c97e3514d4ee6eabf2" "checksum sha-1 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "51b9d1f3b5de8a167ab06834a7c883bd197f2191e1dda1a22d9ccfeedbf9aded" "checksum sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" "checksum signal-hook 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1f272d1b7586bec132ed427f532dd418d8beca1ca7f2caf7df35569b1415a4b4" "checksum siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" -"checksum slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5f9776d6b986f77b35c6cf846c11ad986ff128fe0b2b63a3628e3755e8d3102d" +"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" "checksum slotmap 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4ed041f7f2ff35f2bf7d688bf30686976512f8300e37433c2c73ea9f4cf14b" "checksum slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b3bc762e6a4b6c6fcaade73e77f9ebc6991b676f88bb2358bddb56560f073373" -"checksum smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b73ea3738b47563803ef814925e69be00799a8c07420be8b996f8e98fb2336db" +"checksum smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)" = "88aea073965ab29f6edb5493faf96ad662fb18aa9eeb186a3b7057951605ed15" "checksum socket2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "c4d11a52082057d87cb5caa31ad812f4504b97ab44732cd8359df2e9ff9f48e7" "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" -"checksum string 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "98998cced76115b1da46f63388b909d118a37ae0be0f82ad35773d4a4bc9d18d" +"checksum string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b639411d0b9c738748b5397d5ceba08e648f4f1992231aa859af1a017f31f60b" "checksum string_cache 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "25d70109977172b127fe834e5449e5ab1740b9ba49fa18a2020f509174f25423" "checksum string_cache_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1eea1eee654ef80933142157fdad9dd8bc43cf7c74e999e369263496f04ff4da" "checksum string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b1884d1bc09741d466d9b14e6d37ac89d6909cbcac41dd9ae982d4d063bbedfc" "checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" "checksum strum 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f6c3a2071519ab6a48f465808c4c1ffdd00dfc8e93111d02b4fc5abab177676e" "checksum strum_macros 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8baacebd7b7c9b864d83a6ba7a246232983e277b86fa5cdec77f565715a4b136" -"checksum syn 0.15.24 (registry+https://github.com/rust-lang/crates.io-index)" = "734ecc29cd36e8123850d9bf21dfd62ef8300aaa8f879aabaa899721808be37c" +"checksum syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)" = "f92e629aa1d9c827b2bb8297046c1ccffc57c99b947a680d3ccff1f136a3bee9" "checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" "checksum syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e02dd9df97a68a2d005ace28ff24c610abfc3ce17afcfdb22a077645dabb599a" "checksum tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "7e91405c14320e5c79b3d148e1c86f40749a36e490642202a31689cb1a3452b2" @@ -3146,7 +3199,7 @@ dependencies = [ "checksum textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "307686869c93e71f94da64286f9a9524c0f308a9e1c87a583de8e9c9039ad3f6" "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" "checksum tiff 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a2cc6c4fd13cb1cfd20abdb196e794ceccb29371855b7e7f575945f920a5b3c2" -"checksum time 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "847da467bf0db05882a9e2375934a8a55cffdc9db0d128af1518200260ba1f6c" +"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" "checksum tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "4790d0be6f4ba6ae4f48190efa2ed7780c9e3567796abdb285003cf39840d9c5" "checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" "checksum tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "331c8acc267855ec06eb0c94618dcbbfea45bed2d20b77252940095273fb58f6" @@ -3163,7 +3216,7 @@ dependencies = [ "checksum toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f" "checksum tower-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b32f72af77f1bfe3d3d4da8516a238ebe7039b51dd8637a09841ac7f16d2c987" "checksum trust-dns-proto 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0838272e89f1c693b4df38dc353412e389cf548ceed6f9fd1af5a8d6e0e7cf74" -"checksum trust-dns-proto 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e33f29df428f112ffeda24b328b814b61d6916be29aa89f19bc3f684ba5437b8" +"checksum trust-dns-proto 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "30dde452f5d142d5e316a3b32386da95280c98b7e266639f8f3bc6fdf507d279" "checksum trust-dns-resolver 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "de630f95a192f793436ffae5137e88253cc4142a97d9a8e73c8d804fa85ddf0a" "checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" "checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" @@ -3187,6 +3240,9 @@ dependencies = [ "checksum utf-8 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)" = "05e42f7c18b8f902290b009cde6d651262f956c98bc51bca4cd1d511c9cd85c7" "checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737" "checksum uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dab5c5526c5caa3d106653401a267fed923e7046f35895ffcb5ca42db64942e6" +"checksum v_escape 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c8b50688edb86f4c092a1a9fe8bda004b0faa3197100897653809e97e09a2814" +"checksum v_escape_derive 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7cd994c63b487fef7aad31e5394ec04b9e24de7b32ea5251c9fb499cd2cbf44c" +"checksum v_htmlescape 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "020cae817dc82693aa523f01087b291b1c7a9ac8cea5c12297963f21769fb27f" "checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" "checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" diff --git a/components/errors/Cargo.toml b/components/errors/Cargo.toml index c065109d..828b26ef 100644 --- a/components/errors/Cargo.toml +++ b/components/errors/Cargo.toml @@ -6,5 +6,5 @@ authors = ["Vincent Prouillet "] [dependencies] tera = "0.11" toml = "0.4" -image = "0.20" +image = "0.21" syntect = "3" diff --git a/components/imageproc/Cargo.toml b/components/imageproc/Cargo.toml index 0851e01d..785fc0b1 100644 --- a/components/imageproc/Cargo.toml +++ b/components/imageproc/Cargo.toml @@ -7,7 +7,7 @@ authors = ["VojtÄ›ch Král "] lazy_static = "1" regex = "1.0" tera = "0.11" -image = "0.20" +image = "0.21" rayon = "1" errors = { path = "../errors" } diff --git a/components/library/src/content/ser.rs b/components/library/src/content/ser.rs index 5008c80a..3404952e 100644 --- a/components/library/src/content/ser.rs +++ b/components/library/src/content/ser.rs @@ -225,7 +225,7 @@ impl<'a> SerializingSection<'a> { let mut subsections = Vec::with_capacity(section.subsections.len()); for k in §ion.pages { - pages.push(library.get_page_by_key(*k).to_serialized(library)); + pages.push(library.get_page_by_key(*k).to_serialized_basic(library)); } for k in §ion.subsections { diff --git a/docs/content/documentation/templates/pages-sections.md b/docs/content/documentation/templates/pages-sections.md index b311bfa9..0a3525c1 100644 --- a/docs/content/documentation/templates/pages-sections.md +++ b/docs/content/documentation/templates/pages-sections.md @@ -32,9 +32,11 @@ word_count: Number; // Based on https://help.medium.com/hc/en-us/articles/214991667-Read-time reading_time: Number; // `earlier` and `later` are only populated if the section variable `sort_by` is set to `date` +// and only set when rendering the page itself earlier: Page?; later: Page?; // `heavier` and `lighter` are only populated if the section variable `sort_by` is set to `weight` +// and only set when rendering the page itself heavier: Page?; lighter: Page?; // See the Table of contents section below for more details From b70f5a1c0545d2c3182ca06be08245e8ae694361 Mon Sep 17 00:00:00 2001 From: Matthias Endler Date: Tue, 22 Jan 2019 15:37:12 +0100 Subject: [PATCH 20/74] Add "Hello, Rust!" website to examples file --- EXAMPLES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/EXAMPLES.md b/EXAMPLES.md index cbabe50a..65dacc9f 100644 --- a/EXAMPLES.md +++ b/EXAMPLES.md @@ -19,3 +19,4 @@ | [Daniel Sockwell's codesections.com](https://www.codesections.com) | https://gitlab.com/codesections/codesections-website | | [Jens Getreu's blog](https://blog.getreu.net) | | | [Matthias Endler](https://matthias-endler.de) | https://github.com/mre/mre.github.io | +| [Hello, Rust!](https://hello-rust.show) | https://github.com/hello-rust/hello-rust.github.io | From 4259fcad79a2fd4ae966878d7b30645cc8ec9b32 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Tue, 22 Jan 2019 17:26:09 +0100 Subject: [PATCH 21/74] woops --- docs/templates/page.html | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/templates/page.html b/docs/templates/page.html index 723f0b1c..8f6c09b8 100644 --- a/docs/templates/page.html +++ b/docs/templates/page.html @@ -4,5 +4,4 @@ {% block doc_content %}

{{page.title}}

{{page.content | safe}} -{{hey}} {% endblock doc_content %} From 8fa316fba9397e7a2b48a36e9ce82c06329641b9 Mon Sep 17 00:00:00 2001 From: Shaleen Jain Date: Wed, 23 Jan 2019 13:24:53 +0530 Subject: [PATCH 22/74] Add my blog website to examples file --- EXAMPLES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/EXAMPLES.md b/EXAMPLES.md index 5d4883d4..9861a404 100644 --- a/EXAMPLES.md +++ b/EXAMPLES.md @@ -20,3 +20,4 @@ | [Jens Getreu's blog](https://blog.getreu.net) | | | [Matthias Endler](https://matthias-endler.de) | https://github.com/mre/mre.github.io | | [Michael Plotke](https://michael.plotke.me) | https://gitlab.com/bdjnk/michael | +| [shaleenjain.com](https://shaleenjain.com) | https://github.com/shalzz/shalzz.github.io | From 3375e7a8f1fa0af8632220b0384f5c16a1ee6f04 Mon Sep 17 00:00:00 2001 From: Shaleen Jain Date: Wed, 23 Jan 2019 13:30:50 +0530 Subject: [PATCH 23/74] doc: add a Github Action to deploy to Github Pages --- docs/content/documentation/deployment/github-pages.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/content/documentation/deployment/github-pages.md b/docs/content/documentation/deployment/github-pages.md index 6ca934d6..ecf273f9 100644 --- a/docs/content/documentation/deployment/github-pages.md +++ b/docs/content/documentation/deployment/github-pages.md @@ -7,6 +7,13 @@ By default, GitHub Pages uses Jekyll (A ruby based static site generator), but you can use whatever you want provided you have an `index.html` file in the root of a branch called `gh-pages`. That branch name can also be manually changed in the settings of a repository. +We can use any CI server to build and deploy our site. For example: + + * [Github Actions](https://github.com/shalzz/zola-deploy-action) + * [Travis CI](#travis-ci) + +## Travis CI + We are going to use [TravisCI](https://travis-ci.org) to automatically publish the site. If you are not using Travis already, you will need to login with the GitHub OAuth and activate Travis for the repository. Don't forget to also check if your repository allows GitHub Pages in its settings. From 1e2dd9ce0354747ec79c6ab6c374b951533d1f4e Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Wed, 23 Jan 2019 19:20:02 +0100 Subject: [PATCH 24/74] Update tera to v1 alpha --- Cargo.lock | 232 ++++++----- components/errors/Cargo.toml | 2 +- components/front_matter/Cargo.toml | 2 +- components/imageproc/Cargo.toml | 2 +- components/library/Cargo.toml | 2 +- components/library/src/content/page.rs | 2 +- components/library/src/content/section.rs | 2 +- components/library/src/pagination/mod.rs | 2 +- components/library/src/taxonomies/mod.rs | 4 +- components/rendering/Cargo.toml | 2 +- components/rendering/src/markdown.rs | 6 +- components/rendering/src/shortcode.rs | 2 +- components/site/Cargo.toml | 2 +- components/site/src/lib.rs | 24 +- components/templates/Cargo.toml | 2 +- components/templates/src/filters.rs | 20 +- .../templates/src/global_fns/load_data.rs | 77 ++-- components/templates/src/global_fns/mod.rs | 387 ++++++++++-------- components/templates/src/lib.rs | 2 +- components/utils/Cargo.toml | 2 +- components/utils/src/templates.rs | 4 +- 21 files changed, 437 insertions(+), 343 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9f586709..b1766344 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3,7 +3,7 @@ name = "MacTypes-sys" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -18,7 +18,7 @@ dependencies = [ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -76,7 +76,7 @@ dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "h2 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -176,7 +176,7 @@ name = "atty" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -194,7 +194,7 @@ dependencies = [ "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -205,7 +205,7 @@ version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -355,7 +355,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -363,7 +363,7 @@ name = "core-foundation-sys" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -600,21 +600,13 @@ dependencies = [ "backtrace 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "error-chain" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "backtrace 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "errors" version = "0.1.0" dependencies = [ "image 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", "syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -649,7 +641,7 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -659,9 +651,9 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crc32fast 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "miniz-sys 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "miniz_oxide_c_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "miniz_oxide_c_api 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -692,7 +684,7 @@ dependencies = [ "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -709,7 +701,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "fsevent-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -717,7 +709,7 @@ name = "fsevent-sys" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -799,6 +791,15 @@ dependencies = [ "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "globwalk" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ignore 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "h2" version = "0.1.15" @@ -808,7 +809,7 @@ dependencies = [ "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -829,7 +830,7 @@ name = "hostname" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "winutil 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -848,7 +849,7 @@ dependencies = [ [[package]] name = "http" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -883,7 +884,7 @@ dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "h2 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -919,7 +920,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-normalization 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ignore" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-channel 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "same-file 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -949,7 +967,7 @@ dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -974,7 +992,7 @@ dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "inotify-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -985,7 +1003,7 @@ name = "inotify-sys" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -993,7 +1011,7 @@ name = "iovec" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1049,7 +1067,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "libc" -version = "0.2.47" +version = "0.2.48" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1080,7 +1098,7 @@ dependencies = [ "slotmap 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -1169,7 +1187,7 @@ version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1202,12 +1220,12 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "miniz_oxide" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1215,13 +1233,13 @@ dependencies = [ [[package]] name = "miniz_oxide_c_api" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", "crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", - "miniz_oxide 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "miniz_oxide 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1234,7 +1252,7 @@ dependencies = [ "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1259,7 +1277,7 @@ version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1280,7 +1298,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "openssl 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1297,7 +1315,7 @@ version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1317,7 +1335,7 @@ dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1336,7 +1354,7 @@ dependencies = [ [[package]] name = "notify" -version = "4.0.6" +version = "4.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1345,7 +1363,7 @@ dependencies = [ "fsevent-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1399,7 +1417,7 @@ name = "num_cpus" version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1409,7 +1427,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "onig_sys 69.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1431,7 +1449,7 @@ dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-sys 0.9.40 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1446,7 +1464,7 @@ version = "0.9.40" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1473,7 +1491,7 @@ name = "parking_lot_core" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1628,7 +1646,7 @@ version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1641,7 +1659,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1652,7 +1670,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1708,7 +1726,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1748,7 +1766,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1831,7 +1849,7 @@ dependencies = [ "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "templates 0.1.0", - "tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -1844,7 +1862,7 @@ dependencies = [ "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "encoding_rs 0.8.14 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.12.21 (registry+https://github.com/rust-lang/crates.io-index)", "hyper-tls 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "libflate 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1923,7 +1941,7 @@ name = "sass-rs" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "sass-sys 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1933,7 +1951,7 @@ version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1974,7 +1992,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "security-framework-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1985,7 +2003,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "MacTypes-sys 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2060,7 +2078,7 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arc-swap 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2085,7 +2103,7 @@ dependencies = [ "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "templates 0.1.0", - "tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -2121,7 +2139,7 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2236,7 +2254,7 @@ version = "3.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2257,7 +2275,7 @@ dependencies = [ "pulldown-cmark 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "reqwest 0.9.8 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.36 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", @@ -2275,12 +2293,11 @@ dependencies = [ [[package]] name = "tera" -version = "0.11.20" +version = "1.0.0-alpha.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "globwalk 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "humansize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2289,8 +2306,9 @@ dependencies = [ "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.36 (registry+https://github.com/rust-lang/crates.io-index)", "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "unic-segment 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unic-segment 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "v_htmlescape 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2306,7 +2324,7 @@ name = "termion" version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2343,7 +2361,7 @@ name = "time" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2441,7 +2459,7 @@ version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", "signal-hook 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2512,7 +2530,7 @@ dependencies = [ "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2623,46 +2641,46 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "unic-char-property" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "unic-char-range 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unic-char-range 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "unic-char-range" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "unic-common" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "unic-segment" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "unic-ucd-segment 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unic-ucd-segment 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "unic-ucd-segment" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "unic-char-property 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unic-char-range 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unic-ucd-version 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unic-char-property 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unic-char-range 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unic-ucd-version 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "unic-ucd-version" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "unic-common 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unic-common 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2691,8 +2709,11 @@ dependencies = [ [[package]] name = "unicode-normalization" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "unicode-segmentation" @@ -2745,7 +2766,7 @@ dependencies = [ "errors 0.1.0", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2950,7 +2971,7 @@ dependencies = [ "errors 0.1.0", "front_matter 0.1.0", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "notify 4.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "notify 4.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "rebuild 0.1.0", "site 0.1.0", "termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3022,7 +3043,6 @@ dependencies = [ "checksum encoding-index-tradchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fd0e20d5688ce3cab59eb3ef3a2083a5c77bf496cb798dc6fcdb75f323890c18" "checksum encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569" "checksum encoding_rs 0.8.14 (registry+https://github.com/rust-lang/crates.io-index)" = "a69d152eaa438a291636c1971b0a370212165ca8a75759eb66818c5ce9b538f7" -"checksum error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "07e791d3be96241c77c43846b665ef1384606da2cd2a48730abe606a12906e02" "checksum error-chain 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6930e04918388a9a2e41d518c25cf679ccafe26733fb4127dbf21993f2575d46" "checksum failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2" "checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1" @@ -3045,17 +3065,19 @@ dependencies = [ "checksum gif 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4bca55ac1f213920ce3527ccd62386f1f15fa3f1714aeee1cf93f2c416903f" "checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" "checksum globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4743617a7464bbda3c8aec8558ff2f9429047e025771037df561d383337ff865" +"checksum globwalk 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4be0267260c9bb4e278dfb2291de9518a595cb625cf6f5f385c4b7d8d1aa7112" "checksum h2 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "30e0b8e55b4d7ffedade2b9605851f8e85f5010663e7ad170ef3c0f0681bc43f" "checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" "checksum hostname 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "21ceb46a83a85e824ef93669c8b390009623863b5c195d1ba747292c0c72f94e" "checksum html5ever 0.22.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c213fa6a618dc1da552f54f85cba74b05d8e883c92ec4e89067736938084c26e" -"checksum http 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "02096a6d2c55e63f7fcb800690e4f889a25f6ec342e3adb4594e293b625215ab" +"checksum http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "1a10e5b573b9a0146545010f50772b9e8b1dd0a256564cc4307694c68832a2f5" "checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" "checksum humansize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6cab2627acfc432780848602f3f558f7e9dd427352224b0d9324025796d2a5e" "checksum humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca7e5f2e110db35f93b837c81797f3714500b81d517bf20c431b16d3ca4f114" "checksum hyper 0.12.21 (registry+https://github.com/rust-lang/crates.io-index)" = "6d6b1a3d01ac8035b8d2d94e0e5254eab82746f09046baed763751b00253232b" "checksum hyper-tls 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "32cd73f14ad370d3b4d4b7dce08f69b81536c82e39fcc89731930fe5788cd661" "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" +"checksum ignore 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ad03ca67dc12474ecd91fdb94d758cbd20cb4e7a78ebe831df26a9b7511e1162" "checksum image 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)" = "52fb0666a1273dac46f9725aa4859bcd5595fc3554cf3495051b4de8db745e7d" "checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d" "checksum inflate 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "84c683bde2d8413b8f1be3e459c30e4817672b6e7a31d9212b0323154e76eba7" @@ -3069,7 +3091,7 @@ dependencies = [ "checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" "checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1" "checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" -"checksum libc 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)" = "48450664a984b25d5b479554c29cc04e3150c97aa4c01da5604a2d4ed9151476" +"checksum libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)" = "e962c7641008ac010fa60a7dfdc1712449f29c44ef2d4702394aea943ee75047" "checksum libflate 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)" = "bff3ac7d6f23730d3b533c35ed75eef638167634476a499feef16c428d74b57b" "checksum linked-hash-map 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7860ec297f7008ff7a1e3382d7f7e1dcd69efc94751a2284bafc3d013c2aa939" "checksum linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "70fb39025bc7cdd76305867c4eccf2f2dcf6e9a57f5b21a93e1c2d86cd03ec9e" @@ -3086,8 +3108,8 @@ dependencies = [ "checksum mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "3e27ca21f40a310bd06d9031785f4801710d566c184a6e15bad4f1d9b65f9425" "checksum mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "30de2e4613efcba1ec63d8133f344076952090c122992a903359be5a4f99c3ed" "checksum miniz-sys 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "0300eafb20369952951699b68243ab4334f4b10a88f411c221d444b36c40e649" -"checksum miniz_oxide 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5ad30a47319c16cde58d0314f5d98202a80c9083b5f61178457403dfb14e509c" -"checksum miniz_oxide_c_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "28edaef377517fd9fe3e085c37d892ce7acd1fbeab9239c5a36eec352d8a8b7e" +"checksum miniz_oxide 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c468f2369f07d651a5d0bb2c9079f8488a66d5466efe42d0c5c6466edcb7f71e" +"checksum miniz_oxide_c_api 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b7fe927a42e3807ef71defb191dc87d4e24479b221e67015fe38ae2b7b447bab" "checksum mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)" = "71646331f2619b1026cc302f87a2b8b648d5c6dd6937846a16cc8ce0f347f432" "checksum mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "46e73a04c2fa6250b8d802134d56d554a9ec2922bf977777c805ea5def61ce40" "checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" @@ -3098,7 +3120,7 @@ dependencies = [ "checksum nix 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d37e713a259ff641624b6cb20e3b12b2952313ba36b6823c0f16e6cfd9e5de17" "checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" "checksum nom 4.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9c349f68f25f596b9f44cf0e7c69752a5c633b0550c3ff849518bfba0233774a" -"checksum notify 4.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "873ecfd8c174964ae30f401329d140142312c8e5590719cf1199d5f1717d8078" +"checksum notify 4.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "c968cf37cf949114b00d51b0b23536d1c3a4a3963767cf4c969c65a6af78dc7d" "checksum num-derive 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8af1847c907c2f04d7bfd572fb25bbb4385c637fe5be163cf2f8c5d778fe1e7d" "checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" "checksum num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "af3fdbbc3291a5464dc57b03860ec37ca6bf915ed6ee385e7c6c052c422b2124" @@ -3193,7 +3215,7 @@ dependencies = [ "checksum syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e02dd9df97a68a2d005ace28ff24c610abfc3ce17afcfdb22a077645dabb599a" "checksum tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "7e91405c14320e5c79b3d148e1c86f40749a36e490642202a31689cb1a3452b2" "checksum tendril 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "707feda9f2582d5d680d733e38755547a3e8fb471e7ba11452ecfd9ce93a5d3b" -"checksum tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)" = "4b505279e19d8f7d24b1a9dc58327c9c36174b1a2c7ebdeac70792d017cb64f3" +"checksum tera 1.0.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5847f6a7882d3068732f542fd9144314233f3e9eed3e1223518994e951683d" "checksum termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4096add70612622289f2fdcdbd5086dc81c1e2675e6ae58d6c4f62a16c6d7f2f" "checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" "checksum textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "307686869c93e71f94da64286f9a9524c0f308a9e1c87a583de8e9c9039ad3f6" @@ -3222,16 +3244,16 @@ dependencies = [ "checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" "checksum ucd-trie 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "71a9c5b1fe77426cf144cc30e49e955270f5086e31a6441dfa8b32efc09b9d77" "checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86" -"checksum unic-char-property 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ce36d3f7ce754afdbccccf8ff0dd0134e50fb44aaae579f96218856e9e5dbd1e" -"checksum unic-char-range 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d9ab85fab42ad1b26cafc03bf891f69cb4d6e15f491030e89a0122197baa8ae8" -"checksum unic-common 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ff8d4a7ade929ef7d971e16ced21a8cd56a63869aa6032dfb8cb083cf7d077bf" -"checksum unic-segment 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c9ca47cbb09fb5fcd066b5867d11dc528302fa465277882797d6a836e1ee6f9e" -"checksum unic-ucd-segment 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "48f1a08ce0409a9e391b88d1930118eec48af12742fc538bcec55f775865776e" -"checksum unic-ucd-version 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1f5e6c6c53c2d0ece4a5964bc55fcff8602153063cb4fab20958ff32998ff6" +"checksum unic-char-property 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "70aaa0e0c676362a3a4945c9f69b095201b11fbe967c7fc0e414b9c8dba89b20" +"checksum unic-char-range 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7232ba52475caa78979e29fcfd596f502e035bca9f8b42ae0061b24f7960c282" +"checksum unic-common 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "927243420dad0c87b8aa487c84d28dc2d66088d5383c1c3f1c352043a4b33b2a" +"checksum unic-segment 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7bf6ab996840832e606c29f54e9b37c2ceb03c24af640b6022b09fdeb0067f7f" +"checksum unic-ucd-segment 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "54959cc93f681cae3d977532c42181a5f363cb95625bfcc71854486e8a5640ff" +"checksum unic-ucd-version 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7f6bfaa7ddcc6772ec63932876639daf4b1eeff7683e15c7f9247724d4a6c910" "checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" "checksum unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9d3218ea14b4edcaccfa0df0a64a3792a2c32cc706f1b336e48867f9d3147f90" "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" -"checksum unicode-normalization 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "6a0180bc61fc5a987082bfa111f4cc95c4caff7f9799f3e46df09163a937aa25" +"checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426" "checksum unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "aa6024fc12ddfd1c6dbc14a80fa2324d4568849869b779f6bd37e5e4c03344d1" "checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" diff --git a/components/errors/Cargo.toml b/components/errors/Cargo.toml index 828b26ef..11b08635 100644 --- a/components/errors/Cargo.toml +++ b/components/errors/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" authors = ["Vincent Prouillet "] [dependencies] -tera = "0.11" +tera = "1.0.0-alpha.3" toml = "0.4" image = "0.21" syntect = "3" diff --git a/components/front_matter/Cargo.toml b/components/front_matter/Cargo.toml index 1de7545a..3b80d83c 100644 --- a/components/front_matter/Cargo.toml +++ b/components/front_matter/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" authors = ["Vincent Prouillet "] [dependencies] -tera = "0.11" +tera = "1.0.0-alpha.3" chrono = "0.4" serde = "1" serde_derive = "1" diff --git a/components/imageproc/Cargo.toml b/components/imageproc/Cargo.toml index 785fc0b1..2a887947 100644 --- a/components/imageproc/Cargo.toml +++ b/components/imageproc/Cargo.toml @@ -6,7 +6,7 @@ authors = ["Vojtěch Král "] [dependencies] lazy_static = "1" regex = "1.0" -tera = "0.11" +tera = "1.0.0-alpha.3" image = "0.21" rayon = "1" diff --git a/components/library/Cargo.toml b/components/library/Cargo.toml index 1391189b..289d3e3f 100644 --- a/components/library/Cargo.toml +++ b/components/library/Cargo.toml @@ -7,7 +7,7 @@ authors = ["Vincent Prouillet "] slotmap = "0.2" rayon = "1" chrono = { version = "0.4", features = ["serde"] } -tera = "0.11" +tera = "1.0.0-alpha.3" serde = "1" serde_derive = "1" slug = "0.1" diff --git a/components/library/src/content/page.rs b/components/library/src/content/page.rs index 9a800148..cc5407c9 100644 --- a/components/library/src/content/page.rs +++ b/components/library/src/content/page.rs @@ -257,7 +257,7 @@ impl Page { context.insert("page", &self.to_serialized(library)); context.insert("lang", &self.lang); - render_template(&tpl_name, tera, &context, &config.theme) + render_template(&tpl_name, tera, context, &config.theme) .map_err(|e| Error::chain(format!("Failed to render page '{}'", self.file.path.display()), e)) } diff --git a/components/library/src/content/section.rs b/components/library/src/content/section.rs index cb2d940a..54056891 100644 --- a/components/library/src/content/section.rs +++ b/components/library/src/content/section.rs @@ -189,7 +189,7 @@ impl Section { context.insert("section", &self.to_serialized(library)); context.insert("lang", &self.lang); - render_template(tpl_name, tera, &context, &config.theme) + render_template(tpl_name, tera, context, &config.theme) .map_err(|e| Error::chain(format!("Failed to render section '{}'", self.file.path.display()), e)) } diff --git a/components/library/src/pagination/mod.rs b/components/library/src/pagination/mod.rs index da2c1c18..6f47cbec 100644 --- a/components/library/src/pagination/mod.rs +++ b/components/library/src/pagination/mod.rs @@ -221,7 +221,7 @@ impl<'a> Paginator<'a> { context.insert("current_path", &pager.path); context.insert("paginator", &self.build_paginator_context(pager)); - render_template(&self.template, tera, &context, &config.theme) + render_template(&self.template, tera, context, &config.theme) .map_err(|e| Error::chain(format!("Failed to render pager {}", pager.index), e)) } } diff --git a/components/library/src/taxonomies/mod.rs b/components/library/src/taxonomies/mod.rs index c44265ca..6d949d36 100644 --- a/components/library/src/taxonomies/mod.rs +++ b/components/library/src/taxonomies/mod.rs @@ -144,7 +144,7 @@ impl Taxonomy { ); context.insert("current_path", &format!("/{}/{}", self.kind.name, item.slug)); - render_template(&format!("{}/single.html", self.kind.name), tera, &context, &config.theme) + render_template(&format!("{}/single.html", self.kind.name), tera, context, &config.theme) .map_err(|e| Error::chain(format!("Failed to render single term {} page.", self.kind.name), e)) } @@ -163,7 +163,7 @@ impl Taxonomy { context.insert("current_url", &config.make_permalink(&self.kind.name)); context.insert("current_path", &self.kind.name); - render_template(&format!("{}/list.html", self.kind.name), tera, &context, &config.theme) + render_template(&format!("{}/list.html", self.kind.name), tera, context, &config.theme) .map_err(|e| Error::chain(format!("Failed to render a list of {} page.", self.kind.name), e)) } diff --git a/components/rendering/Cargo.toml b/components/rendering/Cargo.toml index 21815e10..b0eca64b 100644 --- a/components/rendering/Cargo.toml +++ b/components/rendering/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" authors = ["Vincent Prouillet "] [dependencies] -tera = { version = "0.11", features = ["preserve_order"] } +tera = { version = "1.0.0-alpha.3", features = ["preserve_order"] } syntect = "3" pulldown-cmark = "0.2" slug = "0.1" diff --git a/components/rendering/src/markdown.rs b/components/rendering/src/markdown.rs index 01e31af0..7e7611ff 100644 --- a/components/rendering/src/markdown.rs +++ b/components/rendering/src/markdown.rs @@ -9,7 +9,7 @@ use syntect::html::{ use config::highlighting::{get_highlighter, SYNTAX_SET, THEME_SET}; use context::RenderContext; -use errors::Result; +use errors::{Error, Result}; use front_matter::InsertAnchor; use link_checker::check_url; use table_of_contents::{Header, make_table_of_contents, TempHeader}; @@ -245,7 +245,9 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result"] [dependencies] -tera = "0.11" +tera = "1.0.0-alpha.3" glob = "0.2" rayon = "1" serde = "1" diff --git a/components/site/src/lib.rs b/components/site/src/lib.rs index 5c3a98f8..1406063d 100644 --- a/components/site/src/lib.rs +++ b/components/site/src/lib.rs @@ -329,29 +329,29 @@ impl Site { pub fn register_early_global_fns(&mut self) { self.tera.register_function( "get_url", - global_fns::make_get_url(self.permalinks.clone(), self.config.clone()), + global_fns::GetUrl::new(self.config.clone(), self.permalinks.clone()), ); self.tera.register_function( "resize_image", - global_fns::make_resize_image(self.imageproc.clone()), + global_fns::ResizeImage::new(self.imageproc.clone()), ); self.tera.register_function( "load_data", - global_fns::make_load_data(self.content_path.clone(), self.base_path.clone()), + global_fns::LoadData::new(self.content_path.clone(), self.base_path.clone()), ); - self.tera.register_function("trans", global_fns::make_trans(self.config.clone())); + self.tera.register_function("trans", global_fns::Trans::new(self.config.clone())); self.tera.register_function( "get_taxonomy_url", - global_fns::make_get_taxonomy_url(&self.taxonomies), + global_fns::GetTaxonomyUrl::new(&self.taxonomies), ); } pub fn register_tera_global_fns(&mut self) { - self.tera.register_function("get_page", global_fns::make_get_page(&self.library)); - self.tera.register_function("get_section", global_fns::make_get_section(&self.library)); + self.tera.register_function("get_page", global_fns::GetPage::new(&self.library)); + self.tera.register_function("get_section", global_fns::GetSection::new(&self.library)); self.tera.register_function( "get_taxonomy", - global_fns::make_get_taxonomy(&self.taxonomies, &self.library), + global_fns::GetTaxonomy::new(&self.taxonomies, &self.library), ); } @@ -693,7 +693,7 @@ impl Site { ensure_directory_exists(&self.output_path)?; let mut context = Context::new(); context.insert("config", &self.config); - let output = render_template("404.html", &self.tera, &context, &self.config.theme)?; + let output = render_template("404.html", &self.tera, context, &self.config.theme)?; create_file(&self.output_path.join("404.html"), &self.inject_livereload(output)) } @@ -704,7 +704,7 @@ impl Site { context.insert("config", &self.config); create_file( &self.output_path.join("robots.txt"), - &render_template("robots.txt", &self.tera, &context, &self.config.theme)?, + &render_template("robots.txt", &self.tera, context, &self.config.theme)?, ) } @@ -841,7 +841,7 @@ impl Site { context.insert("taxonomies", &taxonomies); context.insert("config", &self.config); - let sitemap = &render_template("sitemap.xml", &self.tera, &context, &self.config.theme)?; + let sitemap = &render_template("sitemap.xml", &self.tera, context, &self.config.theme)?; create_file(&self.output_path.join("sitemap.xml"), sitemap)?; @@ -891,7 +891,7 @@ impl Site { context.insert("feed_url", &rss_feed_url); - let feed = &render_template("rss.xml", &self.tera, &context, &self.config.theme)?; + let feed = &render_template("rss.xml", &self.tera, context, &self.config.theme)?; if let Some(ref base) = base_path { let mut output_path = self.output_path.clone(); diff --git a/components/templates/Cargo.toml b/components/templates/Cargo.toml index b84e15b4..4f95aaca 100644 --- a/components/templates/Cargo.toml +++ b/components/templates/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" authors = ["Vincent Prouillet "] [dependencies] -tera = "0.11" +tera = "1.0.0-alpha.3" base64 = "0.10" lazy_static = "1" pulldown-cmark = "0.2" diff --git a/components/templates/src/filters.rs b/components/templates/src/filters.rs index 901c0f6f..a8911afa 100644 --- a/components/templates/src/filters.rs +++ b/components/templates/src/filters.rs @@ -4,7 +4,7 @@ use base64::{decode, encode}; use pulldown_cmark as cmark; use tera::{to_value, Result as TeraResult, Value}; -pub fn markdown(value: Value, args: HashMap) -> TeraResult { +pub fn markdown(value: &Value, args: &HashMap) -> TeraResult { let s = try_get_value!("markdown", "value", String, value); let inline = match args.get("inline") { Some(val) => try_get_value!("markdown", "inline", bool, val), @@ -30,12 +30,12 @@ pub fn markdown(value: Value, args: HashMap) -> TeraResult Ok(to_value(&html).unwrap()) } -pub fn base64_encode(value: Value, _: HashMap) -> TeraResult { +pub fn base64_encode(value: &Value, _: &HashMap) -> TeraResult { let s = try_get_value!("base64_encode", "value", String, value); Ok(to_value(&encode(s.as_bytes())).unwrap()) } -pub fn base64_decode(value: Value, _: HashMap) -> TeraResult { +pub fn base64_decode(value: &Value, _: &HashMap) -> TeraResult { let s = try_get_value!("base64_decode", "value", String, value); Ok(to_value(&String::from_utf8(decode(s.as_bytes()).unwrap()).unwrap()).unwrap()) } @@ -50,7 +50,7 @@ mod tests { #[test] fn markdown_filter() { - let result = markdown(to_value(&"# Hey").unwrap(), HashMap::new()); + let result = markdown(&to_value(&"# Hey").unwrap(), &HashMap::new()); assert!(result.is_ok()); assert_eq!(result.unwrap(), to_value(&"

Hey

\n").unwrap()); } @@ -60,8 +60,8 @@ mod tests { let mut args = HashMap::new(); args.insert("inline".to_string(), to_value(true).unwrap()); let result = markdown( - to_value(&"Using `map`, `filter`, and `fold` instead of `for`").unwrap(), - args, + &to_value(&"Using `map`, `filter`, and `fold` instead of `for`").unwrap(), + &args, ); assert!(result.is_ok()); assert_eq!(result.unwrap(), to_value(&"Using map, filter, and fold instead of for").unwrap()); @@ -73,7 +73,7 @@ mod tests { let mut args = HashMap::new(); args.insert("inline".to_string(), to_value(true).unwrap()); let result = markdown( - to_value( + &to_value( &r#" |id|author_id| timestamp_created|title |content | |-:|--------:|-----------------------:|:---------------------|:-----------------| @@ -82,7 +82,7 @@ mod tests { "#, ) .unwrap(), - args, + &args, ); assert!(result.is_ok()); assert!(result.unwrap().as_str().unwrap().contains("")); @@ -102,7 +102,7 @@ mod tests { ]; for (input, expected) in tests { let args = HashMap::new(); - let result = base64_encode(to_value(input).unwrap(), args); + let result = base64_encode(&to_value(input).unwrap(), &args); assert!(result.is_ok()); assert_eq!(result.unwrap(), to_value(expected).unwrap()); } @@ -121,7 +121,7 @@ mod tests { ]; for (input, expected) in tests { let args = HashMap::new(); - let result = base64_decode(to_value(input).unwrap(), args); + let result = base64_decode(&to_value(input).unwrap(), &args); assert!(result.is_ok()); assert_eq!(result.unwrap(), to_value(expected).unwrap()); } diff --git a/components/templates/src/global_fns/load_data.rs b/components/templates/src/global_fns/load_data.rs index e6ad349e..4fec8a9e 100644 --- a/components/templates/src/global_fns/load_data.rs +++ b/components/templates/src/global_fns/load_data.rs @@ -16,7 +16,7 @@ use std::sync::{Arc, Mutex}; use csv::Reader; use std::collections::HashMap; -use tera::{from_value, to_value, Error, GlobalFn, Map, Result, Value}; +use tera::{from_value, to_value, Error, Function as TeraFn, Map, Result, Value}; static GET_DATA_ARGUMENT_ERROR_MESSAGE: &str = "`load_data`: requires EITHER a `path` or `url` argument"; @@ -170,28 +170,37 @@ fn get_output_format_from_args( OutputFormat::from_str(from_extension) } -/// A global function to load data from a file or from a URL +/// A Tera function to load data from a file or from a URL /// Currently the supported formats are json, toml, csv and plain text -pub fn make_load_data(content_path: PathBuf, base_path: PathBuf) -> GlobalFn { - let mut headers = header::HeaderMap::new(); - headers.insert(header::USER_AGENT, "zola".parse().unwrap()); - let client = Arc::new(Mutex::new(Client::builder().build().expect("reqwest client build"))); - let result_cache: Arc>> = Arc::new(Mutex::new(HashMap::new())); - Box::new(move |args| -> Result { - let data_source = get_data_source_from_args(&content_path, &args)?; +#[derive(Debug)] +pub struct LoadData { + content_path: PathBuf, + base_path: PathBuf, + client: Arc>, + result_cache: Arc>>, +} +impl LoadData { + pub fn new(content_path: PathBuf, base_path: PathBuf) -> Self { + let client = Arc::new(Mutex::new(Client::builder().build().expect("reqwest client build"))); + let result_cache = Arc::new(Mutex::new(HashMap::new())); + Self {content_path, base_path, client, result_cache} + } +} +impl TeraFn for LoadData { + fn call(&self, args: &HashMap) -> Result { + let data_source = get_data_source_from_args(&self.content_path, &args)?; let file_format = get_output_format_from_args(&args, &data_source)?; - let cache_key = data_source.get_cache_key(&file_format); - let mut cache = result_cache.lock().expect("result cache lock"); - let response_client = client.lock().expect("response client lock"); + let mut cache = self.result_cache.lock().expect("result cache lock"); + let response_client = self.client.lock().expect("response client lock"); if let Some(cached_result) = cache.get(&cache_key) { return Ok(cached_result.clone()); } let data = match data_source { - DataSource::Path(path) => read_data_file(&base_path, path), + DataSource::Path(path) => read_data_file(&self.base_path, path), DataSource::Url(url) => { let mut response = response_client .get(url.as_str()) @@ -223,7 +232,7 @@ pub fn make_load_data(content_path: PathBuf, base_path: PathBuf) -> GlobalFn { } result_value - }) + } } /// Parse a JSON string and convert it to a Tera Value @@ -301,12 +310,12 @@ fn load_csv(csv_data: String) -> Result { #[cfg(test)] mod tests { - use super::{make_load_data, DataSource, OutputFormat}; + use super::{LoadData, DataSource, OutputFormat}; use std::collections::HashMap; use std::path::PathBuf; - use tera::to_value; + use tera::{to_value, Function}; fn get_test_file(filename: &str) -> PathBuf { let test_files = PathBuf::from("../utils/test-files").canonicalize().unwrap(); @@ -316,26 +325,26 @@ mod tests { #[test] fn fails_when_missing_file() { let static_fn = - make_load_data(PathBuf::from("../utils/test-files"), PathBuf::from("../utils")); + LoadData::new(PathBuf::from("../utils/test-files"), PathBuf::from("../utils")); let mut args = HashMap::new(); args.insert("path".to_string(), to_value("../../../READMEE.md").unwrap()); - let result = static_fn(args); + let result = static_fn.call(&args); assert!(result.is_err()); - assert!(result.unwrap_err().description().contains("READMEE.md doesn't exist")); + assert!(result.unwrap_err().to_string().contains("READMEE.md doesn't exist")); } #[test] fn cant_load_outside_content_dir() { let static_fn = - make_load_data(PathBuf::from("../utils/test-files"), PathBuf::from("../utils")); + LoadData::new(PathBuf::from("../utils/test-files"), PathBuf::from("../utils")); let mut args = HashMap::new(); args.insert("path".to_string(), to_value("../../../README.md").unwrap()); args.insert("format".to_string(), to_value("plain").unwrap()); - let result = static_fn(args); + let result = static_fn.call(&args); assert!(result.is_err()); assert!(result .unwrap_err() - .description() + .to_string() .contains("README.md is not inside the base site directory")); } @@ -377,11 +386,11 @@ mod tests { #[test] fn can_load_remote_data() { - let static_fn = make_load_data(PathBuf::new(), PathBuf::new()); + let static_fn = LoadData::new(PathBuf::new(), PathBuf::new()); let mut args = HashMap::new(); args.insert("url".to_string(), to_value("https://httpbin.org/json").unwrap()); args.insert("format".to_string(), to_value("json").unwrap()); - let result = static_fn(args).unwrap(); + let result = static_fn.call(&args).unwrap(); assert_eq!( result.get("slideshow").unwrap().get("title").unwrap(), &to_value("Sample Slide Show").unwrap() @@ -390,29 +399,29 @@ mod tests { #[test] fn fails_when_request_404s() { - let static_fn = make_load_data(PathBuf::new(), PathBuf::new()); + let static_fn = LoadData::new(PathBuf::new(), PathBuf::new()); let mut args = HashMap::new(); args.insert("url".to_string(), to_value("https://httpbin.org/status/404/").unwrap()); args.insert("format".to_string(), to_value("json").unwrap()); - let result = static_fn(args); + let result = static_fn.call(&args); assert!(result.is_err()); assert_eq!( - result.unwrap_err().description(), + result.unwrap_err().to_string(), "Failed to request https://httpbin.org/status/404/: 404 Not Found" ); } #[test] fn can_load_toml() { - let static_fn = make_load_data( + let static_fn = LoadData::new( PathBuf::from("../utils/test-files"), PathBuf::from("../utils/test-files"), ); let mut args = HashMap::new(); args.insert("path".to_string(), to_value("test.toml").unwrap()); - let result = static_fn(args.clone()).unwrap(); + let result = static_fn.call(&args.clone()).unwrap(); - //TOML does not load in order + // TOML does not load in order assert_eq!( result, json!({ @@ -426,13 +435,13 @@ mod tests { #[test] fn can_load_csv() { - let static_fn = make_load_data( + let static_fn = LoadData::new( PathBuf::from("../utils/test-files"), PathBuf::from("../utils/test-files"), ); let mut args = HashMap::new(); args.insert("path".to_string(), to_value("test.csv").unwrap()); - let result = static_fn(args.clone()).unwrap(); + let result = static_fn.call(&args.clone()).unwrap(); assert_eq!( result, @@ -448,13 +457,13 @@ mod tests { #[test] fn can_load_json() { - let static_fn = make_load_data( + let static_fn = LoadData::new( PathBuf::from("../utils/test-files"), PathBuf::from("../utils/test-files"), ); let mut args = HashMap::new(); args.insert("path".to_string(), to_value("test.json").unwrap()); - let result = static_fn(args.clone()).unwrap(); + let result = static_fn.call(&args.clone()).unwrap(); assert_eq!( result, diff --git a/components/templates/src/global_fns/mod.rs b/components/templates/src/global_fns/mod.rs index ffb390b5..533173ba 100644 --- a/components/templates/src/global_fns/mod.rs +++ b/components/templates/src/global_fns/mod.rs @@ -1,7 +1,7 @@ use std::collections::HashMap; use std::sync::{Arc, Mutex}; -use tera::{from_value, to_value, GlobalFn, Result, Value}; +use tera::{from_value, to_value, Function as TeraFn, Result, Value}; use config::Config; use library::{Library, Taxonomy}; @@ -14,82 +14,39 @@ mod macros; mod load_data; -pub use self::load_data::make_load_data; + pub use self::load_data::LoadData; -pub fn make_trans(config: Config) -> GlobalFn { - let translations_config = config.translations; - let default_lang = config.default_language.clone(); - - Box::new(move |args| -> Result { +#[derive(Debug)] +pub struct Trans { + config: Config, +} +impl Trans { + pub fn new(config: Config) -> Self { + Self {config} + } +} +impl TeraFn for Trans { + fn call(&self, args: &HashMap) -> Result { let key = required_arg!(String, args.get("key"), "`trans` requires a `key` argument."); let lang = optional_arg!(String, args.get("lang"), "`trans`: `lang` must be a string.") - .unwrap_or_else(|| default_lang.clone()); - let translations = &translations_config[lang.as_str()]; + .unwrap_or_else(|| self.config.default_language.clone()); + let translations = &self.config.translations[lang.as_str()]; Ok(to_value(&translations[key.as_str()]).unwrap()) - }) -} - -pub fn make_get_page(library: &Library) -> GlobalFn { - let mut pages = HashMap::new(); - for page in library.pages_values() { - pages.insert( - page.file.relative.clone(), - to_value(library.get_page(&page.file.path).unwrap().to_serialized(library)).unwrap(), - ); } - - Box::new(move |args| -> Result { - let path = required_arg!( - String, - args.get("path"), - "`get_page` requires a `path` argument with a string value" - ); - match pages.get(&path) { - Some(p) => Ok(p.clone()), - None => Err(format!("Page `{}` not found.", path).into()), - } - }) } -pub fn make_get_section(library: &Library) -> GlobalFn { - let mut sections = HashMap::new(); - let mut sections_basic = HashMap::new(); - for section in library.sections_values() { - sections.insert( - section.file.relative.clone(), - to_value(library.get_section(§ion.file.path).unwrap().to_serialized(library)) - .unwrap(), - ); - - sections_basic.insert( - section.file.relative.clone(), - to_value(library.get_section(§ion.file.path).unwrap().to_serialized_basic(library)) - .unwrap(), - ); +#[derive(Debug)] +pub struct GetUrl { + config: Config, + permalinks: HashMap, +} +impl GetUrl { + pub fn new(config: Config, permalinks: HashMap) -> Self { + Self {config, permalinks} } - - Box::new(move |args| -> Result { - let path = required_arg!( - String, - args.get("path"), - "`get_section` requires a `path` argument with a string value" - ); - - let metadata_only = args - .get("metadata_only") - .map_or(false, |c| from_value::(c.clone()).unwrap_or(false)); - - let container = if metadata_only { §ions_basic } else { §ions }; - - match container.get(&path) { - Some(p) => Ok(p.clone()), - None => Err(format!("Section `{}` not found.", path).into()), - } - }) } - -pub fn make_get_url(permalinks: HashMap, config: Config) -> GlobalFn { - Box::new(move |args| -> Result { +impl TeraFn for GetUrl { + fn call(&self, args: &HashMap) -> Result { let cachebust = args.get("cachebust").map_or(false, |c| from_value::(c.clone()).unwrap_or(false)); @@ -103,7 +60,7 @@ pub fn make_get_url(permalinks: HashMap, config: Config) -> Glob "`get_url` requires a `path` argument with a string value" ); if path.starts_with("./") { - match resolve_internal_link(&path, &permalinks) { + match resolve_internal_link(&path, &self.permalinks) { Ok(url) => Ok(to_value(url).unwrap()), Err(_) => { Err(format!("Could not resolve URL for link `{}` not found.", path).into()) @@ -111,93 +68,35 @@ pub fn make_get_url(permalinks: HashMap, config: Config) -> Glob } } else { // anything else - let mut permalink = config.make_permalink(&path); + let mut permalink = self.config.make_permalink(&path); if !trailing_slash && permalink.ends_with('/') { permalink.pop(); // Removes the slash } if cachebust { - permalink = format!("{}?t={}", permalink, config.build_timestamp.unwrap()); + permalink = format!("{}?t={}", permalink, self.config.build_timestamp.unwrap()); } Ok(to_value(permalink).unwrap()) } - }) -} - -pub fn make_get_taxonomy(all_taxonomies: &[Taxonomy], library: &Library) -> GlobalFn { - let mut taxonomies = HashMap::new(); - for taxonomy in all_taxonomies { - taxonomies - .insert(taxonomy.kind.name.clone(), to_value(taxonomy.to_serialized(library)).unwrap()); } - - Box::new(move |args| -> Result { - let kind = required_arg!( - String, - args.get("kind"), - "`get_taxonomy` requires a `kind` argument with a string value" - ); - let container = match taxonomies.get(&kind) { - Some(c) => c, - None => { - return Err(format!( - "`get_taxonomy` received an unknown taxonomy as kind: {}", - kind - ) - .into()); - } - }; - - Ok(to_value(container).unwrap()) - }) } -pub fn make_get_taxonomy_url(all_taxonomies: &[Taxonomy]) -> GlobalFn { - let mut taxonomies = HashMap::new(); - for taxonomy in all_taxonomies { - let mut items = HashMap::new(); - for item in &taxonomy.items { - items.insert(item.name.clone(), item.permalink.clone()); - } - taxonomies.insert(taxonomy.kind.name.clone(), items); +#[derive(Debug)] +pub struct ResizeImage { + imageproc: Arc>, +} +impl ResizeImage { + pub fn new(imageproc: Arc>) -> Self { + Self {imageproc} } - - Box::new(move |args| -> Result { - let kind = required_arg!( - String, - args.get("kind"), - "`get_taxonomy_url` requires a `kind` argument with a string value" - ); - let name = required_arg!( - String, - args.get("name"), - "`get_taxonomy_url` requires a `name` argument with a string value" - ); - let container = match taxonomies.get(&kind) { - Some(c) => c, - None => { - return Err(format!( - "`get_taxonomy_url` received an unknown taxonomy as kind: {}", - kind - ) - .into()); - } - }; - - if let Some(permalink) = container.get(&name) { - return Ok(to_value(permalink).unwrap()); - } - - Err(format!("`get_taxonomy_url`: couldn't find `{}` in `{}` taxonomy", name, kind).into()) - }) } -pub fn make_resize_image(imageproc: Arc>) -> GlobalFn { - static DEFAULT_OP: &'static str = "fill"; - static DEFAULT_FMT: &'static str = "auto"; - const DEFAULT_Q: u8 = 75; +static DEFAULT_OP: &'static str = "fill"; +static DEFAULT_FMT: &'static str = "auto"; +const DEFAULT_Q: u8 = 75; - Box::new(move |args| -> Result { +impl TeraFn for ResizeImage { + fn call(&self, args: &HashMap) -> Result { let path = required_arg!( String, args.get("path"), @@ -227,7 +126,7 @@ pub fn make_resize_image(imageproc: Arc>) -> GlobalF return Err("`resize_image`: `quality` must be in range 1-100".to_string().into()); } - let mut imageproc = imageproc.lock().unwrap(); + let mut imageproc = self.imageproc.lock().unwrap(); if !imageproc.source_exists(&path) { return Err(format!("`resize_image`: Cannot find path: {}", path).into()); } @@ -237,16 +136,178 @@ pub fn make_resize_image(imageproc: Arc>) -> GlobalF let url = imageproc.insert(imageop); to_value(url).map_err(|err| err.into()) - }) + } +} + +#[derive(Debug)] +pub struct GetTaxonomyUrl { + taxonomies: HashMap>, +} +impl GetTaxonomyUrl { + pub fn new(all_taxonomies: &[Taxonomy]) -> Self { + let mut taxonomies = HashMap::new(); + for taxonomy in all_taxonomies { + let mut items = HashMap::new(); + for item in &taxonomy.items { + items.insert(item.name.clone(), item.permalink.clone()); + } + taxonomies.insert(taxonomy.kind.name.clone(), items); + } + Self {taxonomies} + } +} +impl TeraFn for GetTaxonomyUrl { + fn call(&self, args: &HashMap) -> Result { + let kind = required_arg!( + String, + args.get("kind"), + "`get_taxonomy_url` requires a `kind` argument with a string value" + ); + let name = required_arg!( + String, + args.get("name"), + "`get_taxonomy_url` requires a `name` argument with a string value" + ); + let container = match self.taxonomies.get(&kind) { + Some(c) => c, + None => { + return Err(format!( + "`get_taxonomy_url` received an unknown taxonomy as kind: {}", + kind + ) + .into()); + } + }; + + if let Some(permalink) = container.get(&name) { + return Ok(to_value(permalink).unwrap()); + } + + Err(format!("`get_taxonomy_url`: couldn't find `{}` in `{}` taxonomy", name, kind).into()) + } +} + + +#[derive(Debug)] +pub struct GetPage { + pages: HashMap, +} +impl GetPage { + pub fn new(library: &Library) -> Self { + let mut pages = HashMap::new(); + for page in library.pages_values() { + pages.insert( + page.file.relative.clone(), + to_value(library.get_page(&page.file.path).unwrap().to_serialized(library)).unwrap(), + ); + } + Self {pages} + } +} +impl TeraFn for GetPage { + fn call(&self, args: &HashMap) -> Result { + let path = required_arg!( + String, + args.get("path"), + "`get_page` requires a `path` argument with a string value" + ); + match self.pages.get(&path) { + Some(p) => Ok(p.clone()), + None => Err(format!("Page `{}` not found.", path).into()), + } + } +} + +#[derive(Debug)] +pub struct GetSection { + sections: HashMap, + sections_basic: HashMap, +} +impl GetSection { + pub fn new(library: &Library) -> Self { + let mut sections = HashMap::new(); + let mut sections_basic = HashMap::new(); + for section in library.sections_values() { + sections.insert( + section.file.relative.clone(), + to_value(library.get_section(§ion.file.path).unwrap().to_serialized(library)) + .unwrap(), + ); + + sections_basic.insert( + section.file.relative.clone(), + to_value(library.get_section(§ion.file.path).unwrap().to_serialized_basic(library)) + .unwrap(), + ); + } + Self {sections, sections_basic} + } +} +impl TeraFn for GetSection { + fn call(&self, args: &HashMap) -> Result { + let path = required_arg!( + String, + args.get("path"), + "`get_section` requires a `path` argument with a string value" + ); + + let metadata_only = args + .get("metadata_only") + .map_or(false, |c| from_value::(c.clone()).unwrap_or(false)); + + let container = if metadata_only { &self.sections_basic } else { &self.sections }; + + match container.get(&path) { + Some(p) => Ok(p.clone()), + None => Err(format!("Section `{}` not found.", path).into()), + } + } +} + + +#[derive(Debug)] +pub struct GetTaxonomy { + taxonomies: HashMap, +} +impl GetTaxonomy { + pub fn new(all_taxonomies: &[Taxonomy], library: &Library) -> Self { + let mut taxonomies = HashMap::new(); + for taxonomy in all_taxonomies { + taxonomies + .insert(taxonomy.kind.name.clone(), to_value(taxonomy.to_serialized(library)).unwrap()); + } + Self {taxonomies} + } +} +impl TeraFn for GetTaxonomy { + fn call(&self, args: &HashMap) -> Result { + let kind = required_arg!( + String, + args.get("kind"), + "`get_taxonomy` requires a `kind` argument with a string value" + ); + let container = match self.taxonomies.get(&kind) { + Some(c) => c, + None => { + return Err(format!( + "`get_taxonomy` received an unknown taxonomy as kind: {}", + kind + ) + .into()); + } + }; + + Ok(to_value(container).unwrap()) + } } #[cfg(test)] mod tests { - use super::{make_get_taxonomy, make_get_taxonomy_url, make_get_url, make_trans}; + use super::{GetTaxonomy, GetTaxonomyUrl, GetUrl, Trans}; use std::collections::HashMap; - use tera::{to_value, Value}; + use tera::{to_value, Value, Function}; use config::{Config, Taxonomy as TaxonomyConfig}; use library::{Library, Taxonomy, TaxonomyItem}; @@ -254,41 +315,41 @@ mod tests { #[test] fn can_add_cachebust_to_url() { let config = Config::default(); - let static_fn = make_get_url(HashMap::new(), config); + let static_fn = GetUrl::new(config, HashMap::new()); let mut args = HashMap::new(); args.insert("path".to_string(), to_value("app.css").unwrap()); args.insert("cachebust".to_string(), to_value(true).unwrap()); - assert_eq!(static_fn(args).unwrap(), "http://a-website.com/app.css?t=1"); + assert_eq!(static_fn.call(&args).unwrap(), "http://a-website.com/app.css?t=1"); } #[test] fn can_add_trailing_slashes() { let config = Config::default(); - let static_fn = make_get_url(HashMap::new(), config); + let static_fn = GetUrl::new(config, HashMap::new()); let mut args = HashMap::new(); args.insert("path".to_string(), to_value("app.css").unwrap()); args.insert("trailing_slash".to_string(), to_value(true).unwrap()); - assert_eq!(static_fn(args).unwrap(), "http://a-website.com/app.css/"); + assert_eq!(static_fn.call(&args).unwrap(), "http://a-website.com/app.css/"); } #[test] fn can_add_slashes_and_cachebust() { let config = Config::default(); - let static_fn = make_get_url(HashMap::new(), config); + let static_fn = GetUrl::new(config, HashMap::new()); let mut args = HashMap::new(); args.insert("path".to_string(), to_value("app.css").unwrap()); args.insert("trailing_slash".to_string(), to_value(true).unwrap()); args.insert("cachebust".to_string(), to_value(true).unwrap()); - assert_eq!(static_fn(args).unwrap(), "http://a-website.com/app.css/?t=1"); + assert_eq!(static_fn.call(&args).unwrap(), "http://a-website.com/app.css/?t=1"); } #[test] fn can_link_to_some_static_file() { let config = Config::default(); - let static_fn = make_get_url(HashMap::new(), config); + let static_fn = GetUrl::new(config, HashMap::new()); let mut args = HashMap::new(); args.insert("path".to_string(), to_value("app.css").unwrap()); - assert_eq!(static_fn(args).unwrap(), "http://a-website.com/app.css"); + assert_eq!(static_fn.call(&args).unwrap(), "http://a-website.com/app.css"); } #[test] @@ -299,11 +360,11 @@ mod tests { let tags = Taxonomy { kind: taxo_config, items: vec![tag] }; let taxonomies = vec![tags.clone()]; - let static_fn = make_get_taxonomy(&taxonomies, &library); + let static_fn = GetTaxonomy::new(&taxonomies, &library); // can find it correctly let mut args = HashMap::new(); args.insert("kind".to_string(), to_value("tags").unwrap()); - let res = static_fn(args).unwrap(); + let res = static_fn.call(&args).unwrap(); let res_obj = res.as_object().unwrap(); assert_eq!(res_obj["kind"], to_value(tags.kind).unwrap()); assert_eq!(res_obj["items"].clone().as_array().unwrap().len(), 1); @@ -327,7 +388,7 @@ mod tests { // and errors if it can't find it let mut args = HashMap::new(); args.insert("kind".to_string(), to_value("something-else").unwrap()); - assert!(static_fn(args).is_err()); + assert!(static_fn.call(&args).is_err()); } #[test] @@ -338,20 +399,20 @@ mod tests { let tags = Taxonomy { kind: taxo_config, items: vec![tag] }; let taxonomies = vec![tags.clone()]; - let static_fn = make_get_taxonomy_url(&taxonomies); + let static_fn = GetTaxonomyUrl::new(&taxonomies); // can find it correctly let mut args = HashMap::new(); args.insert("kind".to_string(), to_value("tags").unwrap()); args.insert("name".to_string(), to_value("Programming").unwrap()); assert_eq!( - static_fn(args).unwrap(), + static_fn.call(&args).unwrap(), to_value("http://a-website.com/tags/programming/").unwrap() ); // and errors if it can't find it let mut args = HashMap::new(); args.insert("kind".to_string(), to_value("tags").unwrap()); args.insert("name".to_string(), to_value("random").unwrap()); - assert!(static_fn(args).is_err()); + assert!(static_fn.call(&args).is_err()); } #[test] @@ -370,16 +431,16 @@ title = "A title" "#; let config = Config::parse(trans_config).unwrap(); - let static_fn = make_trans(config); + let static_fn = Trans::new(config); let mut args = HashMap::new(); args.insert("key".to_string(), to_value("title").unwrap()); - assert_eq!(static_fn(args.clone()).unwrap(), "Un titre"); + assert_eq!(static_fn.call(&args).unwrap(), "Un titre"); args.insert("lang".to_string(), to_value("en").unwrap()); - assert_eq!(static_fn(args.clone()).unwrap(), "A title"); + assert_eq!(static_fn.call(&args).unwrap(), "A title"); args.insert("lang".to_string(), to_value("fr").unwrap()); - assert_eq!(static_fn(args.clone()).unwrap(), "Un titre"); + assert_eq!(static_fn.call(&args).unwrap(), "Un titre"); } } diff --git a/components/templates/src/lib.rs b/components/templates/src/lib.rs index c9c48ca9..9f54ca87 100644 --- a/components/templates/src/lib.rs +++ b/components/templates/src/lib.rs @@ -65,6 +65,6 @@ pub fn render_redirect_template(url: &str, tera: &Tera) -> Result { let mut context = Context::new(); context.insert("url", &url); - tera.render("internal/alias.html", &context) + tera.render("internal/alias.html", context) .map_err(|e| Error::chain(format!("Failed to render alias for '{}'", url), e)) } diff --git a/components/utils/Cargo.toml b/components/utils/Cargo.toml index e6c558da..9759871d 100644 --- a/components/utils/Cargo.toml +++ b/components/utils/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Vincent Prouillet "] [dependencies] errors = { path = "../errors" } -tera = "0.11" +tera = "1.0.0-alpha.3" unicode-segmentation = "1.2" walkdir = "2" toml = "0.4" diff --git a/components/utils/src/templates.rs b/components/utils/src/templates.rs index b2f4c418..3b36698b 100644 --- a/components/utils/src/templates.rs +++ b/components/utils/src/templates.rs @@ -11,7 +11,7 @@ macro_rules! render_default_tpl { let mut context = Context::new(); context.insert("filename", $filename); context.insert("url", $url); - Tera::one_off(DEFAULT_TPL, &context, true).map_err(|e| e.into()) + Tera::one_off(DEFAULT_TPL, context, true).map_err(|e| e.into()) }}; } @@ -22,7 +22,7 @@ macro_rules! render_default_tpl { pub fn render_template( name: &str, tera: &Tera, - context: &Context, + context: Context, theme: &Option, ) -> Result { // check if it is in the templates From 986c49daf1474c2fb516aaa0441ef64837fe804c Mon Sep 17 00:00:00 2001 From: Robert O'Callahan Date: Fri, 25 Jan 2019 13:47:30 +1300 Subject: [PATCH 25/74] Fix --watch-only to actually rebuild the site --- src/cmd/serve.rs | 112 ++++++++++++++++++++++------------------------- 1 file changed, 52 insertions(+), 60 deletions(-) diff --git a/src/cmd/serve.rs b/src/cmd/serve.rs index 43408ef8..2deba227 100644 --- a/src/cmd/serve.rs +++ b/src/cmd/serve.rs @@ -90,23 +90,25 @@ fn livereload_handler(_: &HttpRequest) -> &'static str { LIVE_RELOAD } -fn rebuild_done_handling(broadcaster: &Sender, res: Result<()>, reload_path: &str) { +fn rebuild_done_handling(broadcaster: &Option, res: Result<()>, reload_path: &str) { match res { Ok(_) => { - broadcaster - .send(format!( - r#" - {{ - "command": "reload", - "path": "{}", - "originalPath": "", - "liveCSS": true, - "liveImg": true, - "protocol": ["http://livereload.com/protocols/official-7"] - }}"#, - reload_path - )) - .unwrap(); + if let Some(broadcaster) = broadcaster.as_ref() { + broadcaster + .send(format!( + r#" + {{ + "command": "reload", + "path": "{}", + "originalPath": "", + "liveCSS": true, + "liveImg": true, + "protocol": ["http://livereload.com/protocols/official-7"] + }}"#, + reload_path + )) + .unwrap(); + } } Err(e) => console::unravel_errors("Failed to build the site", &e), } @@ -293,14 +295,12 @@ pub fn serve( format!("-> Template changed {}", path.display()) }; console::info(&msg); - if let Some(ref broadcaster) = broadcaster { - // Force refresh - rebuild_done_handling( - broadcaster, - rebuild::after_template_change(site, &path), - "/x.js", - ); - } + // Force refresh + rebuild_done_handling( + &broadcaster, + rebuild::after_template_change(site, &path), + "/x.js", + ); }; let reload_sass = |site: &Site, path: &Path, partial_path: &Path| { @@ -310,13 +310,11 @@ pub fn serve( format!("-> Sass file changed {}", path.display()) }; console::info(&msg); - if let Some(ref broadcaster) = broadcaster { - rebuild_done_handling( - &broadcaster, - site.compile_sass(&site.base_path), - &partial_path.to_string_lossy(), - ); - } + rebuild_done_handling( + &broadcaster, + site.compile_sass(&site.base_path), + &partial_path.to_string_lossy(), + ); }; let copy_static = |site: &Site, path: &Path, partial_path: &Path| { @@ -332,20 +330,18 @@ pub fn serve( }; console::info(&msg); - if let Some(ref broadcaster) = broadcaster { - if path.is_dir() { - rebuild_done_handling( - broadcaster, - site.copy_static_directories(), - &path.to_string_lossy(), - ); - } else { - rebuild_done_handling( - broadcaster, - copy_file(&path, &site.output_path, &site.static_path), - &partial_path.to_string_lossy(), - ); - } + if path.is_dir() { + rebuild_done_handling( + &broadcaster, + site.copy_static_directories(), + &path.to_string_lossy(), + ); + } else { + rebuild_done_handling( + &broadcaster, + copy_file(&path, &site.output_path, &site.static_path), + &partial_path.to_string_lossy(), + ); } }; @@ -373,14 +369,12 @@ pub fn serve( match change_kind { ChangeKind::Content => { console::info(&format!("-> Content renamed {}", path.display())); - if let Some(ref broadcaster) = broadcaster { - // Force refresh - rebuild_done_handling( - broadcaster, - rebuild::after_content_rename(&mut site, &old_path, &path), - "/x.js", - ); - } + // Force refresh + rebuild_done_handling( + &broadcaster, + rebuild::after_content_rename(&mut site, &old_path, &path), + "/x.js", + ); } ChangeKind::Templates => reload_templates(&mut site, &path), ChangeKind::StaticFiles => copy_static(&site, &path, &partial_path), @@ -414,14 +408,12 @@ pub fn serve( match detect_change_kind(&pwd, &path) { (ChangeKind::Content, _) => { console::info(&format!("-> Content changed {}", path.display())); - if let Some(ref broadcaster) = broadcaster { - // Force refresh - rebuild_done_handling( - broadcaster, - rebuild::after_content_change(&mut site, &path), - "/x.js", - ); - } + // Force refresh + rebuild_done_handling( + &broadcaster, + rebuild::after_content_change(&mut site, &path), + "/x.js", + ); } (ChangeKind::Templates, _) => reload_templates(&mut site, &path), (ChangeKind::StaticFiles, p) => copy_static(&site, &path, &p), From 702b9310792c8c88bc3b87c34e7d0261dfac46cf Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Fri, 25 Jan 2019 14:54:53 +0100 Subject: [PATCH 26/74] Update deps --- Cargo.lock | 146 ++++++++++++++++++++++++++++++++++------------------- 1 file changed, 94 insertions(+), 52 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b1766344..46c0ca1b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -66,7 +66,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "actix 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)", "actix-net 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "base64 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -75,7 +75,7 @@ dependencies = [ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "h2 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "h2 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -92,7 +92,7 @@ dependencies = [ "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.36 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", "serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -219,7 +219,7 @@ dependencies = [ [[package]] name = "base64" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -519,10 +519,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rust-stemmers 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rust-stemmers 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.36 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", "strum 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "strum_macros 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -606,7 +606,7 @@ version = "0.1.0" dependencies = [ "image 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", "syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -684,7 +684,7 @@ dependencies = [ "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -802,7 +802,7 @@ dependencies = [ [[package]] name = "h2" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -877,13 +877,13 @@ dependencies = [ [[package]] name = "hyper" -version = "0.12.21" +version = "0.12.23" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "h2 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "h2 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -908,7 +908,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.21 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.23 (registry+https://github.com/rust-lang/crates.io-index)", "native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -967,7 +967,7 @@ dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -1098,7 +1098,7 @@ dependencies = [ "slotmap 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -1108,7 +1108,7 @@ name = "link_checker" version = "0.1.0" dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "reqwest 0.9.8 (registry+https://github.com/rust-lang/crates.io-index)", + "reqwest 0.9.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1170,7 +1170,7 @@ dependencies = [ "phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.36 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "tendril 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1647,7 +1647,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1672,7 +1672,7 @@ dependencies = [ "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_os 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1687,7 +1687,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1695,12 +1695,20 @@ name = "rand_core" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_core" -version = "0.3.0" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_core" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1708,7 +1716,7 @@ name = "rand_hc" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1716,7 +1724,7 @@ name = "rand_isaac" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1727,7 +1735,7 @@ dependencies = [ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1737,7 +1745,7 @@ name = "rand_pcg" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1746,7 +1754,7 @@ name = "rand_xorshift" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1775,7 +1783,7 @@ name = "rdrand" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1849,21 +1857,21 @@ dependencies = [ "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "templates 0.1.0", - "tera 1.0.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] [[package]] name = "reqwest" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "base64 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "encoding_rs 0.8.14 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.21 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.23 (registry+https://github.com/rust-lang/crates.io-index)", "hyper-tls 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "libflate 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1871,7 +1879,7 @@ dependencies = [ "mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", "native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.36 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", "serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1893,7 +1901,7 @@ dependencies = [ [[package]] name = "rust-stemmers" -version = "1.0.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2036,7 +2044,7 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2103,7 +2111,7 @@ dependencies = [ "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "templates 0.1.0", - "tera 1.0.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -2243,7 +2251,7 @@ dependencies = [ "regex-syntax 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.36 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "yaml-rust 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2265,7 +2273,7 @@ dependencies = [ name = "templates" version = "0.1.0" dependencies = [ - "base64 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "config 0.1.0", "csv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "errors 0.1.0", @@ -2273,9 +2281,9 @@ dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "library 0.1.0", "pulldown-cmark 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "reqwest 0.9.8 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.36 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", + "reqwest 0.9.9 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", @@ -2293,7 +2301,7 @@ dependencies = [ [[package]] name = "tera" -version = "1.0.0-alpha.3" +version = "1.0.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2304,11 +2312,11 @@ dependencies = [ "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.36 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "unic-segment 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "v_htmlescape 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "v_htmlescape 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2766,7 +2774,7 @@ dependencies = [ "errors 0.1.0", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2789,6 +2797,15 @@ dependencies = [ "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "v_escape" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "v_escape_derive 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "v_escape_derive" version = "0.2.1" @@ -2800,6 +2817,17 @@ dependencies = [ "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "v_escape_derive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "nom 4.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "v_htmlescape" version = "0.3.2" @@ -2810,6 +2838,16 @@ dependencies = [ "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "v_htmlescape" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "v_escape 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "vcpkg" version = "0.2.6" @@ -2998,7 +3036,7 @@ dependencies = [ "checksum autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a6d640bee2da49f60a4068a7fae53acde8982514ab7bae8b8cea9e88cbcfd799" "checksum backtrace 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "b5b493b66e03090ebc4343eb02f94ff944e0cbc9ac6571491d170ba026741eb5" "checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" -"checksum base64 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "621fc7ecb8008f86d7fb9b95356cd692ce9514b80a86d85b397f32a22da7b9e2" +"checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" "checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" "checksum bincode 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9f2fb9e29e72fd6bc12071533d5dc7664cb01480c59406f656d7ac25c7bd8ff7" "checksum bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d" @@ -3066,7 +3104,7 @@ dependencies = [ "checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" "checksum globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4743617a7464bbda3c8aec8558ff2f9429047e025771037df561d383337ff865" "checksum globwalk 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4be0267260c9bb4e278dfb2291de9518a595cb625cf6f5f385c4b7d8d1aa7112" -"checksum h2 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "30e0b8e55b4d7ffedade2b9605851f8e85f5010663e7ad170ef3c0f0681bc43f" +"checksum h2 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "ddb2b25a33e231484694267af28fec74ac63b5ccf51ee2065a5e313b834d836e" "checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" "checksum hostname 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "21ceb46a83a85e824ef93669c8b390009623863b5c195d1ba747292c0c72f94e" "checksum html5ever 0.22.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c213fa6a618dc1da552f54f85cba74b05d8e883c92ec4e89067736938084c26e" @@ -3074,7 +3112,7 @@ dependencies = [ "checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" "checksum humansize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6cab2627acfc432780848602f3f558f7e9dd427352224b0d9324025796d2a5e" "checksum humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca7e5f2e110db35f93b837c81797f3714500b81d517bf20c431b16d3ca4f114" -"checksum hyper 0.12.21 (registry+https://github.com/rust-lang/crates.io-index)" = "6d6b1a3d01ac8035b8d2d94e0e5254eab82746f09046baed763751b00253232b" +"checksum hyper 0.12.23 (registry+https://github.com/rust-lang/crates.io-index)" = "860faf61a9957c9cb0e23e69f1c8290e92f6eb660fcdd1f2d6777043a2ae1a46" "checksum hyper-tls 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "32cd73f14ad370d3b4d4b7dce08f69b81536c82e39fcc89731930fe5788cd661" "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" "checksum ignore 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ad03ca67dc12474ecd91fdb94d758cbd20cb4e7a78ebe831df26a9b7511e1162" @@ -3157,7 +3195,8 @@ dependencies = [ "checksum rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3906503e80ac6cbcacb2c2973fa8e473f24d7e2747c8c92bb230c2441cad96b5" "checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" "checksum rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1961a422c4d189dfb50ffa9320bf1f2a9bd54ecb92792fb9477f99a1045f3372" -"checksum rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0905b6b7079ec73b314d4c748701f6931eb79fd97c668caa3f1899b22b32c6db" +"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" +"checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0" "checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" "checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" "checksum rand_os 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f46fbd5550acf75b0c2730f5dd1873751daf9beb8f11b44027778fae50d7feca" @@ -3171,9 +3210,9 @@ dependencies = [ "checksum regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "37e7cbbd370869ce2e8dff25c7018702d10b21a20ef7135316f8daecd6c25b7f" "checksum regex-syntax 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4e47a2ed29da7a9e1960e1639e7a982e6edc6d49be308a3b02daf511504a16d1" "checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" -"checksum reqwest 0.9.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0e60f169af3915c294818d55dde549f00d2966cef36d6c5e7255d75df3f2b16f" +"checksum reqwest 0.9.9 (registry+https://github.com/rust-lang/crates.io-index)" = "09d6e187a58d923ee132fcda141c94e716bcfe301c2ea2bef5c81536e0085376" "checksum resolv-conf 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b263b4aa1b5de9ffc0054a2386f96992058bb6870aab516f8cdeb8a667d56dcb" -"checksum rust-stemmers 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fbf06149ec391025664a5634200ced1afb489f0f3f8a140d515ebc0eb04b4bc0" +"checksum rust-stemmers 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05928c187b85b38f6b98db43057a24f0245163635a5ce6325a4f77a833d646aa" "checksum rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "adacaae16d02b6ec37fdc7acfcddf365978de76d1983d3ee22afc260e1ca9619" "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" "checksum ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "eb9e9b8cde282a9fe6a42dd4681319bfb63f121b8a8ee9439c6f4107e58a46f7" @@ -3191,7 +3230,7 @@ dependencies = [ "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" "checksum serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)" = "534b8b91a95e0f71bca3ed5824752d558da048d4248c91af873b63bd60519752" "checksum serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)" = "a915306b0f1ac5607797697148c223bedeaa36bcc2e28a01441cd638cc6567b4" -"checksum serde_json 1.0.36 (registry+https://github.com/rust-lang/crates.io-index)" = "574378d957d6dcdf1bbb5d562a15cbd5e644159432f84634b94e485267abbcc7" +"checksum serde_json 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)" = "4b90a9fbe1211e57d3e1c15670f1cb00802988fb23a1a4aad7a2b63544f1920e" "checksum serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d48f9f99cd749a2de71d29da5f948de7f2764cc5a9d7f3c97e3514d4ee6eabf2" "checksum sha-1 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "51b9d1f3b5de8a167ab06834a7c883bd197f2191e1dda1a22d9ccfeedbf9aded" "checksum sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" @@ -3215,7 +3254,7 @@ dependencies = [ "checksum syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e02dd9df97a68a2d005ace28ff24c610abfc3ce17afcfdb22a077645dabb599a" "checksum tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "7e91405c14320e5c79b3d148e1c86f40749a36e490642202a31689cb1a3452b2" "checksum tendril 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "707feda9f2582d5d680d733e38755547a3e8fb471e7ba11452ecfd9ce93a5d3b" -"checksum tera 1.0.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5847f6a7882d3068732f542fd9144314233f3e9eed3e1223518994e951683d" +"checksum tera 1.0.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0fbadfbcaeb99c662f4855b43b023cb9ad98c62007263c64a5ffe78d4bf0a3d2" "checksum termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4096add70612622289f2fdcdbd5086dc81c1e2675e6ae58d6c4f62a16c6d7f2f" "checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" "checksum textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "307686869c93e71f94da64286f9a9524c0f308a9e1c87a583de8e9c9039ad3f6" @@ -3263,8 +3302,11 @@ dependencies = [ "checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737" "checksum uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dab5c5526c5caa3d106653401a267fed923e7046f35895ffcb5ca42db64942e6" "checksum v_escape 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c8b50688edb86f4c092a1a9fe8bda004b0faa3197100897653809e97e09a2814" +"checksum v_escape 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6177565a30b7091835dd4a33a81fc4f064e671729a6b7cb964675b2a0bb295a1" "checksum v_escape_derive 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7cd994c63b487fef7aad31e5394ec04b9e24de7b32ea5251c9fb499cd2cbf44c" +"checksum v_escape_derive 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ebc450df00e6b12b42f963f620156611891dfc6475533d9b7d5a607a527a403d" "checksum v_htmlescape 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "020cae817dc82693aa523f01087b291b1c7a9ac8cea5c12297963f21769fb27f" +"checksum v_htmlescape 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "168b0208dc58f378f35a743f39c93f199dd981be5ed24615f2b467d55f37e959" "checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" "checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" From 7c260eb5b20a710b667ef2e706ebec365c59132d Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Fri, 25 Jan 2019 16:18:48 +0100 Subject: [PATCH 27/74] Fix multilingual tests --- components/site/tests/site_i18n.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/site/tests/site_i18n.rs b/components/site/tests/site_i18n.rs index 9023a730..ad85bdcb 100644 --- a/components/site/tests/site_i18n.rs +++ b/components/site/tests/site_i18n.rs @@ -87,7 +87,7 @@ fn can_build_multilingual_site() { assert!(file_contains!( public, "fr/blog/index.html", - "Translated in : My blog https://example.com/blog/" + "Translated in en: My blog https://example.com/blog/" )); assert!(file_contains!( public, @@ -107,7 +107,7 @@ fn can_build_multilingual_site() { assert!(file_contains!( public, "fr/blog/something/index.html", - "Translated in : Something https://example.com/blog/something/" + "Translated in en: Something https://example.com/blog/something/" )); // sitemap contains all languages From d1154d236f23808dfa6cdcbdb9444b2399e49a55 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Sat, 26 Jan 2019 11:46:54 +0100 Subject: [PATCH 28/74] Comment out failing test while its getting fixed in Tera --- components/rendering/tests/markdown.rs | 51 +++++++++++++------------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/components/rendering/tests/markdown.rs b/components/rendering/tests/markdown.rs index dbceae87..da722a4e 100644 --- a/components/rendering/tests/markdown.rs +++ b/components/rendering/tests/markdown.rs @@ -776,29 +776,30 @@ fn doesnt_try_to_highlight_content_from_shortcode() { assert_eq!(res.body, expected); } +// TODO: re-enable once it's fixed in Tera // https://github.com/Keats/tera/issues/373 -#[test] -fn can_split_lines_shortcode_body() { - let permalinks_ctx = HashMap::new(); - let mut tera = Tera::default(); - tera.extend(&ZOLA_TERA).unwrap(); - - let shortcode = r#"{{ body | split(pat="\n") }}"#; - - let markdown_string = r#" -{% alert() %} -multi -ple -lines -{% end %} - "#; - - let expected = r#"

["multi", "ple", "lines"]

"#; - - tera.add_raw_template(&format!("shortcodes/{}.html", "alert"), shortcode).unwrap(); - let config = Config::default(); - let context = RenderContext::new(&tera, &config, "", &permalinks_ctx, InsertAnchor::None); - - let res = render_content(markdown_string, &context).unwrap(); - assert_eq!(res.body, expected); -} +//#[test] +//fn can_split_lines_shortcode_body() { +// let permalinks_ctx = HashMap::new(); +// let mut tera = Tera::default(); +// tera.extend(&ZOLA_TERA).unwrap(); +// +// let shortcode = r#"{{ body | split(pat="\n") }}"#; +// +// let markdown_string = r#" +//{% alert() %} +//multi +//ple +//lines +//{% end %} +// "#; +// +// let expected = r#"

["multi", "ple", "lines"]

"#; +// +// tera.add_raw_template(&format!("shortcodes/{}.html", "alert"), shortcode).unwrap(); +// let config = Config::default(); +// let context = RenderContext::new(&tera, &config, "", &permalinks_ctx, InsertAnchor::None); +// +// let res = render_content(markdown_string, &context).unwrap(); +// assert_eq!(res.body, expected); +//} From 21d67235ae95711470c05c7e58f6174d77157f06 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Sun, 27 Jan 2019 18:57:07 +0100 Subject: [PATCH 29/74] Arc-ify Library --- Cargo.lock | 154 ++++++++++++--------- components/rebuild/src/lib.rs | 94 +++++++------ components/site/src/lib.rs | 97 +++++++------ components/site/tests/site.rs | 124 +++++++++-------- components/site/tests/site_i18n.rs | 21 +-- components/templates/src/global_fns/mod.rs | 95 ++++++------- src/console.rs | 13 +- 7 files changed, 324 insertions(+), 274 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 46c0ca1b..fa0d547b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -22,16 +22,16 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-signal 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", "trust-dns-proto 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "trust-dns-resolver 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", + "trust-dns-resolver 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -48,15 +48,15 @@ dependencies = [ "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", "tower-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "trust-dns-resolver 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", + "trust-dns-resolver 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -98,12 +98,12 @@ dependencies = [ "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "v_htmlescape 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -382,6 +382,21 @@ dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "crossbeam" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-channel 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-epoch 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "crossbeam-channel" version = "0.3.6" @@ -712,6 +727,11 @@ dependencies = [ "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "fuchsia-cprng" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "fuchsia-zircon" version = "0.3.3" @@ -891,13 +911,13 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", "want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -937,7 +957,7 @@ dependencies = [ "same-file 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1372,10 +1392,9 @@ dependencies = [ [[package]] name = "num-derive" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1642,10 +1661,10 @@ dependencies = [ [[package]] name = "rand" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-cprng 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1654,13 +1673,13 @@ dependencies = [ [[package]] name = "rand" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-cprng 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1690,14 +1709,6 @@ dependencies = [ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "rand_core" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "rand_core" version = "0.3.1" @@ -1818,14 +1829,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "regex-syntax" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1881,11 +1892,11 @@ dependencies = [ "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", "serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1941,7 +1952,7 @@ name = "same-file" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2248,7 +2259,7 @@ dependencies = [ "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "onig 4.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "plist 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2360,7 +2371,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "lzw 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num-derive 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "num-derive 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2376,7 +2387,7 @@ dependencies = [ [[package]] name = "tokio" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2389,9 +2400,10 @@ dependencies = [ "tokio-fs 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2431,7 +2443,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2477,6 +2489,14 @@ dependencies = [ "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "tokio-sync" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "tokio-tcp" version = "0.1.3" @@ -2492,9 +2512,10 @@ dependencies = [ [[package]] name = "tokio-threadpool" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-channel 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2502,12 +2523,13 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-timer" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2574,21 +2596,21 @@ dependencies = [ "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", "socket2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "trust-dns-proto" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2597,21 +2619,21 @@ dependencies = [ "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", "socket2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "trust-dns-resolver" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2623,8 +2645,8 @@ dependencies = [ "lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "resolv-conf 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", - "trust-dns-proto 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "trust-dns-proto 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2785,7 +2807,7 @@ name = "uuid" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2875,7 +2897,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "same-file 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2919,7 +2941,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "winapi-util" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2936,7 +2958,7 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2966,7 +2988,7 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3057,6 +3079,7 @@ dependencies = [ "checksum core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "716c271e8613ace48344f723b60b900a93150271e5be206212d052bbc0883efa" "checksum crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d663548de7f5cca343f1e0a48d14dcfb0e9eb4e079ec58883b7251539fa10aeb" "checksum crc32fast 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e91d5240c6975ef33aeb5f148f35275c25eda8e8a5f95abe421978b05b8bf192" +"checksum crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad4c7ea749d9fb09e23c5cb17e3b70650860553a0e2744e38446b1803bf7db94" "checksum crossbeam-channel 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "137bc235f622ffaa0428e3854e24acb53291fc0b3ff6fb2cb75a8be6fb02f06b" "checksum crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f739f8c5363aca78cfb059edf753d8f0d36908c348f3d8d1503f03d8b75d9cf3" "checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13" @@ -3093,6 +3116,7 @@ dependencies = [ "checksum fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674" "checksum fsevent 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)" = "c4bbbf71584aeed076100b5665ac14e3d85eeb31fdbb45fbd41ef9a682b5ec05" "checksum fsevent-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "1a772d36c338d07a032d5375a36f15f9a7043bf0cb8ce7cee658e037c6032874" +"checksum fuchsia-cprng 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "81f7f8eb465745ea9b02e2704612a9946a59fa40572086c6fd49d6ddcf30bf31" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" "checksum futf 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7c9c1ce3fa9336301af935ab852c437817d14cd33690446569392e65170aac3b" @@ -3159,7 +3183,7 @@ dependencies = [ "checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" "checksum nom 4.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9c349f68f25f596b9f44cf0e7c69752a5c633b0550c3ff849518bfba0233774a" "checksum notify 4.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "c968cf37cf949114b00d51b0b23536d1c3a4a3963767cf4c969c65a6af78dc7d" -"checksum num-derive 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8af1847c907c2f04d7bfd572fb25bbb4385c637fe5be163cf2f8c5d778fe1e7d" +"checksum num-derive 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d9fe8fcafd1b86a37ce8a1cfa15ae504817e0c8c2e7ad42767371461ac1d316d" "checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" "checksum num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "af3fdbbc3291a5464dc57b03860ec37ca6bf915ed6ee385e7c6c052c422b2124" "checksum num-rational 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4e96f040177bb3da242b5b1ecf3f54b5d5af3efbbfb18608977a5d2767b22f10" @@ -3190,11 +3214,10 @@ dependencies = [ "checksum pulldown-cmark 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "eef52fac62d0ea7b9b4dc7da092aa64ea7ec3d90af6679422d3d7e0e14b6ee15" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" "checksum quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd8e04bd9c52e0342b406469d494fcb033be4bdbe5c606016defbb1681411e1" -"checksum rand 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "dee497e66d8d76bf08ce20c8d36e16f93749ab0bf89975b4f8ae5cee660c2da2" -"checksum rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e464cd887e869cddcae8792a4ee31d23c7edd516700695608f5b98c67ee0131c" +"checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" +"checksum rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9" "checksum rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3906503e80ac6cbcacb2c2973fa8e473f24d7e2747c8c92bb230c2441cad96b5" "checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" -"checksum rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1961a422c4d189dfb50ffa9320bf1f2a9bd54ecb92792fb9477f99a1045f3372" "checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" "checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0" "checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" @@ -3208,7 +3231,7 @@ dependencies = [ "checksum redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)" = "423e376fffca3dfa06c9e9790a9ccd282fafb3cc6e6397d01dbf64f9bacc6b85" "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" "checksum regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "37e7cbbd370869ce2e8dff25c7018702d10b21a20ef7135316f8daecd6c25b7f" -"checksum regex-syntax 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4e47a2ed29da7a9e1960e1639e7a982e6edc6d49be308a3b02daf511504a16d1" +"checksum regex-syntax 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "8c2f35eedad5295fdf00a63d7d4b238135723f92b434ec06774dad15c7ab0861" "checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" "checksum reqwest 0.9.9 (registry+https://github.com/rust-lang/crates.io-index)" = "09d6e187a58d923ee132fcda141c94e716bcfe301c2ea2bef5c81536e0085376" "checksum resolv-conf 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b263b4aa1b5de9ffc0054a2386f96992058bb6870aab516f8cdeb8a667d56dcb" @@ -3261,7 +3284,7 @@ dependencies = [ "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" "checksum tiff 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a2cc6c4fd13cb1cfd20abdb196e794ceccb29371855b7e7f575945f920a5b3c2" "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" -"checksum tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "4790d0be6f4ba6ae4f48190efa2ed7780c9e3567796abdb285003cf39840d9c5" +"checksum tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "e0500b88064f08bebddd0c0bed39e19f5c567a5f30975bee52b0c0d3e2eeb38c" "checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" "checksum tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "331c8acc267855ec06eb0c94618dcbbfea45bed2d20b77252940095273fb58f6" "checksum tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "30c6dbf2d1ad1de300b393910e8a3aa272b724a400b6531da03eed99e329fbf0" @@ -3269,16 +3292,17 @@ dependencies = [ "checksum tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b53aeb9d3f5ccf2ebb29e19788f96987fa1355f8fe45ea193928eaaaf3ae820f" "checksum tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "afbcdb0f0d2a1e4c440af82d7bbf0bf91a8a8c0575bcd20c05d15be7e9d3a02f" "checksum tokio-signal 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "dd6dc5276ea05ce379a16de90083ec80836440d5ef8a6a39545a3207373b8296" +"checksum tokio-sync 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0d65a58e2215c13179e6eeb2cf00511e0aee455cad40a9bfaef15a2fd8aab1c7" "checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" -"checksum tokio-threadpool 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "17465013014410310f9f61fa10bf4724803c149ea1d51efece131c38efca93aa" -"checksum tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "4f37f0111d76cc5da132fe9bc0590b9b9cfd079bc7e75ac3846278430a299ff8" +"checksum tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c3fd86cb15547d02daa2b21aadaf4e37dee3368df38a526178a5afa3c034d2fb" +"checksum tokio-timer 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "21c04a314a1f69f73c0227beba6250e06cdc1e9a62e7eff912bf54a59b6d1b94" "checksum tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "66268575b80f4a4a710ef83d087fdfeeabdce9b74c797535fbac18a2cb906e92" "checksum tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "037ffc3ba0e12a0ab4aca92e5234e0dedeb48fddf6ccd260f1f150a36a9f2445" "checksum toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f" "checksum tower-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b32f72af77f1bfe3d3d4da8516a238ebe7039b51dd8637a09841ac7f16d2c987" "checksum trust-dns-proto 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0838272e89f1c693b4df38dc353412e389cf548ceed6f9fd1af5a8d6e0e7cf74" -"checksum trust-dns-proto 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "30dde452f5d142d5e316a3b32386da95280c98b7e266639f8f3bc6fdf507d279" -"checksum trust-dns-resolver 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "de630f95a192f793436ffae5137e88253cc4142a97d9a8e73c8d804fa85ddf0a" +"checksum trust-dns-proto 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "09144f0992b0870fa8d2972cc069cbf1e3c0fda64d1f3d45c4d68d0e0b52ad4e" +"checksum trust-dns-resolver 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8a9f877f7a1ad821ab350505e1f1b146a4960402991787191d6d8cab2ce2de2c" "checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" "checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" "checksum ucd-trie 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "71a9c5b1fe77426cf144cc30e49e955270f5086e31a6441dfa8b32efc09b9d77" @@ -3318,7 +3342,7 @@ dependencies = [ "checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -"checksum winapi-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "afc5508759c5bf4285e61feb862b6083c8480aec864fa17a81fdec6f69b461ab" +"checksum winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9" "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" "checksum wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "561ed901ae465d6185fa7864d63fbd5720d0ef718366c9a4dc83cf6170d7e9ba" "checksum winreg 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a27a759395c1195c4cc5cda607ef6f8f6498f64e78f7900f5de0a127a424704a" diff --git a/components/rebuild/src/lib.rs b/components/rebuild/src/lib.rs index 1f59ba5d..7ef87a1d 100644 --- a/components/rebuild/src/lib.rs +++ b/components/rebuild/src/lib.rs @@ -98,22 +98,21 @@ fn find_page_front_matter_changes( /// Handles a path deletion: could be a page, a section, a folder fn delete_element(site: &mut Site, path: &Path, is_section: bool) -> Result<()> { - // Ignore the event if this path was not known - if !site.library.contains_section(&path.to_path_buf()) - && !site.library.contains_page(&path.to_path_buf()) { - return Ok(()); - } - - if is_section { - if let Some(s) = site.library.remove_section(&path.to_path_buf()) { - site.permalinks.remove(&s.file.relative); + let mut library = site.library.write().unwrap(); + // Ignore the event if this path was not known + if !library.contains_section(&path.to_path_buf()) + && !library.contains_page(&path.to_path_buf()) + { + return Ok(()); } - } else if let Some(p) = site.library.remove_page(&path.to_path_buf()) { - site.permalinks.remove(&p.file.relative); - if !p.meta.taxonomies.is_empty() { - site.populate_taxonomies()?; + if is_section { + if let Some(s) = library.remove_section(&path.to_path_buf()) { + site.permalinks.remove(&s.file.relative); + } + } else if let Some(p) = library.remove_page(&path.to_path_buf()) { + site.permalinks.remove(&p.file.relative); } } @@ -135,28 +134,32 @@ fn handle_section_editing(site: &mut Site, path: &Path) -> Result<()> { // Updating a section Some(prev) => { site.populate_sections(); + { + let library = site.library.read().unwrap(); - if site.library.get_section(&pathbuf).unwrap().meta == prev.meta { - // Front matter didn't change, only content did - // so we render only the section page, not its pages - return site.render_section(&site.library.get_section(&pathbuf).unwrap(), false); + if library.get_section(&pathbuf).unwrap().meta == prev.meta { + // Front matter didn't change, only content did + // so we render only the section page, not its pages + return site.render_section(&library.get_section(&pathbuf).unwrap(), false); + } } // Front matter changed - for changes in find_section_front_matter_changes( - &site.library.get_section(&pathbuf).unwrap().meta, + let changes = find_section_front_matter_changes( + &site.library.read().unwrap().get_section(&pathbuf).unwrap().meta, &prev.meta, - ) { + ); + for change in changes { // Sort always comes first if present so the rendering will be fine - match changes { + match change { SectionChangesNeeded::Sort => { site.register_tera_global_fns(); } SectionChangesNeeded::Render => { - site.render_section(&site.library.get_section(&pathbuf).unwrap(), false)? + site.render_section(&site.library.read().unwrap().get_section(&pathbuf).unwrap(), false)? } SectionChangesNeeded::RenderWithPages => { - site.render_section(&site.library.get_section(&pathbuf).unwrap(), true)? + site.render_section(&site.library.read().unwrap().get_section(&pathbuf).unwrap(), true)? } // not a common enough operation to make it worth optimizing SectionChangesNeeded::Delete | SectionChangesNeeded::Transparent => { @@ -170,14 +173,14 @@ fn handle_section_editing(site: &mut Site, path: &Path) -> Result<()> { None => { site.populate_sections(); site.register_tera_global_fns(); - site.render_section(&site.library.get_section(&pathbuf).unwrap(), true) + site.render_section(&site.library.read().unwrap().get_section(&pathbuf).unwrap(), true) } } } macro_rules! render_parent_section { ($site: expr, $path: expr) => { - if let Some(s) = $site.library.find_parent_section($path) { + if let Some(s) = $site.library.read().unwrap().find_parent_section($path) { $site.render_section(s, false)?; }; }; @@ -192,27 +195,31 @@ fn handle_page_editing(site: &mut Site, path: &Path) -> Result<()> { Some(prev) => { site.populate_sections(); site.populate_taxonomies()?; + site.register_tera_global_fns(); + { + let library = site.library.read().unwrap(); - // Front matter didn't change, only content did - if site.library.get_page(&pathbuf).unwrap().meta == prev.meta { - // Other than the page itself, the summary might be seen - // on a paginated list for a blog for example - if site.library.get_page(&pathbuf).unwrap().summary.is_some() { - render_parent_section!(site, path); + // Front matter didn't change, only content did + if library.get_page(&pathbuf).unwrap().meta == prev.meta { + // Other than the page itself, the summary might be seen + // on a paginated list for a blog for example + if library.get_page(&pathbuf).unwrap().summary.is_some() { + render_parent_section!(site, path); + } + return site.render_page(&library.get_page(&pathbuf).unwrap()); } - site.register_tera_global_fns(); - return site.render_page(&site.library.get_page(&pathbuf).unwrap()); } // Front matter changed - for changes in find_page_front_matter_changes( - &site.library.get_page(&pathbuf).unwrap().meta, + let changes = find_page_front_matter_changes( + &site.library.read().unwrap().get_page(&pathbuf).unwrap().meta, &prev.meta, - ) { + ); + for change in changes { site.register_tera_global_fns(); // Sort always comes first if present so the rendering will be fine - match changes { + match change { PageChangesNeeded::Taxonomies => { site.populate_taxonomies()?; site.render_taxonomies()?; @@ -222,7 +229,7 @@ fn handle_page_editing(site: &mut Site, path: &Path) -> Result<()> { } PageChangesNeeded::Render => { render_parent_section!(site, path); - site.render_page(&site.library.get_page(&path.to_path_buf()).unwrap())?; + site.render_page(&site.library.read().unwrap().get_page(&path.to_path_buf()).unwrap())?; } }; } @@ -275,8 +282,11 @@ pub fn after_content_rename(site: &mut Site, old: &Path, new: &Path) -> Result<( if new_path.file_name().unwrap() == "_index.md" { // We aren't entirely sure where the original thing was so just try to delete whatever was // at the old path - site.library.remove_page(&old.to_path_buf()); - site.library.remove_section(&old.to_path_buf()); + { + let mut library = site.library.write().unwrap(); + library.remove_page(&old.to_path_buf()); + library.remove_section(&old.to_path_buf()); + } return handle_section_editing(site, &new_path); } @@ -287,7 +297,7 @@ pub fn after_content_rename(site: &mut Site, old: &Path, new: &Path) -> Result<( } else { old.to_path_buf() }; - site.library.remove_page(&old_path); + site.library.write().unwrap().remove_page(&old_path); handle_page_editing(site, &new_path) } @@ -350,7 +360,7 @@ pub fn after_template_change(site: &mut Site, path: &Path) -> Result<()> { match filename { "sitemap.xml" => site.render_sitemap(), - "rss.xml" => site.render_rss_feed(site.library.pages_values(), None), + "rss.xml" => site.render_rss_feed(site.library.read().unwrap().pages_values(), None), "robots.txt" => site.render_robots(), "single.html" | "list.html" => site.render_taxonomies(), "page.html" => { diff --git a/components/site/src/lib.rs b/components/site/src/lib.rs index 1406063d..bc84def1 100644 --- a/components/site/src/lib.rs +++ b/components/site/src/lib.rs @@ -22,7 +22,7 @@ extern crate tempfile; use std::collections::HashMap; use std::fs::{copy, create_dir_all, remove_dir_all}; use std::path::{Path, PathBuf}; -use std::sync::{Arc, Mutex}; +use std::sync::{Arc, Mutex, RwLock}; use glob::glob; use rayon::prelude::*; @@ -72,7 +72,7 @@ pub struct Site { /// We need that if there are relative links in the content that need to be resolved pub permalinks: HashMap, /// Contains all pages and sections of the site - pub library: Library, + pub library: Arc>, } impl Site { @@ -141,7 +141,7 @@ impl Site { taxonomies: Vec::new(), permalinks: HashMap::new(), // We will allocate it properly later on - library: Library::new(0, 0, false), + library: Arc::new(RwLock::new(Library::new(0, 0, false))), }; Ok(site) @@ -167,9 +167,9 @@ impl Site { self.live_reload = get_available_port(port_to_avoid); } - /// Get all the orphan (== without section) pages in the site - pub fn get_all_orphan_pages(&self) -> Vec<&Page> { - self.library.get_all_orphan_pages() + /// Get the number of orphan (== without section) pages in the site + pub fn get_number_orphan_pages(&self) -> usize { + self.library.read().unwrap().get_all_orphan_pages().len() } pub fn set_base_url(&mut self, base_url: String) { @@ -197,7 +197,7 @@ impl Site { }); self.library = - Library::new(page_entries.len(), section_entries.len(), self.config.is_multilingual()); + Arc::new(RwLock::new(Library::new(page_entries.len(), section_entries.len(), self.config.is_multilingual()))); let sections = { let config = &self.config; @@ -233,7 +233,7 @@ impl Site { // Insert a default index section for each language if necessary so we don't need to create // a _index.md to render the index page at the root of the site for (index_path, lang) in self.index_section_paths() { - if let Some(ref index_section) = self.library.get_section(&index_path) { + if let Some(ref index_section) = self.library.read().unwrap().get_section(&index_path) { if self.config.build_search_index && !index_section.meta.in_search_index { bail!( "You have enabled search in the config but disabled it in the index section: \ @@ -242,8 +242,9 @@ impl Site { ) } } + let mut library = self.library.write().expect("Get lock for load"); // Not in else because of borrow checker - if !self.library.contains_section(&index_path) { + if !library.contains_section(&index_path) { let mut index_section = Section::default(); index_section.file.parent = self.content_path.clone(); index_section.file.filename = @@ -261,7 +262,7 @@ impl Site { index_section.file.path = self.content_path.join("_index.md"); index_section.file.relative = "_index.md".to_string(); } - self.library.insert_section(index_section); + library.insert_section(index_section); } } @@ -295,14 +296,15 @@ impl Site { // This is needed in the first place because of silly borrow checker let mut pages_insert_anchors = HashMap::new(); - for (_, p) in self.library.pages() { + for (_, p) in self.library.read().unwrap().pages() { pages_insert_anchors.insert( p.file.path.clone(), self.find_parent_section_insert_anchor(&p.file.parent.clone(), &p.lang), ); } - self.library + let mut library = self.library.write().expect("Get lock for render_markdown"); + library .pages_mut() .values_mut() .collect::>() @@ -313,7 +315,7 @@ impl Site { }) .collect::>()?; - self.library + library .sections_mut() .values_mut() .collect::>() @@ -347,11 +349,11 @@ impl Site { } pub fn register_tera_global_fns(&mut self) { - self.tera.register_function("get_page", global_fns::GetPage::new(&self.library)); - self.tera.register_function("get_section", global_fns::GetSection::new(&self.library)); + self.tera.register_function("get_page", global_fns::GetPage::new(self.base_path.clone(), self.library.clone())); + self.tera.register_function("get_section", global_fns::GetSection::new(self.base_path.clone(), self.library.clone())); self.tera.register_function( "get_taxonomy", - global_fns::GetTaxonomy::new(&self.taxonomies, &self.library), + global_fns::GetTaxonomy::new(self.taxonomies.clone(), self.library.clone()), ); } @@ -366,8 +368,9 @@ impl Site { self.find_parent_section_insert_anchor(&page.file.parent, &page.lang); page.render_markdown(&self.permalinks, &self.tera, &self.config, insert_anchor)?; } - let prev = self.library.remove_page(&page.file.path); - self.library.insert_page(page); + let mut library = self.library.write().expect("Get lock for add_page"); + let prev = library.remove_page(&page.file.path); + library.insert_page(page); Ok(prev) } @@ -381,8 +384,9 @@ impl Site { if render { section.render_markdown(&self.permalinks, &self.tera, &self.config)?; } - let prev = self.library.remove_section(§ion.file.path); - self.library.insert_section(section); + let mut library = self.library.write().expect("Get lock for add_section"); + let prev = library.remove_section(§ion.file.path); + library.insert_section(section); Ok(prev) } @@ -399,7 +403,7 @@ impl Site { } else { parent_path.join("_index.md") }; - match self.library.get_section(&parent) { + match self.library.read().unwrap().get_section(&parent) { Some(s) => s.meta.insert_anchor_links, None => InsertAnchor::None, } @@ -408,7 +412,8 @@ impl Site { /// Find out the direct subsections of each subsection if there are some /// as well as the pages for each section pub fn populate_sections(&mut self) { - self.library.populate_sections(); + let mut library = self.library.write().expect("Get lock for populate_sections"); + library.populate_sections(); } /// Find all the tags and categories if it's asked in the config @@ -417,7 +422,7 @@ impl Site { return Ok(()); } - self.taxonomies = find_taxonomies(&self.config, &self.library)?; + self.taxonomies = find_taxonomies(&self.config, &self.library.read().unwrap())?; Ok(()) } @@ -495,7 +500,7 @@ impl Site { create_directory(¤t_path)?; // Finally, create a index.html file there with the page rendered - let output = page.render_html(&self.tera, &self.config, &self.library)?; + let output = page.render_html(&self.tera, &self.config, &self.library.read().unwrap())?; create_file(¤t_path.join("index.html"), &self.inject_livereload(output))?; // Copy any asset we found previously into the same directory as the index.html @@ -520,16 +525,17 @@ impl Site { self.render_orphan_pages()?; self.render_sitemap()?; + let library = self.library.read().unwrap(); if self.config.generate_rss { let pages = if self.config.is_multilingual() { - self.library + library .pages_values() .iter() .filter(|p| p.lang.is_none()) .map(|p| *p) .collect() } else { - self.library.pages_values() + library.pages_values() }; self.render_rss_feed(pages, None)?; } @@ -538,8 +544,7 @@ impl Site { if !lang.rss { continue; } - let pages = self - .library + let pages = library .pages_values() .iter() .filter(|p| if let Some(ref l) = p.lang { l == &lang.code } else { false }) @@ -579,7 +584,7 @@ impl Site { &self.output_path.join(&format!("search_index.{}.js", self.config.default_language)), &format!( "window.searchIndex = {};", - search::build_index(&self.config.default_language, &self.library)? + search::build_index(&self.config.default_language, &self.library.read().unwrap())? ), )?; @@ -656,7 +661,7 @@ impl Site { pub fn render_aliases(&self) -> Result<()> { ensure_directory_exists(&self.output_path)?; - for (_, page) in self.library.pages() { + for (_, page) in self.library.read().unwrap().pages() { for alias in &page.meta.aliases { let mut output_path = self.output_path.to_path_buf(); let mut split = alias.split('/').collect::>(); @@ -730,10 +735,10 @@ impl Site { } else { self.output_path.join(&taxonomy.kind.name) }; - let list_output = taxonomy.render_all_terms(&self.tera, &self.config, &self.library)?; + let list_output = taxonomy.render_all_terms(&self.tera, &self.config, &self.library.read().unwrap())?; create_directory(&output_path)?; create_file(&output_path.join("index.html"), &self.inject_livereload(list_output))?; - + let library = self.library.read().unwrap(); taxonomy .items .par_iter() @@ -742,18 +747,18 @@ impl Site { if taxonomy.kind.is_paginated() { self.render_paginated( &path, - &Paginator::from_taxonomy(&taxonomy, item, &self.library), + &Paginator::from_taxonomy(&taxonomy, item, &library), )?; } else { let single_output = - taxonomy.render_term(item, &self.tera, &self.config, &self.library)?; + taxonomy.render_term(item, &self.tera, &self.config, &library)?; create_directory(&path)?; create_file(&path.join("index.html"), &self.inject_livereload(single_output))?; } if taxonomy.kind.rss { self.render_rss_feed( - item.pages.iter().map(|p| self.library.get_page_by_key(*p)).collect(), + item.pages.iter().map(|p| library.get_page_by_key(*p)).collect(), Some(&PathBuf::from(format!("{}/{}", taxonomy.kind.name, item.slug))), ) } else { @@ -771,6 +776,8 @@ impl Site { let mut pages = self .library + .read() + .unwrap() .pages_values() .iter() .filter(|p| !p.is_draft()) @@ -787,12 +794,13 @@ impl Site { let mut sections = self .library + .read().unwrap() .sections_values() .iter() .map(|s| SitemapEntry::new(s.permalink.clone(), None)) .collect::>(); for section in - self.library.sections_values().iter().filter(|s| s.meta.paginate_by.is_some()) + self.library.read().unwrap().sections_values().iter().filter(|s| s.meta.paginate_by.is_some()) { let number_pagers = (section.pages.len() as f64 / section.meta.paginate_by.unwrap() as f64) @@ -872,12 +880,13 @@ impl Site { pages.par_sort_unstable_by(sort_actual_pages_by_date); context.insert("last_build_date", &pages[0].meta.date.clone()); + let library = self.library.read().unwrap(); // limit to the last n elements if the limit is set; otherwise use all. let num_entries = self.config.rss_limit.unwrap_or_else(|| pages.len()); let p = pages .iter() .take(num_entries) - .map(|x| x.to_serialized_basic(&self.library)) + .map(|x| x.to_serialized_basic(&library)) .collect::>(); context.insert("pages", &p); @@ -943,7 +952,7 @@ impl Site { section .pages .par_iter() - .map(|k| self.render_page(self.library.get_page_by_key(*k))) + .map(|k| self.render_page(self.library.read().unwrap().get_page_by_key(*k))) .collect::>()?; } @@ -961,9 +970,9 @@ impl Site { } if section.meta.is_paginated() { - self.render_paginated(&output_path, &Paginator::from_section(§ion, &self.library))?; + self.render_paginated(&output_path, &Paginator::from_section(§ion, &self.library.read().unwrap()))?; } else { - let output = section.render_html(&self.tera, &self.config, &self.library)?; + let output = section.render_html(&self.tera, &self.config, &self.library.read().unwrap())?; create_file(&output_path.join("index.html"), &self.inject_livereload(output))?; } @@ -975,6 +984,7 @@ impl Site { self.render_section( &self .library + .read().unwrap() .get_section(&self.content_path.join("_index.md")) .expect("Failed to get index section"), false, @@ -984,6 +994,7 @@ impl Site { /// Renders all sections pub fn render_sections(&self) -> Result<()> { self.library + .read().unwrap() .sections_values() .into_par_iter() .map(|s| self.render_section(s, true)) @@ -993,8 +1004,8 @@ impl Site { /// Renders all pages that do not belong to any sections pub fn render_orphan_pages(&self) -> Result<()> { ensure_directory_exists(&self.output_path)?; - - for page in self.get_all_orphan_pages() { + let library = self.library.read().unwrap(); + for page in library.get_all_orphan_pages() { self.render_page(page)?; } @@ -1015,7 +1026,7 @@ impl Site { let page_path = folder_path.join(&format!("{}", pager.index)); create_directory(&page_path)?; let output = - paginator.render_pager(pager, &self.config, &self.tera, &self.library)?; + paginator.render_pager(pager, &self.config, &self.tera, &self.library.read().unwrap())?; if pager.index > 1 { create_file(&page_path.join("index.html"), &self.inject_livereload(output))?; } else { diff --git a/components/site/tests/site.rs b/components/site/tests/site.rs index 7c4a55cf..3a13fb92 100644 --- a/components/site/tests/site.rs +++ b/components/site/tests/site.rs @@ -16,59 +16,59 @@ fn can_parse_site() { path.push("test_site"); let mut site = Site::new(&path, "config.toml").unwrap(); site.load().unwrap(); + let library = site.library.read().unwrap(); // Correct number of pages (sections do not count as pages) - assert_eq!(site.library.pages().len(), 22); + assert_eq!(library.pages().len(), 22); let posts_path = path.join("content").join("posts"); // Make sure the page with a url doesn't have any sections - let url_post = site.library.get_page(&posts_path.join("fixed-url.md")).unwrap(); + let url_post = library.get_page(&posts_path.join("fixed-url.md")).unwrap(); assert_eq!(url_post.path, "a-fixed-url/"); // Make sure the article in a folder with only asset doesn't get counted as a section let asset_folder_post = - site.library.get_page(&posts_path.join("with-assets").join("index.md")).unwrap(); + library.get_page(&posts_path.join("with-assets").join("index.md")).unwrap(); assert_eq!(asset_folder_post.file.components, vec!["posts".to_string()]); // That we have the right number of sections - assert_eq!(site.library.sections().len(), 11); + assert_eq!(library.sections().len(), 11); // And that the sections are correct - let index_section = site.library.get_section(&path.join("content").join("_index.md")).unwrap(); + let index_section = library.get_section(&path.join("content").join("_index.md")).unwrap(); assert_eq!(index_section.subsections.len(), 4); assert_eq!(index_section.pages.len(), 1); assert!(index_section.ancestors.is_empty()); - let posts_section = site.library.get_section(&posts_path.join("_index.md")).unwrap(); + let posts_section = library.get_section(&posts_path.join("_index.md")).unwrap(); assert_eq!(posts_section.subsections.len(), 2); assert_eq!(posts_section.pages.len(), 10); assert_eq!( posts_section.ancestors, - vec![*site.library.get_section_key(&index_section.file.path).unwrap()] + vec![*library.get_section_key(&index_section.file.path).unwrap()] ); // Make sure we remove all the pwd + content from the sections - let basic = site.library.get_page(&posts_path.join("simple.md")).unwrap(); + let basic = library.get_page(&posts_path.join("simple.md")).unwrap(); assert_eq!(basic.file.components, vec!["posts".to_string()]); assert_eq!( basic.ancestors, vec![ - *site.library.get_section_key(&index_section.file.path).unwrap(), - *site.library.get_section_key(&posts_section.file.path).unwrap(), + *library.get_section_key(&index_section.file.path).unwrap(), + *library.get_section_key(&posts_section.file.path).unwrap(), ] ); let tutorials_section = - site.library.get_section(&posts_path.join("tutorials").join("_index.md")).unwrap(); + library.get_section(&posts_path.join("tutorials").join("_index.md")).unwrap(); assert_eq!(tutorials_section.subsections.len(), 2); - let sub1 = site.library.get_section_by_key(tutorials_section.subsections[0]); - let sub2 = site.library.get_section_by_key(tutorials_section.subsections[1]); + let sub1 = library.get_section_by_key(tutorials_section.subsections[0]); + let sub2 = library.get_section_by_key(tutorials_section.subsections[1]); assert_eq!(sub1.clone().meta.title.unwrap(), "Programming"); assert_eq!(sub2.clone().meta.title.unwrap(), "DevOps"); assert_eq!(tutorials_section.pages.len(), 0); - let devops_section = site - .library + let devops_section = library .get_section(&posts_path.join("tutorials").join("devops").join("_index.md")) .unwrap(); assert_eq!(devops_section.subsections.len(), 0); @@ -76,14 +76,13 @@ fn can_parse_site() { assert_eq!( devops_section.ancestors, vec![ - *site.library.get_section_key(&index_section.file.path).unwrap(), - *site.library.get_section_key(&posts_section.file.path).unwrap(), - *site.library.get_section_key(&tutorials_section.file.path).unwrap(), + *library.get_section_key(&index_section.file.path).unwrap(), + *library.get_section_key(&posts_section.file.path).unwrap(), + *library.get_section_key(&tutorials_section.file.path).unwrap(), ] ); - let prog_section = site - .library + let prog_section = library .get_section(&posts_path.join("tutorials").join("programming").join("_index.md")) .unwrap(); assert_eq!(prog_section.subsections.len(), 0); @@ -234,15 +233,18 @@ fn can_build_site_with_live_reload() { fn can_build_site_with_taxonomies() { let (site, _tmp_dir, public) = build_site_with_setup("test_site", |mut site| { site.load().unwrap(); - for (i, (_, page)) in site.library.pages_mut().iter_mut().enumerate() { - page.meta.taxonomies = { - let mut taxonomies = HashMap::new(); - taxonomies.insert( - "categories".to_string(), - vec![if i % 2 == 0 { "A" } else { "B" }.to_string()], - ); - taxonomies - }; + { + let mut library = site.library.write().unwrap(); + for (i, (_, page)) in library.pages_mut().iter_mut().enumerate() { + page.meta.taxonomies = { + let mut taxonomies = HashMap::new(); + taxonomies.insert( + "categories".to_string(), + vec![if i % 2 == 0 { "A" } else { "B" }.to_string()], + ); + taxonomies + }; + } } site.populate_taxonomies().unwrap(); (site, false) @@ -311,12 +313,15 @@ fn can_build_site_and_insert_anchor_links() { fn can_build_site_with_pagination_for_section() { let (_, _tmp_dir, public) = build_site_with_setup("test_site", |mut site| { site.load().unwrap(); - for (_, section) in site.library.sections_mut() { - if section.is_index() { - continue; + { + let mut library = site.library.write().unwrap(); + for (_, section) in library.sections_mut() { + if section.is_index() { + continue; + } + section.meta.paginate_by = Some(2); + section.meta.template = Some("section_paginated.html".to_string()); } - section.meta.paginate_by = Some(2); - section.meta.template = Some("section_paginated.html".to_string()); } (site, false) }); @@ -425,12 +430,14 @@ fn can_build_site_with_pagination_for_index() { let (_, _tmp_dir, public) = build_site_with_setup("test_site", |mut site| { site.load().unwrap(); { - let index = site - .library - .get_section_mut(&site.base_path.join("content").join("_index.md")) - .unwrap(); - index.meta.paginate_by = Some(2); - index.meta.template = Some("index_paginated.html".to_string()); + let mut library = site.library.write().unwrap(); + { + let index = library + .get_section_mut(&site.base_path.join("content").join("_index.md")) + .unwrap(); + index.meta.paginate_by = Some(2); + index.meta.template = Some("index_paginated.html".to_string()); + } } (site, false) }); @@ -482,16 +489,19 @@ fn can_build_site_with_pagination_for_taxonomy() { lang: None, }); site.load().unwrap(); + { + let mut library = site.library.write().unwrap(); - for (i, (_, page)) in site.library.pages_mut().iter_mut().enumerate() { - page.meta.taxonomies = { - let mut taxonomies = HashMap::new(); - taxonomies.insert( - "tags".to_string(), - vec![if i % 2 == 0 { "A" } else { "B" }.to_string()], - ); - taxonomies - }; + for (i, (_, page)) in library.pages_mut().iter_mut().enumerate() { + page.meta.taxonomies = { + let mut taxonomies = HashMap::new(); + taxonomies.insert( + "tags".to_string(), + vec![if i % 2 == 0 { "A" } else { "B" }.to_string()], + ); + taxonomies + }; + } } site.populate_taxonomies().unwrap(); (site, false) @@ -594,38 +604,38 @@ fn can_apply_page_templates() { site.load().unwrap(); let template_path = path.join("content").join("applying_page_template"); + let library = site.library.read().unwrap(); - let template_section = site.library.get_section(&template_path.join("_index.md")).unwrap(); + let template_section = library.get_section(&template_path.join("_index.md")).unwrap(); assert_eq!(template_section.subsections.len(), 2); assert_eq!(template_section.pages.len(), 2); - let from_section_config = site.library.get_page_by_key(template_section.pages[0]); + let from_section_config = library.get_page_by_key(template_section.pages[0]); assert_eq!(from_section_config.meta.template, Some("page_template.html".into())); assert_eq!(from_section_config.meta.title, Some("From section config".into())); - let override_page_template = site.library.get_page_by_key(template_section.pages[1]); + let override_page_template = library.get_page_by_key(template_section.pages[1]); assert_eq!(override_page_template.meta.template, Some("page_template_override.html".into())); assert_eq!(override_page_template.meta.title, Some("Override".into())); // It should have applied recursively as well let another_section = - site.library.get_section(&template_path.join("another_section").join("_index.md")).unwrap(); + library.get_section(&template_path.join("another_section").join("_index.md")).unwrap(); assert_eq!(another_section.subsections.len(), 0); assert_eq!(another_section.pages.len(), 1); - let changed_recursively = site.library.get_page_by_key(another_section.pages[0]); + let changed_recursively = library.get_page_by_key(another_section.pages[0]); assert_eq!(changed_recursively.meta.template, Some("page_template.html".into())); assert_eq!(changed_recursively.meta.title, Some("Changed recursively".into())); // But it should not have override a children page_template - let yet_another_section = site - .library + let yet_another_section = library .get_section(&template_path.join("yet_another_section").join("_index.md")) .unwrap(); assert_eq!(yet_another_section.subsections.len(), 0); assert_eq!(yet_another_section.pages.len(), 1); - let child = site.library.get_page_by_key(yet_another_section.pages[0]); + let child = library.get_page_by_key(yet_another_section.pages[0]); assert_eq!(child.meta.template, Some("page_template_child.html".into())); assert_eq!(child.meta.title, Some("Local section override".into())); } diff --git a/components/site/tests/site_i18n.rs b/components/site/tests/site_i18n.rs index ad85bdcb..6ccb790f 100644 --- a/components/site/tests/site_i18n.rs +++ b/components/site/tests/site_i18n.rs @@ -13,44 +13,45 @@ fn can_parse_multilingual_site() { let mut site = Site::new(&path, "config.toml").unwrap(); site.load().unwrap(); - assert_eq!(site.library.pages().len(), 10); - assert_eq!(site.library.sections().len(), 6); + let library = site.library.read().unwrap(); + assert_eq!(library.pages().len(), 10); + assert_eq!(library.sections().len(), 6); // default index sections let default_index_section = - site.library.get_section(&path.join("content").join("_index.md")).unwrap(); + library.get_section(&path.join("content").join("_index.md")).unwrap(); assert_eq!(default_index_section.pages.len(), 1); assert!(default_index_section.ancestors.is_empty()); let fr_index_section = - site.library.get_section(&path.join("content").join("_index.fr.md")).unwrap(); + library.get_section(&path.join("content").join("_index.fr.md")).unwrap(); assert_eq!(fr_index_section.pages.len(), 1); assert!(fr_index_section.ancestors.is_empty()); // blog sections get only their own language pages let blog_path = path.join("content").join("blog"); - let default_blog = site.library.get_section(&blog_path.join("_index.md")).unwrap(); + let default_blog = library.get_section(&blog_path.join("_index.md")).unwrap(); assert_eq!(default_blog.subsections.len(), 0); assert_eq!(default_blog.pages.len(), 4); assert_eq!( default_blog.ancestors, - vec![*site.library.get_section_key(&default_index_section.file.path).unwrap()] + vec![*library.get_section_key(&default_index_section.file.path).unwrap()] ); for key in &default_blog.pages { - let page = site.library.get_page_by_key(*key); + let page = library.get_page_by_key(*key); assert_eq!(page.lang, None); } - let fr_blog = site.library.get_section(&blog_path.join("_index.fr.md")).unwrap(); + let fr_blog = library.get_section(&blog_path.join("_index.fr.md")).unwrap(); assert_eq!(fr_blog.subsections.len(), 0); assert_eq!(fr_blog.pages.len(), 3); assert_eq!( fr_blog.ancestors, - vec![*site.library.get_section_key(&fr_index_section.file.path).unwrap()] + vec![*library.get_section_key(&fr_index_section.file.path).unwrap()] ); for key in &fr_blog.pages { - let page = site.library.get_page_by_key(*key); + let page = library.get_page_by_key(*key); assert_eq!(page.lang, Some("fr".to_string())); } } diff --git a/components/templates/src/global_fns/mod.rs b/components/templates/src/global_fns/mod.rs index 533173ba..bb7344b6 100644 --- a/components/templates/src/global_fns/mod.rs +++ b/components/templates/src/global_fns/mod.rs @@ -1,5 +1,6 @@ use std::collections::HashMap; -use std::sync::{Arc, Mutex}; +use std::path::PathBuf; +use std::sync::{Arc, Mutex, RwLock}; use tera::{from_value, to_value, Function as TeraFn, Result, Value}; @@ -190,18 +191,12 @@ impl TeraFn for GetTaxonomyUrl { #[derive(Debug)] pub struct GetPage { - pages: HashMap, + base_path: PathBuf, + library: Arc>, } impl GetPage { - pub fn new(library: &Library) -> Self { - let mut pages = HashMap::new(); - for page in library.pages_values() { - pages.insert( - page.file.relative.clone(), - to_value(library.get_page(&page.file.path).unwrap().to_serialized(library)).unwrap(), - ); - } - Self {pages} + pub fn new(base_path: PathBuf, library: Arc>) -> Self { + Self {base_path: base_path.join("content"), library} } } impl TeraFn for GetPage { @@ -211,8 +206,12 @@ impl TeraFn for GetPage { args.get("path"), "`get_page` requires a `path` argument with a string value" ); - match self.pages.get(&path) { - Some(p) => Ok(p.clone()), + let full_path = self.base_path.join(&path); + let library = self.library.read().unwrap(); + match library.get_page(&full_path) { + Some(p) => { + Ok(to_value(p.to_serialized(&library)).unwrap()) + }, None => Err(format!("Page `{}` not found.", path).into()), } } @@ -220,27 +219,12 @@ impl TeraFn for GetPage { #[derive(Debug)] pub struct GetSection { - sections: HashMap, - sections_basic: HashMap, + base_path: PathBuf, + library: Arc>, } impl GetSection { - pub fn new(library: &Library) -> Self { - let mut sections = HashMap::new(); - let mut sections_basic = HashMap::new(); - for section in library.sections_values() { - sections.insert( - section.file.relative.clone(), - to_value(library.get_section(§ion.file.path).unwrap().to_serialized(library)) - .unwrap(), - ); - - sections_basic.insert( - section.file.relative.clone(), - to_value(library.get_section(§ion.file.path).unwrap().to_serialized_basic(library)) - .unwrap(), - ); - } - Self {sections, sections_basic} + pub fn new(base_path: PathBuf, library: Arc>) -> Self { + Self {base_path: base_path.join("content"), library} } } impl TeraFn for GetSection { @@ -255,10 +239,17 @@ impl TeraFn for GetSection { .get("metadata_only") .map_or(false, |c| from_value::(c.clone()).unwrap_or(false)); - let container = if metadata_only { &self.sections_basic } else { &self.sections }; + let full_path = self.base_path.join(&path); + let library = self.library.read().unwrap(); - match container.get(&path) { - Some(p) => Ok(p.clone()), + match library.get_section(&full_path) { + Some(s) => { + if metadata_only { + Ok(to_value(s.to_serialized_basic(&library)).unwrap()) + } else { + Ok(to_value(s.to_serialized(&library)).unwrap()) + } + }, None => Err(format!("Section `{}` not found.", path).into()), } } @@ -267,16 +258,16 @@ impl TeraFn for GetSection { #[derive(Debug)] pub struct GetTaxonomy { - taxonomies: HashMap, + library: Arc>, + taxonomies: HashMap, } impl GetTaxonomy { - pub fn new(all_taxonomies: &[Taxonomy], library: &Library) -> Self { + pub fn new(all_taxonomies: Vec, library: Arc>) -> Self { let mut taxonomies = HashMap::new(); - for taxonomy in all_taxonomies { - taxonomies - .insert(taxonomy.kind.name.clone(), to_value(taxonomy.to_serialized(library)).unwrap()); + for taxo in all_taxonomies { + taxonomies.insert(taxo.kind.name.clone(), taxo); } - Self {taxonomies} + Self {taxonomies, library} } } impl TeraFn for GetTaxonomy { @@ -286,18 +277,19 @@ impl TeraFn for GetTaxonomy { args.get("kind"), "`get_taxonomy` requires a `kind` argument with a string value" ); - let container = match self.taxonomies.get(&kind) { - Some(c) => c, + + match self.taxonomies.get(&kind) { + Some(t) => { + Ok(to_value(t.to_serialized(&self.library.read().unwrap())).unwrap()) + }, None => { - return Err(format!( + Err(format!( "`get_taxonomy` received an unknown taxonomy as kind: {}", kind ) - .into()); + .into()) } - }; - - Ok(to_value(container).unwrap()) + } } } @@ -306,6 +298,7 @@ mod tests { use super::{GetTaxonomy, GetTaxonomyUrl, GetUrl, Trans}; use std::collections::HashMap; + use std::sync::{RwLock, Arc}; use tera::{to_value, Value, Function}; @@ -355,12 +348,12 @@ mod tests { #[test] fn can_get_taxonomy() { let taxo_config = TaxonomyConfig { name: "tags".to_string(), ..TaxonomyConfig::default() }; - let library = Library::new(0, 0, false); - let tag = TaxonomyItem::new("Programming", &taxo_config, &Config::default(), vec![], &library); + let library = Arc::new(RwLock::new(Library::new(0, 0, false))); + let tag = TaxonomyItem::new("Programming", &taxo_config, &Config::default(), vec![], &library.read().unwrap()); let tags = Taxonomy { kind: taxo_config, items: vec![tag] }; let taxonomies = vec![tags.clone()]; - let static_fn = GetTaxonomy::new(&taxonomies, &library); + let static_fn = GetTaxonomy::new(taxonomies.clone(), library.clone()); // can find it correctly let mut args = HashMap::new(); args.insert("kind".to_string(), to_value("tags").unwrap()); diff --git a/src/console.rs b/src/console.rs index 2d50ca91..5151cf82 100644 --- a/src/console.rs +++ b/src/console.rs @@ -47,23 +47,24 @@ fn colorize(message: &str, color: &ColorSpec) { /// Display in the console the number of pages/sections in the site pub fn notify_site_size(site: &Site) { + let library = site.library.read().unwrap(); println!( "-> Creating {} pages ({} orphan), {} sections, and processing {} images", - site.library.pages().len(), - site.get_all_orphan_pages().len(), - site.library.sections().len() - 1, // -1 since we do not the index as a section + library.pages().len(), + site.get_number_orphan_pages(), + library.sections().len() - 1, // -1 since we do not the index as a section site.num_img_ops(), ); } /// Display a warning in the console if there are ignored pages in the site pub fn warn_about_ignored_pages(site: &Site) { - let ignored_pages: Vec<_> = site - .library + let library = site.library.read().unwrap(); + let ignored_pages: Vec<_> = library .sections_values() .iter() .flat_map(|s| { - s.ignored_pages.iter().map(|k| site.library.get_page_by_key(*k).file.path.clone()) + s.ignored_pages.iter().map(|k| library.get_page_by_key(*k).file.path.clone()) }) .collect(); From 9398ab789c401db60b81b62491b8cc478ec52156 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Mon, 28 Jan 2019 00:34:18 +0100 Subject: [PATCH 30/74] Clone-less toc making --- components/rendering/src/markdown.rs | 10 +- components/rendering/src/table_of_contents.rs | 150 ++++++------------ 2 files changed, 54 insertions(+), 106 deletions(-) diff --git a/components/rendering/src/markdown.rs b/components/rendering/src/markdown.rs index 7e7611ff..3c6f20b2 100644 --- a/components/rendering/src/markdown.rs +++ b/components/rendering/src/markdown.rs @@ -12,7 +12,7 @@ use context::RenderContext; use errors::{Error, Result}; use front_matter::InsertAnchor; use link_checker::check_url; -use table_of_contents::{Header, make_table_of_contents, TempHeader}; +use table_of_contents::{Header, make_table_of_contents}; use utils::site::resolve_internal_link; use utils::vec::InsertMany; @@ -140,7 +140,7 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result = None; let mut inserted_anchors: Vec = vec![]; - let mut headers: Vec = vec![]; + let mut headers: Vec
= vec![]; let mut opts = Options::empty(); let mut has_summary = false; @@ -253,8 +253,8 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result Result, } impl Header { - pub fn from_temp_header(tmp: &TempHeader, children: Vec
) -> Header { + pub fn new(level: i32) -> Header { Header { - level: tmp.level, - id: tmp.id.clone(), - title: tmp.title.clone(), - permalink: tmp.permalink.clone(), - children, - } - } -} - -/// Populated while receiving events from the markdown parser -#[derive(Debug, PartialEq, Clone)] -pub struct TempHeader { - pub level: i32, - pub id: String, - pub permalink: String, - pub title: String, -} - -impl TempHeader { - pub fn new(level: i32) -> TempHeader { - TempHeader { level, id: String::new(), permalink: String::new(), title: String::new(), + children: Vec::new(), } } } -impl Default for TempHeader { +impl Default for Header { fn default() -> Self { - TempHeader::new(0) + Header::new(0) } } -/// Recursively finds children of a header -fn find_children( - parent_level: i32, - start_at: usize, - temp_headers: &[TempHeader], -) -> (usize, Vec
) { - let mut headers = vec![]; - - let mut start_at = start_at; - // If we have children, we will need to skip some headers since they are already inserted - let mut to_skip = 0; - - for h in &temp_headers[start_at..] { - // stop when we encounter a title at the same level or higher - // than the parent one. Here a lower integer is considered higher as we are talking about - // HTML headers: h1, h2, h3, h4, h5 and h6 - if h.level <= parent_level { - return (start_at, headers); - } - - // Do we need to skip some headers? - if to_skip > 0 { - to_skip -= 1; - continue; - } - - let (end, children) = find_children(h.level, start_at + 1, temp_headers); - headers.push(Header::from_temp_header(h, children)); - - // we didn't find any children - if end == start_at { - start_at += 1; - to_skip = 0; - } else { - // calculates how many we need to skip. Since the find_children start_at starts at 1, - // we need to remove 1 to ensure correctness - to_skip = end - start_at - 1; - start_at = end; - } - - // we don't want to index out of bounds - if start_at + 1 > temp_headers.len() { - return (start_at, headers); - } - } - - (start_at, headers) -} - /// Converts the flat temp headers into a nested set of headers /// representing the hierarchy -pub fn make_table_of_contents(temp_headers: &[TempHeader]) -> Vec
{ +pub fn make_table_of_contents(headers: Vec
) -> Vec
{ let mut toc = vec![]; - let mut start_idx = 0; - for (i, h) in temp_headers.iter().enumerate() { - if i < start_idx { + 'parent: for header in headers { + if toc.is_empty() { + toc.push(header); continue; } - let (end_idx, children) = find_children(h.level, start_idx + 1, temp_headers); - start_idx = end_idx; - toc.push(Header::from_temp_header(h, children)); + + // See if we have to insert as a child of a previous header + for h in toc.iter_mut().rev() { + // Look in its children first + for child in h.children.iter_mut().rev() { + if header.level > child.level { + child.children.push(header); + continue 'parent; + } + } + if header.level > h.level { + h.children.push(header); + continue 'parent; + } + } + + // Nop, just insert it + toc.push(header) } toc @@ -118,25 +65,25 @@ mod tests { #[test] fn can_make_basic_toc() { - let input = vec![TempHeader::new(1), TempHeader::new(1), TempHeader::new(1)]; - let toc = make_table_of_contents(&input); + let input = vec![Header::new(1), Header::new(1), Header::new(1)]; + let toc = make_table_of_contents(input); assert_eq!(toc.len(), 3); } #[test] fn can_make_more_complex_toc() { let input = vec![ - TempHeader::new(1), - TempHeader::new(2), - TempHeader::new(2), - TempHeader::new(3), - TempHeader::new(2), - TempHeader::new(1), - TempHeader::new(2), - TempHeader::new(3), - TempHeader::new(3), + Header::new(1), + Header::new(2), + Header::new(2), + Header::new(3), + Header::new(2), + Header::new(1), + Header::new(2), + Header::new(3), + Header::new(3), ]; - let toc = make_table_of_contents(&input); + let toc = make_table_of_contents(input); assert_eq!(toc.len(), 2); assert_eq!(toc[0].children.len(), 3); assert_eq!(toc[1].children.len(), 1); @@ -147,15 +94,16 @@ mod tests { #[test] fn can_make_messy_toc() { let input = vec![ - TempHeader::new(3), - TempHeader::new(2), - TempHeader::new(2), - TempHeader::new(3), - TempHeader::new(2), - TempHeader::new(1), - TempHeader::new(4), + Header::new(3), + Header::new(2), + Header::new(2), + Header::new(3), + Header::new(2), + Header::new(1), + Header::new(4), ]; - let toc = make_table_of_contents(&input); + let toc = make_table_of_contents(input); + println!("{:#?}", toc); assert_eq!(toc.len(), 5); assert_eq!(toc[2].children.len(), 1); assert_eq!(toc[4].children.len(), 1); From 0b897ce7c728e9c520a3ff56ba7deba94c1e2f4c Mon Sep 17 00:00:00 2001 From: Peng Guanwen Date: Tue, 29 Jan 2019 16:30:54 +0800 Subject: [PATCH 31/74] Replace trim_{left, right} with trim_{start, end} trim_{start, end} is introduced in rust 1.30.0 and trim_{left, right} is deprecated since 1.33.0. --- components/library/src/content/page.rs | 2 +- components/rendering/src/shortcode.rs | 2 +- components/templates/src/filters.rs | 4 ++-- src/cmd/init.rs | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/components/library/src/content/page.rs b/components/library/src/content/page.rs index cc5407c9..89796d49 100644 --- a/components/library/src/content/page.rs +++ b/components/library/src/content/page.rs @@ -153,7 +153,7 @@ impl Page { }; if let Some(ref p) = page.meta.path { - page.path = p.trim().trim_left_matches('/').to_string(); + page.path = p.trim().trim_start_matches('/').to_string(); } else { let mut path = if page.file.components.is_empty() { page.slug.clone() diff --git a/components/rendering/src/shortcode.rs b/components/rendering/src/shortcode.rs index 26450842..e5bd6795 100644 --- a/components/rendering/src/shortcode.rs +++ b/components/rendering/src/shortcode.rs @@ -108,7 +108,7 @@ fn render_shortcode( } if let Some(ref b) = body { // Trimming right to avoid most shortcodes with bodies ending up with a HTML new line - tera_context.insert("body", b.trim_right()); + tera_context.insert("body", b.trim_end()); } tera_context.extend(context.tera_context.clone()); diff --git a/components/templates/src/filters.rs b/components/templates/src/filters.rs index a8911afa..133feb87 100644 --- a/components/templates/src/filters.rs +++ b/components/templates/src/filters.rs @@ -21,9 +21,9 @@ pub fn markdown(value: &Value, args: &HashMap) -> TeraResult") + .trim_start_matches("

") // pulldown_cmark finishes a paragraph with `

\n` - .trim_right_matches("

\n") + .trim_end_matches("

\n") .to_string(); } diff --git a/src/cmd/init.rs b/src/cmd/init.rs index c47ef5d3..b2634821 100644 --- a/src/cmd/init.rs +++ b/src/cmd/init.rs @@ -41,7 +41,7 @@ pub fn create_new_project(name: &str) -> Result<()> { let search = ask_bool("> Do you want to build a search index of the content?", false)?; let config = CONFIG - .trim_left() + .trim_start() .replace("%BASE_URL%", &base_url) .replace("%COMPILE_SASS%", &format!("{}", compile_sass)) .replace("%SEARCH%", &format!("{}", search)) From 1c7729cac65e0b95eceb85f45b4a651624b64e42 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Tue, 29 Jan 2019 19:20:03 +0100 Subject: [PATCH 32/74] Default lang to config.default_language --- Cargo.lock | 102 ++++++++++-------- components/config/src/config.rs | 13 ++- components/library/src/content/file_info.rs | 16 +-- components/library/src/content/page.rs | 18 ++-- components/library/src/content/section.rs | 14 +-- components/library/src/content/ser.rs | 6 +- components/library/src/library.rs | 7 +- components/library/src/taxonomies/mod.rs | 28 +++-- components/site/src/lib.rs | 20 ++-- components/site/tests/site.rs | 2 +- components/site/tests/site_i18n.rs | 4 +- components/templates/src/global_fns/mod.rs | 10 +- .../documentation/templates/pages-sections.md | 8 +- 13 files changed, 138 insertions(+), 110 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fa0d547b..61483e53 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14,7 +14,7 @@ dependencies = [ "actix_derive 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-channel 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", @@ -32,7 +32,7 @@ dependencies = [ "tokio-timer 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", "trust-dns-proto 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "trust-dns-resolver 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "uuid 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -89,7 +89,7 @@ dependencies = [ "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", @@ -388,10 +388,10 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-channel 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-epoch 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -399,12 +399,10 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -422,8 +420,8 @@ name = "crossbeam-deque" version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-epoch 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -442,12 +440,12 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -463,10 +461,11 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -948,7 +947,7 @@ name = "ignore" version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-channel 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1366,10 +1365,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "nom" -version = "4.1.1" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1511,7 +1511,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1584,7 +1584,7 @@ version = "0.7.24" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1685,16 +1685,17 @@ dependencies = [ [[package]] name = "rand" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_os 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_jitter 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_os 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1739,14 +1740,24 @@ dependencies = [ ] [[package]] -name = "rand_os" +name = "rand_jitter" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_os" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-cprng 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1898,7 +1909,7 @@ dependencies = [ "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "uuid 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2274,7 +2285,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2432,7 +2443,7 @@ name = "tokio-executor" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2461,7 +2472,7 @@ name = "tokio-reactor" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2516,13 +2527,13 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-channel 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2532,7 +2543,7 @@ name = "tokio-timer" version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2804,10 +2815,10 @@ dependencies = [ [[package]] name = "uuid" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2833,7 +2844,7 @@ name = "v_escape_derive" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "nom 4.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "nom 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2844,7 +2855,7 @@ name = "v_escape_derive" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "nom 4.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "nom 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3080,13 +3091,13 @@ dependencies = [ "checksum crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d663548de7f5cca343f1e0a48d14dcfb0e9eb4e079ec58883b7251539fa10aeb" "checksum crc32fast 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e91d5240c6975ef33aeb5f148f35275c25eda8e8a5f95abe421978b05b8bf192" "checksum crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad4c7ea749d9fb09e23c5cb17e3b70650860553a0e2744e38446b1803bf7db94" -"checksum crossbeam-channel 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "137bc235f622ffaa0428e3854e24acb53291fc0b3ff6fb2cb75a8be6fb02f06b" +"checksum crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f0ed1a4de2235cabda8558ff5840bffb97fcb64c97827f354a451307df5f72b" "checksum crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f739f8c5363aca78cfb059edf753d8f0d36908c348f3d8d1503f03d8b75d9cf3" "checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13" "checksum crossbeam-epoch 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "927121f5407de9956180ff5e936fe3cf4324279280001cd56b669d28ee7e9150" -"checksum crossbeam-epoch 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f10a4f8f409aaac4b16a5474fb233624238fcdeefb9ba50d5ea059aab63ba31c" +"checksum crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "04c9e3102cc2d69cd681412141b390abd55a362afc1540965dad0ad4d34280b4" "checksum crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2760899e32a1d58d5abb31129f8fae5de75220bc2176e77ff7c627ae45c918d9" -"checksum crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "41ee4864f4797060e52044376f7d107429ce1fb43460021b126424b7180ee21a" +"checksum crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c" "checksum csv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "9fd1c44c58078cfbeaf11fbb3eac9ae5534c23004ed770cc4bfb48e658ae4f04" "checksum csv-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa5cdef62f37e6ffe7d1f07a381bc0db32b7a3ff1cac0de56cb0d81e71f53d65" "checksum ctrlc 3.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "630391922b1b893692c6334369ff528dcc3a9d8061ccf4c803aa8f83cb13db5e" @@ -3181,7 +3192,7 @@ dependencies = [ "checksum new_debug_unreachable 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0cdc457076c78ab54d5e0d6fa7c47981757f1e34dc39ff92787f217dede586c4" "checksum nix 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d37e713a259ff641624b6cb20e3b12b2952313ba36b6823c0f16e6cfd9e5de17" "checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" -"checksum nom 4.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9c349f68f25f596b9f44cf0e7c69752a5c633b0550c3ff849518bfba0233774a" +"checksum nom 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b30adc557058ce00c9d0d7cb3c6e0b5bc6f36e2e2eabe74b0ba726d194abd588" "checksum notify 4.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "c968cf37cf949114b00d51b0b23536d1c3a4a3963767cf4c969c65a6af78dc7d" "checksum num-derive 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d9fe8fcafd1b86a37ce8a1cfa15ae504817e0c8c2e7ad42767371461ac1d316d" "checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" @@ -3216,13 +3227,14 @@ dependencies = [ "checksum quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd8e04bd9c52e0342b406469d494fcb033be4bdbe5c606016defbb1681411e1" "checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" "checksum rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9" -"checksum rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3906503e80ac6cbcacb2c2973fa8e473f24d7e2747c8c92bb230c2441cad96b5" +"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" "checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" "checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" "checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0" "checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" "checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" -"checksum rand_os 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f46fbd5550acf75b0c2730f5dd1873751daf9beb8f11b44027778fae50d7feca" +"checksum rand_jitter 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "29fe7b8bc348249f3b1bbb9ab8baa6fa3419196ecfbf213408bca1b2494710de" +"checksum rand_os 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b7c690732391ae0abafced5015ffb53656abfaec61b342290e5eb56b286a679d" "checksum rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "086bd09a33c7044e56bb44d5bdde5a60e7f119a9e95b0775f545de759a32fe05" "checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" "checksum rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "373814f27745b2686b350dd261bfd24576a6fb0e2c5919b3a2b6005f820b0473" @@ -3324,7 +3336,7 @@ dependencies = [ "checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" "checksum utf-8 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)" = "05e42f7c18b8f902290b009cde6d651262f956c98bc51bca4cd1d511c9cd85c7" "checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737" -"checksum uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dab5c5526c5caa3d106653401a267fed923e7046f35895ffcb5ca42db64942e6" +"checksum uuid 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0238db0c5b605dd1cf51de0f21766f97fba2645897024461d6a00c036819a768" "checksum v_escape 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c8b50688edb86f4c092a1a9fe8bda004b0faa3197100897653809e97e09a2814" "checksum v_escape 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6177565a30b7091835dd4a33a81fc4f064e671729a6b7cb964675b2a0bb295a1" "checksum v_escape_derive 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7cd994c63b487fef7aad31e5394ec04b9e24de7b32ea5251c9fb499cd2cbf44c" diff --git a/components/config/src/config.rs b/components/config/src/config.rs index 4c02086c..1f371929 100644 --- a/components/config/src/config.rs +++ b/components/config/src/config.rs @@ -41,8 +41,9 @@ pub struct Taxonomy { pub paginate_path: Option, /// Whether to generate a RSS feed only for each taxonomy term, defaults to false pub rss: bool, - /// The language for that taxonomy, only used in multilingual sites - pub lang: Option, + /// The language for that taxonomy, only used in multilingual sites. + /// Defaults to the config `default_language` if not set + pub lang: String, } impl Taxonomy { @@ -70,7 +71,7 @@ impl Default for Taxonomy { paginate_by: None, paginate_path: None, rss: false, - lang: None, + lang: String::new(), } } } @@ -172,6 +173,12 @@ impl Config { Some(glob_set_builder.build().expect("Bad ignored_content in config file.")); } + for taxonomy in config.taxonomies.iter_mut() { + if taxonomy.lang.is_empty() { + taxonomy.lang = config.default_language.clone(); + } + } + Ok(config) } diff --git a/components/library/src/content/file_info.rs b/components/library/src/content/file_info.rs index 7111fa50..94311b52 100644 --- a/components/library/src/content/file_info.rs +++ b/components/library/src/content/file_info.rs @@ -112,14 +112,14 @@ impl FileInfo { /// Look for a language in the filename. /// If a language has been found, update the name of the file in this struct to /// remove it and return the language code - pub fn find_language(&mut self, config: &Config) -> Result> { + pub fn find_language(&mut self, config: &Config) -> Result { // No languages? Nothing to do if !config.is_multilingual() { - return Ok(None); + return Ok(config.default_language.clone()); } if !self.name.contains('.') { - return Ok(None); + return Ok(config.default_language.clone()); } // Go with the assumption that no one is using `.` in filenames when using i18n @@ -136,7 +136,7 @@ impl FileInfo { self.canonical = self.parent.join(&self.name); let lang = parts.swap_remove(0); - Ok(Some(lang)) + Ok(lang) } } @@ -187,7 +187,7 @@ mod tests { )); let res = file.find_language(&config); assert!(res.is_ok()); - assert_eq!(res.unwrap(), Some(String::from("fr"))); + assert_eq!(res.unwrap(), "fr"); } #[test] @@ -200,7 +200,7 @@ mod tests { assert_eq!(file.components, ["posts".to_string(), "tutorials".to_string()]); let res = file.find_language(&config); assert!(res.is_ok()); - assert_eq!(res.unwrap(), Some(String::from("fr"))); + assert_eq!(res.unwrap(), "fr"); } #[test] @@ -211,7 +211,7 @@ mod tests { )); let res = file.find_language(&config); assert!(res.is_ok()); - assert!(res.unwrap().is_none()); + assert_eq!(res.unwrap(), config.default_language); } #[test] @@ -234,6 +234,6 @@ mod tests { )); let res = file.find_language(&config); assert!(res.is_ok()); - assert_eq!(res.unwrap(), Some(String::from("fr"))); + assert_eq!(res.unwrap(), "fr"); } } diff --git a/components/library/src/content/page.rs b/components/library/src/content/page.rs index 89796d49..420e414a 100644 --- a/components/library/src/content/page.rs +++ b/components/library/src/content/page.rs @@ -71,9 +71,9 @@ pub struct Page { /// How long would it take to read the raw content. /// See `get_reading_analytics` on how it is calculated pub reading_time: Option, - /// The language of that page. `None` if the user doesn't setup `languages` in config. + /// The language of that page. Equal to the default lang if the user doesn't setup `languages` in config. /// Corresponds to the lang in the {slug}.{lang}.md file scheme - pub lang: Option, + pub lang: String, /// Contains all the translated version of that page pub translations: Vec, } @@ -102,7 +102,7 @@ impl Page { toc: vec![], word_count: None, reading_time: None, - lang: None, + lang: String::new(), translations: Vec::new(), } } @@ -161,8 +161,8 @@ impl Page { format!("{}/{}", page.file.components.join("/"), page.slug) }; - if let Some(ref lang) = page.lang { - path = format!("{}/{}", lang, path); + if page.lang != config.default_language { + path = format!("{}/{}", page.lang, path); } page.path = path; @@ -302,7 +302,7 @@ impl Default for Page { toc: vec![], word_count: None, reading_time: None, - lang: None, + lang: String::new(), translations: Vec::new(), } } @@ -590,7 +590,7 @@ Bonjour le monde"# let res = Page::parse(Path::new("hello.fr.md"), &content, &config); assert!(res.is_ok()); let page = res.unwrap(); - assert_eq!(page.lang, Some("fr".to_string())); + assert_eq!(page.lang, "fr".to_string()); assert_eq!(page.slug, "hello"); assert_eq!(page.permalink, "http://a-website.com/fr/hello/"); } @@ -608,7 +608,7 @@ Bonjour le monde"# assert!(res.is_ok()); let page = res.unwrap(); assert_eq!(page.meta.date, Some("2018-10-08".to_string())); - assert_eq!(page.lang, Some("fr".to_string())); + assert_eq!(page.lang, "fr".to_string()); assert_eq!(page.slug, "hello"); assert_eq!(page.permalink, "http://a-website.com/fr/hello/"); } @@ -626,7 +626,7 @@ Bonjour le monde"# let res = Page::parse(Path::new("hello.fr.md"), &content, &config); assert!(res.is_ok()); let page = res.unwrap(); - assert_eq!(page.lang, Some("fr".to_string())); + assert_eq!(page.lang, "fr".to_string()); assert_eq!(page.slug, "hello"); assert_eq!(page.permalink, "http://a-website.com/bonjour/"); } diff --git a/components/library/src/content/section.rs b/components/library/src/content/section.rs index 54056891..2a7c4df8 100644 --- a/components/library/src/content/section.rs +++ b/components/library/src/content/section.rs @@ -51,9 +51,9 @@ pub struct Section { /// How long would it take to read the raw content. /// See `get_reading_analytics` on how it is calculated pub reading_time: Option, - /// The language of that section. `None` if the user doesn't setup `languages` in config. + /// The language of that section. Equal to the default lang if the user doesn't setup `languages` in config. /// Corresponds to the lang in the _index.{lang}.md file scheme - pub lang: Option, + pub lang: String, /// Contains all the translated version of that section pub translations: Vec, } @@ -79,7 +79,7 @@ impl Section { toc: vec![], word_count: None, reading_time: None, - lang: None, + lang: String::new(), translations: Vec::new(), } } @@ -93,8 +93,8 @@ impl Section { section.word_count = Some(word_count); section.reading_time = Some(reading_time); let path = format!("{}/", section.file.components.join("/")); - if let Some(ref lang) = section.lang { - section.path = format!("{}/{}", lang, path); + if section.lang != config.default_language { + section.path = format!("{}/{}", section.lang, path); } else { section.path = path; } @@ -237,7 +237,7 @@ impl Default for Section { toc: vec![], reading_time: None, word_count: None, - lang: None, + lang: String::new(), translations: Vec::new(), } } @@ -315,7 +315,7 @@ Bonjour le monde"# let res = Section::parse(Path::new("content/hello/nested/_index.fr.md"), &content, &config); assert!(res.is_ok()); let section = res.unwrap(); - assert_eq!(section.lang, Some("fr".to_string())); + assert_eq!(section.lang, "fr".to_string()); assert_eq!(section.permalink, "http://a-website.com/fr/hello/nested/"); } } diff --git a/components/library/src/content/ser.rs b/components/library/src/content/ser.rs index 3404952e..e8f311b2 100644 --- a/components/library/src/content/ser.rs +++ b/components/library/src/content/ser.rs @@ -9,7 +9,7 @@ use rendering::Header; #[derive(Clone, Debug, PartialEq, Serialize)] pub struct TranslatedContent<'a> { - lang: &'a Option, + lang: &'a str, permalink: &'a str, title: &'a Option, } @@ -70,7 +70,7 @@ pub struct SerializingPage<'a> { toc: &'a [Header], assets: &'a [String], draft: bool, - lang: &'a Option, + lang: &'a str, lighter: Option>>, heavier: Option>>, earlier: Option>>, @@ -211,7 +211,7 @@ pub struct SerializingSection<'a> { components: &'a [String], word_count: Option, reading_time: Option, - lang: &'a Option, + lang: &'a str, toc: &'a [Header], assets: &'a [String], pages: Vec>, diff --git a/components/library/src/library.rs b/components/library/src/library.rs index 5552ee91..ad295e84 100644 --- a/components/library/src/library.rs +++ b/components/library/src/library.rs @@ -7,6 +7,7 @@ use front_matter::SortBy; use content::{Page, Section}; use sorting::{find_siblings, sort_pages_by_date, sort_pages_by_weight}; +use config::Config; /// Houses everything about pages and sections /// Think of it as a database where each page and section has an id (Key here) @@ -82,7 +83,7 @@ impl Library { /// Find out the direct subsections of each subsection if there are some /// as well as the pages for each section - pub fn populate_sections(&mut self) { + pub fn populate_sections(&mut self, config: &Config) { let root_path = self.sections.values().find(|s| s.is_index()).map(|s| s.file.parent.clone()).unwrap(); // We are going to get both the ancestors and grandparents for each section in one go @@ -128,8 +129,8 @@ impl Library { } for (key, page) in &mut self.pages { - let parent_filename = if let Some(ref lang) = page.lang { - format!("_index.{}.md", lang) + let parent_filename = if page.lang != config.default_language { + format!("_index.{}.md", page.lang) } else { "_index.md".to_string() }; diff --git a/components/library/src/taxonomies/mod.rs b/components/library/src/taxonomies/mod.rs index 6d949d36..0756b535 100644 --- a/components/library/src/taxonomies/mod.rs +++ b/components/library/src/taxonomies/mod.rs @@ -64,8 +64,8 @@ impl TaxonomyItem { .collect(); let (mut pages, ignored_pages) = sort_pages_by_date(data); let slug = slugify(name); - let permalink = if let Some(ref lang) = taxonomy.lang { - config.make_permalink(&format!("/{}/{}/{}", lang, taxonomy.name, slug)) + let permalink = if taxonomy.lang != config.default_language { + config.make_permalink(&format!("/{}/{}/{}", taxonomy.lang, taxonomy.name, slug)) } else { config.make_permalink(&format!("/{}/{}", taxonomy.name, slug)) }; @@ -242,9 +242,9 @@ mod tests { let mut library = Library::new(2, 0, false); config.taxonomies = vec![ - TaxonomyConfig { name: "categories".to_string(), ..TaxonomyConfig::default() }, - TaxonomyConfig { name: "tags".to_string(), ..TaxonomyConfig::default() }, - TaxonomyConfig { name: "authors".to_string(), ..TaxonomyConfig::default() }, + TaxonomyConfig { name: "categories".to_string(), lang: config.default_language.clone(), ..TaxonomyConfig::default() }, + TaxonomyConfig { name: "tags".to_string(), lang: config.default_language.clone(), ..TaxonomyConfig::default() }, + TaxonomyConfig { name: "authors".to_string(), lang: config.default_language.clone(), ..TaxonomyConfig::default() }, ]; let mut page1 = Page::default(); @@ -252,6 +252,7 @@ mod tests { taxo_page1.insert("tags".to_string(), vec!["rust".to_string(), "db".to_string()]); taxo_page1.insert("categories".to_string(), vec!["Programming tutorials".to_string()]); page1.meta.taxonomies = taxo_page1; + page1.lang = config.default_language.clone(); library.insert_page(page1); let mut page2 = Page::default(); @@ -259,6 +260,7 @@ mod tests { taxo_page2.insert("tags".to_string(), vec!["rust".to_string(), "js".to_string()]); taxo_page2.insert("categories".to_string(), vec!["Other".to_string()]); page2.meta.taxonomies = taxo_page2; + page2.lang = config.default_language.clone(); library.insert_page(page2); let mut page3 = Page::default(); @@ -266,6 +268,7 @@ mod tests { taxo_page3.insert("tags".to_string(), vec!["js".to_string()]); taxo_page3.insert("authors".to_string(), vec!["Vincent Prouillet".to_string()]); page3.meta.taxonomies = taxo_page3; + page3.lang = config.default_language.clone(); library.insert_page(page3); let taxonomies = find_taxonomies(&config, &library).unwrap(); @@ -322,11 +325,12 @@ mod tests { let mut library = Library::new(2, 0, false); config.taxonomies = - vec![TaxonomyConfig { name: "authors".to_string(), ..TaxonomyConfig::default() }]; + vec![TaxonomyConfig { name: "authors".to_string(), lang: config.default_language.clone(), ..TaxonomyConfig::default() }]; let mut page1 = Page::default(); let mut taxo_page1 = HashMap::new(); taxo_page1.insert("tags".to_string(), vec!["rust".to_string(), "db".to_string()]); page1.meta.taxonomies = taxo_page1; + page1.lang = config.default_language.clone(); library.insert_page(page1); let taxonomies = find_taxonomies(&config, &library); @@ -346,9 +350,9 @@ mod tests { let mut library = Library::new(2, 0, true); config.taxonomies = vec![ - TaxonomyConfig { name: "categories".to_string(), ..TaxonomyConfig::default() }, - TaxonomyConfig { name: "tags".to_string(), ..TaxonomyConfig::default() }, - TaxonomyConfig { name: "auteurs".to_string(), lang: Some("fr".to_string()), ..TaxonomyConfig::default() }, + TaxonomyConfig { name: "categories".to_string(), lang: config.default_language.clone(), ..TaxonomyConfig::default() }, + TaxonomyConfig { name: "tags".to_string(), lang: config.default_language.clone(), ..TaxonomyConfig::default() }, + TaxonomyConfig { name: "auteurs".to_string(), lang: "fr".to_string(), ..TaxonomyConfig::default() }, ]; let mut page1 = Page::default(); @@ -356,6 +360,7 @@ mod tests { taxo_page1.insert("tags".to_string(), vec!["rust".to_string(), "db".to_string()]); taxo_page1.insert("categories".to_string(), vec!["Programming tutorials".to_string()]); page1.meta.taxonomies = taxo_page1; + page1.lang = config.default_language.clone(); library.insert_page(page1); let mut page2 = Page::default(); @@ -363,10 +368,11 @@ mod tests { taxo_page2.insert("tags".to_string(), vec!["rust".to_string()]); taxo_page2.insert("categories".to_string(), vec!["Other".to_string()]); page2.meta.taxonomies = taxo_page2; + page2.lang = config.default_language.clone(); library.insert_page(page2); let mut page3 = Page::default(); - page3.lang = Some("fr".to_string()); + page3.lang = "fr".to_string(); let mut taxo_page3 = HashMap::new(); taxo_page3.insert("auteurs".to_string(), vec!["Vincent Prouillet".to_string()]); page3.meta.taxonomies = taxo_page3; @@ -431,7 +437,7 @@ mod tests { vec![TaxonomyConfig { name: "tags".to_string(), ..TaxonomyConfig::default() }]; let mut page1 = Page::default(); - page1.lang = Some("fr".to_string()); + page1.lang = "fr".to_string(); let mut taxo_page1 = HashMap::new(); taxo_page1.insert("tags".to_string(), vec!["rust".to_string(), "db".to_string()]); page1.meta.taxonomies = taxo_page1; diff --git a/components/site/src/lib.rs b/components/site/src/lib.rs index bc84def1..8a8e0b78 100644 --- a/components/site/src/lib.rs +++ b/components/site/src/lib.rs @@ -396,10 +396,10 @@ impl Site { pub fn find_parent_section_insert_anchor( &self, parent_path: &PathBuf, - lang: &Option, + lang: &str, ) -> InsertAnchor { - let parent = if let Some(ref l) = lang { - parent_path.join(format!("_index.{}.md", l)) + let parent = if lang != self.config.default_language { + parent_path.join(format!("_index.{}.md", lang)) } else { parent_path.join("_index.md") }; @@ -413,7 +413,7 @@ impl Site { /// as well as the pages for each section pub fn populate_sections(&mut self) { let mut library = self.library.write().expect("Get lock for populate_sections"); - library.populate_sections(); + library.populate_sections(&self.config); } /// Find all the tags and categories if it's asked in the config @@ -531,7 +531,7 @@ impl Site { library .pages_values() .iter() - .filter(|p| p.lang.is_none()) + .filter(|p| p.lang == self.config.default_language) .map(|p| *p) .collect() } else { @@ -547,7 +547,7 @@ impl Site { let pages = library .pages_values() .iter() - .filter(|p| if let Some(ref l) = p.lang { l == &lang.code } else { false }) + .filter(|p| p.lang == lang.code) .map(|p| *p) .collect(); self.render_rss_feed(pages, Some(&PathBuf::from(lang.code.clone())))?; @@ -728,8 +728,8 @@ impl Site { } ensure_directory_exists(&self.output_path)?; - let output_path = if let Some(ref lang) = taxonomy.kind.lang { - let mid_path = self.output_path.join(lang); + let output_path = if taxonomy.kind.lang != self.config.default_language { + let mid_path = self.output_path.join(&taxonomy.kind.lang); create_directory(&mid_path)?; mid_path.join(&taxonomy.kind.name) } else { @@ -922,8 +922,8 @@ impl Site { ensure_directory_exists(&self.output_path)?; let mut output_path = self.output_path.clone(); - if let Some(ref lang) = section.lang { - output_path.push(lang); + if section.lang != self.config.default_language { + output_path.push(§ion.lang); if !output_path.exists() { create_directory(&output_path)?; } diff --git a/components/site/tests/site.rs b/components/site/tests/site.rs index 3a13fb92..7e025e70 100644 --- a/components/site/tests/site.rs +++ b/components/site/tests/site.rs @@ -486,7 +486,7 @@ fn can_build_site_with_pagination_for_taxonomy() { paginate_by: Some(2), paginate_path: None, rss: true, - lang: None, + lang: site.config.default_language.clone(), }); site.load().unwrap(); { diff --git a/components/site/tests/site_i18n.rs b/components/site/tests/site_i18n.rs index 6ccb790f..f9b2a986 100644 --- a/components/site/tests/site_i18n.rs +++ b/components/site/tests/site_i18n.rs @@ -40,7 +40,7 @@ fn can_parse_multilingual_site() { ); for key in &default_blog.pages { let page = library.get_page_by_key(*key); - assert_eq!(page.lang, None); + assert_eq!(page.lang, "en"); } let fr_blog = library.get_section(&blog_path.join("_index.fr.md")).unwrap(); @@ -52,7 +52,7 @@ fn can_parse_multilingual_site() { ); for key in &fr_blog.pages { let page = library.get_page_by_key(*key); - assert_eq!(page.lang, Some("fr".to_string())); + assert_eq!(page.lang, "fr"); } } diff --git a/components/templates/src/global_fns/mod.rs b/components/templates/src/global_fns/mod.rs index bb7344b6..2398386d 100644 --- a/components/templates/src/global_fns/mod.rs +++ b/components/templates/src/global_fns/mod.rs @@ -347,9 +347,10 @@ mod tests { #[test] fn can_get_taxonomy() { - let taxo_config = TaxonomyConfig { name: "tags".to_string(), ..TaxonomyConfig::default() }; + let config = Config::default(); + let taxo_config = TaxonomyConfig { name: "tags".to_string(), lang: config.default_language.clone(), ..TaxonomyConfig::default() }; let library = Arc::new(RwLock::new(Library::new(0, 0, false))); - let tag = TaxonomyItem::new("Programming", &taxo_config, &Config::default(), vec![], &library.read().unwrap()); + let tag = TaxonomyItem::new("Programming", &taxo_config, &config, vec![], &library.read().unwrap()); let tags = Taxonomy { kind: taxo_config, items: vec![tag] }; let taxonomies = vec![tags.clone()]; @@ -386,9 +387,10 @@ mod tests { #[test] fn can_get_taxonomy_url() { - let taxo_config = TaxonomyConfig { name: "tags".to_string(), ..TaxonomyConfig::default() }; + let config = Config::default(); + let taxo_config = TaxonomyConfig { name: "tags".to_string(), lang: config.default_language.clone(), ..TaxonomyConfig::default() }; let library = Library::new(0, 0, false); - let tag = TaxonomyItem::new("Programming", &taxo_config, &Config::default(), vec![], &library); + let tag = TaxonomyItem::new("Programming", &taxo_config, &config, vec![], &library); let tags = Taxonomy { kind: taxo_config, items: vec![tag] }; let taxonomies = vec![tags.clone()]; diff --git a/docs/content/documentation/templates/pages-sections.md b/docs/content/documentation/templates/pages-sections.md index 0a3525c1..c21ed773 100644 --- a/docs/content/documentation/templates/pages-sections.md +++ b/docs/content/documentation/templates/pages-sections.md @@ -53,8 +53,8 @@ assets: Array; ancestors: Array; // The relative path from the `content` directory to the markdown file relative_path: String; -// The language for the page if there is one -lang: String?; +// The language for the page if there is one. Default to the config `default_language` +lang: String; // Information about all the available languages for that content translations: Array; ``` @@ -99,8 +99,8 @@ assets: Array; ancestors: Array; // The relative path from the `content` directory to the markdown file relative_path: String; -// The language for the section if there is one -lang: String?; +// The language for the section if there is one. Default to the config `default_language` +lang: String; // Information about all the available languages for that content translations: Array; ``` From 5082e0f15a9a0cc39061c3ac91c96c634bb0b439 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Wed, 30 Jan 2019 09:15:46 +0100 Subject: [PATCH 33/74] Render all relevant parent sections on rebuild --- components/library/src/library.rs | 16 ++++++++++------ components/rebuild/src/lib.rs | 9 +++++---- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/components/library/src/library.rs b/components/library/src/library.rs index ad295e84..793e70fe 100644 --- a/components/library/src/library.rs +++ b/components/library/src/library.rs @@ -331,15 +331,19 @@ impl Library { .collect() } - pub fn find_parent_section>(&self, path: P) -> Option<&Section> { - let page_key = self.paths_to_pages[path.as_ref()]; - for s in self.sections.values() { - if s.pages.contains(&page_key) { - return Some(s); + /// Find the parent section & all grandparents section that have transparent=true + /// Only used in rebuild. + pub fn find_parent_sections>(&self, path: P) -> Vec<&Section> { + let mut parents = vec![]; + let page = self.get_page(path.as_ref()).unwrap(); + for ancestor in page.ancestors.iter().rev() { + let section = self.get_section_by_key(*ancestor); + if parents.is_empty() || section.meta.transparent { + parents.push(section); } } - None + parents } /// Only used in tests diff --git a/components/rebuild/src/lib.rs b/components/rebuild/src/lib.rs index 7ef87a1d..9ba83cbe 100644 --- a/components/rebuild/src/lib.rs +++ b/components/rebuild/src/lib.rs @@ -178,9 +178,9 @@ fn handle_section_editing(site: &mut Site, path: &Path) -> Result<()> { } } -macro_rules! render_parent_section { +macro_rules! render_parent_sections { ($site: expr, $path: expr) => { - if let Some(s) = $site.library.read().unwrap().find_parent_section($path) { + for s in $site.library.read().unwrap().find_parent_sections($path) { $site.render_section(s, false)?; }; }; @@ -204,7 +204,7 @@ fn handle_page_editing(site: &mut Site, path: &Path) -> Result<()> { // Other than the page itself, the summary might be seen // on a paginated list for a blog for example if library.get_page(&pathbuf).unwrap().summary.is_some() { - render_parent_section!(site, path); + render_parent_sections!(site, path); } return site.render_page(&library.get_page(&pathbuf).unwrap()); } @@ -215,6 +215,7 @@ fn handle_page_editing(site: &mut Site, path: &Path) -> Result<()> { &site.library.read().unwrap().get_page(&pathbuf).unwrap().meta, &prev.meta, ); + for change in changes { site.register_tera_global_fns(); @@ -228,7 +229,7 @@ fn handle_page_editing(site: &mut Site, path: &Path) -> Result<()> { site.render_index()?; } PageChangesNeeded::Render => { - render_parent_section!(site, path); + render_parent_sections!(site, path); site.render_page(&site.library.read().unwrap().get_page(&path.to_path_buf()).unwrap())?; } }; From 260c413de406dd176605eb1db3a75d17c5418e64 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Wed, 30 Jan 2019 20:01:10 +0100 Subject: [PATCH 34/74] Fix double trailing slash for section permalinks Only happens for sections with lang != default --- components/library/src/content/section.rs | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/components/library/src/content/section.rs b/components/library/src/content/section.rs index 2a7c4df8..9994b57e 100644 --- a/components/library/src/content/section.rs +++ b/components/library/src/content/section.rs @@ -92,11 +92,11 @@ impl Section { let (word_count, reading_time) = get_reading_analytics(§ion.raw_content); section.word_count = Some(word_count); section.reading_time = Some(reading_time); - let path = format!("{}/", section.file.components.join("/")); + let path = section.file.components.join("/"); if section.lang != config.default_language { section.path = format!("{}/{}", section.lang, path); } else { - section.path = path; + section.path = format!("{}/", path); } section.components = section .path @@ -318,4 +318,21 @@ Bonjour le monde"# assert_eq!(section.lang, "fr".to_string()); assert_eq!(section.permalink, "http://a-website.com/fr/hello/nested/"); } + + // https://zola.discourse.group/t/rfc-i18n/13/17?u=keats + #[test] + fn can_make_links_to_translated_sections_without_double_trailing_slash() { + let mut config = Config::default(); + config.languages.push(Language { code: String::from("fr"), rss: false }); + let content = r#" ++++ ++++ +Bonjour le monde"# + .to_string(); + let res = Section::parse(Path::new("content/_index.fr.md"), &content, &config); + assert!(res.is_ok()); + let section = res.unwrap(); + assert_eq!(section.lang, "fr".to_string()); + assert_eq!(section.permalink, "http://a-website.com/fr/"); + } } From 776bf411236579c394d4e1024d5edf53808a312f Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Wed, 30 Jan 2019 20:42:53 +0100 Subject: [PATCH 35/74] Show actual Tera source error --- components/errors/src/lib.rs | 12 +++++++++++- src/console.rs | 3 ++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/components/errors/src/lib.rs b/components/errors/src/lib.rs index 5c2c2dab..c8ada64b 100755 --- a/components/errors/src/lib.rs +++ b/components/errors/src/lib.rs @@ -29,7 +29,17 @@ unsafe impl Send for Error {} impl StdError for Error { fn source(&self) -> Option<&(dyn StdError + 'static)> { - self.source.as_ref().map(|c| &**c) + let mut source = self.source.as_ref().map(|c| &**c); + if source.is_none() { + match self.kind { + ErrorKind::Tera(ref err) => { + source = err.source() + }, + _ => () + }; + } + + source } } diff --git a/src/console.rs b/src/console.rs index 5151cf82..719f3ad4 100644 --- a/src/console.rs +++ b/src/console.rs @@ -8,6 +8,7 @@ use chrono::Duration; use termcolor::{Color, ColorChoice, ColorSpec, StandardStream, WriteColor}; use site::Site; +use errors::Error; lazy_static! { /// Termcolor color choice. @@ -92,7 +93,7 @@ pub fn report_elapsed_time(instant: Instant) { } /// Display an error message and the actual error(s) -pub fn unravel_errors(message: &str, error: &StdError) { +pub fn unravel_errors(message: &str, error: &Error) { if !message.is_empty() { self::error(message); } From 97d11995c51fe25f9129df635956f6e87579d06b Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Thu, 31 Jan 2019 19:55:34 +0100 Subject: [PATCH 36/74] Skip render=false sections in sitemap Fix #604 --- CHANGELOG.md | 1 + components/site/src/lib.rs | 1 + components/site/tests/site.rs | 2 ++ 3 files changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a60d667..cbf56d50 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ a section - Add an id (`zola-continue-reading`) to the paragraph generated after a summary - Add Dracula syntax highlighting theme - Fix using inline styles in headers +- Fix sections with render=false being shown in sitemap ## 0.5.1 (2018-12-14) diff --git a/components/site/src/lib.rs b/components/site/src/lib.rs index 8a8e0b78..94457577 100644 --- a/components/site/src/lib.rs +++ b/components/site/src/lib.rs @@ -797,6 +797,7 @@ impl Site { .read().unwrap() .sections_values() .iter() + .filter(|s| s.meta.render) .map(|s| SitemapEntry::new(s.permalink.clone(), None)) .collect::>(); for section in diff --git a/components/site/tests/site.rs b/components/site/tests/site.rs index 7e025e70..c85033aa 100644 --- a/components/site/tests/site.rs +++ b/components/site/tests/site.rs @@ -175,6 +175,8 @@ fn can_build_site_without_live_reload() { )); // Drafts are not in the sitemap assert!(!file_contains!(public, "sitemap.xml", "draft")); + // render: false sections are not in the sitemap either + assert!(!file_contains!(public, "sitemap.xml", "posts/2018/")); // robots.txt has been rendered from the template assert!(file_contains!(public, "robots.txt", "User-agent: zola")); From 07843c116fd9ad3a24476a7bcb01581195906f81 Mon Sep 17 00:00:00 2001 From: Peng Guanwen Date: Sun, 3 Feb 2019 21:46:07 +0800 Subject: [PATCH 37/74] Fix format mistake --- docs/content/documentation/templates/taxonomies.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/content/documentation/templates/taxonomies.md b/docs/content/documentation/templates/taxonomies.md index c17d53f9..3012c36b 100644 --- a/docs/content/documentation/templates/taxonomies.md +++ b/docs/content/documentation/templates/taxonomies.md @@ -27,7 +27,6 @@ paginate_path: String?; rss: Bool; ``` -``` ### Taxonomy list (`list.html`) From 844be8847274725f80042f55f552ca2caeaf495d Mon Sep 17 00:00:00 2001 From: Matthew Ziter Date: Mon, 4 Feb 2019 15:58:58 -0500 Subject: [PATCH 38/74] Handle csv parsing error to fix issue getzola/zola#588 --- .../templates/src/global_fns/load_data.rs | 39 +++++++++++++++++-- components/utils/test-files/uneven_rows.csv | 4 ++ 2 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 components/utils/test-files/uneven_rows.csv diff --git a/components/templates/src/global_fns/load_data.rs b/components/templates/src/global_fns/load_data.rs index 4fec8a9e..48b71763 100644 --- a/components/templates/src/global_fns/load_data.rs +++ b/components/templates/src/global_fns/load_data.rs @@ -183,7 +183,7 @@ impl LoadData { pub fn new(content_path: PathBuf, base_path: PathBuf) -> Self { let client = Arc::new(Mutex::new(Client::builder().build().expect("reqwest client build"))); let result_cache = Arc::new(Mutex::new(HashMap::new())); - Self {content_path, base_path, client, result_cache} + Self { content_path, base_path, client, result_cache } } } @@ -291,7 +291,16 @@ fn load_csv(csv_data: String) -> Result { let mut records_array: Vec = Vec::new(); for result in records { - let record = result.unwrap(); + let record = match result { + Ok(r) => r, + Err(e) => { + return Err(tera::Error::chain( + String::from("Error encountered when parsing csv records"), + e, + )); + } + }; + let mut elements_array: Vec = Vec::new(); for e in record.into_iter() { @@ -310,7 +319,7 @@ fn load_csv(csv_data: String) -> Result { #[cfg(test)] mod tests { - use super::{LoadData, DataSource, OutputFormat}; + use super::{DataSource, LoadData, OutputFormat}; use std::collections::HashMap; use std::path::PathBuf; @@ -455,6 +464,30 @@ mod tests { ) } + // Test points to bad csv file with uneven row lengths + #[test] + fn bad_csv_should_result_in_error() { + let static_fn = LoadData::new( + PathBuf::from("../utils/test-files"), + PathBuf::from("../utils/test-files"), + ); + let mut args = HashMap::new(); + args.insert("path".to_string(), to_value("uneven_rows.csv").unwrap()); + let result = static_fn.call(&args.clone()); + + assert!(result.is_err()); + + let error_kind = result.err().unwrap().kind; + match error_kind { + tera::ErrorKind::Msg(msg) => { + if msg != String::from("Error encountered when parsing csv records") { + panic!("Error message is wrong. Perhaps wrong error is being returned?"); + } + } + _ => panic!("Error encountered was not expected CSV error"), + } + } + #[test] fn can_load_json() { let static_fn = LoadData::new( diff --git a/components/utils/test-files/uneven_rows.csv b/components/utils/test-files/uneven_rows.csv new file mode 100644 index 00000000..f2f309c2 --- /dev/null +++ b/components/utils/test-files/uneven_rows.csv @@ -0,0 +1,4 @@ +Number,Title +1,Gutenberg +2,Printing +3,Typewriter,ExtraBadColumn From 77aad07dc64653f9851efb3a4c9a938248d0f1e3 Mon Sep 17 00:00:00 2001 From: Leonardo Schwarz Date: Tue, 5 Feb 2019 11:09:18 +0100 Subject: [PATCH 39/74] Revert "Update snap installation instructions" This reverts commit 5fd7bf7e61c87320b1c5a9f358df2d82525ea465. Apparently it is not just no longer necessary to use classic confinement, but actually impossible, i.e. snap emits an error that the zola snap is not compatible with `--classic`. --- docs/content/documentation/getting-started/installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/content/documentation/getting-started/installation.md b/docs/content/documentation/getting-started/installation.md index ddf07ff8..6f7f4dce 100644 --- a/docs/content/documentation/getting-started/installation.md +++ b/docs/content/documentation/getting-started/installation.md @@ -27,7 +27,7 @@ $ yay -S zola-bin Zola is available on snapcraft: ```bash -$ snap install --edge --classic zola +$ snap install --edge zola ``` ## Windows From a42e6dfec46ce61de9ef27f7c107e698b58ace81 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Fri, 8 Feb 2019 19:06:01 +0100 Subject: [PATCH 40/74] Fix benches --- Cargo.lock | 286 ++++++++++++++++---------------- components/site/benches/site.rs | 7 +- 2 files changed, 146 insertions(+), 147 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 61483e53..705e0484 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,3 +1,5 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. [[package]] name = "MacTypes-sys" version = "2.1.0" @@ -29,7 +31,7 @@ dependencies = [ "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-signal 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "trust-dns-proto 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "trust-dns-resolver 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -54,7 +56,7 @@ dependencies = [ "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "tower-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "trust-dns-resolver 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -68,7 +70,7 @@ dependencies = [ "actix-net 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "cookie 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "encoding 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", @@ -91,8 +93,8 @@ dependencies = [ "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", "serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -103,7 +105,7 @@ dependencies = [ "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "v_htmlescape 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -114,7 +116,7 @@ name = "actix_derive" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -204,7 +206,7 @@ name = "backtrace-sys" version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -213,7 +215,7 @@ name = "base64" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -222,7 +224,7 @@ name = "base64" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -230,8 +232,8 @@ name = "bincode" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -265,7 +267,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "byteorder" -version = "1.2.7" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -273,13 +275,13 @@ name = "bytes" version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cc" -version = "1.0.28" +version = "1.0.29" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -294,7 +296,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -333,8 +335,8 @@ dependencies = [ "errors 0.1.0", "globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", @@ -474,7 +476,7 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "csv-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -500,7 +502,7 @@ version = "0.7.19" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -534,9 +536,9 @@ dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rust-stemmers 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", "strum 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "strum_macros 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -600,7 +602,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "encoding_rs" -version = "0.8.14" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -620,7 +622,7 @@ version = "0.1.0" dependencies = [ "image 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", "syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -638,7 +640,7 @@ name = "failure_derive" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -696,9 +698,9 @@ dependencies = [ "errors 0.1.0", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -728,7 +730,7 @@ dependencies = [ [[package]] name = "fuchsia-cprng" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -824,7 +826,7 @@ name = "h2" version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", @@ -861,7 +863,7 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "markup5ever 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -916,7 +918,7 @@ dependencies = [ "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -964,7 +966,7 @@ name = "image" version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "gif 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "jpeg-decoder 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "lzw 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -974,7 +976,7 @@ dependencies = [ "png 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-transmute 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tiff 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tiff 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -986,7 +988,7 @@ dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -1009,12 +1011,8 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "inotify-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1056,7 +1054,7 @@ name = "jpeg-decoder" version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1095,7 +1093,7 @@ version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "crc32fast 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1112,12 +1110,12 @@ dependencies = [ "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rendering 0.1.0", - "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "slotmap 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -1187,9 +1185,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", "phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "tendril 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1238,7 +1236,7 @@ name = "miniz-sys" version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1255,7 +1253,7 @@ name = "miniz_oxide_c_api" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", "crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "miniz_oxide 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1325,7 +1323,7 @@ dependencies = [ "schannel 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", "security-framework 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "security-framework-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.0.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1352,7 +1350,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1374,7 +1372,7 @@ dependencies = [ [[package]] name = "notify" -version = "4.0.7" +version = "4.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1395,7 +1393,7 @@ name = "num-derive" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1455,7 +1453,7 @@ name = "onig_sys" version = "69.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1482,7 +1480,7 @@ name = "openssl-sys" version = "0.9.40" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1546,7 +1544,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "pest_meta 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1607,9 +1605,9 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "xml-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1631,7 +1629,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "proc-macro2" -version = "0.4.26" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1656,7 +1654,7 @@ name = "quote" version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1664,7 +1662,7 @@ name = "rand" version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "fuchsia-cprng 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1677,7 +1675,7 @@ version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-cprng 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1694,7 +1692,7 @@ dependencies = [ "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_jitter 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_jitter 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "rand_os 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1741,7 +1739,7 @@ dependencies = [ [[package]] name = "rand_jitter" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1755,7 +1753,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-cprng 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1817,7 +1815,7 @@ dependencies = [ "fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "library 0.1.0", "site 0.1.0", - "tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.0.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1874,12 +1872,12 @@ dependencies = [ "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "pulldown-cmark 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "templates 0.1.0", - "tera 1.0.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -1890,7 +1888,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "encoding_rs 0.8.14 (registry+https://github.com/rust-lang/crates.io-index)", + "encoding_rs 0.8.16 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.12.23 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1900,14 +1898,14 @@ dependencies = [ "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", "mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", "native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", "serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1926,8 +1924,8 @@ name = "rust-stemmers" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1980,7 +1978,7 @@ name = "sass-sys" version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2051,28 +2049,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde" -version = "1.0.85" +version = "1.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde_derive" -version = "1.0.85" +version = "1.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_json" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2082,7 +2080,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2129,11 +2127,11 @@ dependencies = [ "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "sass-rs 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "search 0.1.0", - "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "templates 0.1.0", - "tera 1.0.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -2193,7 +2191,7 @@ dependencies = [ "new_debug_unreachable 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", "precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2205,7 +2203,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2231,7 +2229,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2241,7 +2239,7 @@ name = "syn" version = "0.15.26" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2251,7 +2249,7 @@ name = "synstructure" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2271,16 +2269,16 @@ dependencies = [ "onig 4.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "plist 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex-syntax 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "yaml-rust 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tempfile" -version = "3.0.5" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2304,8 +2302,8 @@ dependencies = [ "library 0.1.0", "pulldown-cmark 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "reqwest 0.9.9 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", @@ -2323,7 +2321,7 @@ dependencies = [ [[package]] name = "tera" -version = "1.0.0-alpha.4" +version = "1.0.0-alpha.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2333,12 +2331,12 @@ dependencies = [ "pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "unic-segment 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "v_htmlescape 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "v_htmlescape 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2377,10 +2375,10 @@ dependencies = [ [[package]] name = "tiff" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "lzw 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "num-derive 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2411,10 +2409,10 @@ dependencies = [ "tokio-fs 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2502,7 +2500,7 @@ dependencies = [ [[package]] name = "tokio-sync" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2540,7 +2538,7 @@ dependencies = [ [[package]] name = "tokio-timer" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2585,7 +2583,7 @@ name = "toml" version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2601,7 +2599,7 @@ name = "trust-dns-proto" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2614,7 +2612,7 @@ dependencies = [ "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2624,7 +2622,7 @@ name = "trust-dns-proto" version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2637,7 +2635,7 @@ dependencies = [ "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2805,9 +2803,9 @@ name = "utils" version = "0.1.0" dependencies = [ "errors 0.1.0", - "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2832,10 +2830,10 @@ dependencies = [ [[package]] name = "v_escape" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "v_escape_derive 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "v_escape_derive 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2845,18 +2843,18 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "nom 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "v_escape_derive" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "nom 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2873,11 +2871,11 @@ dependencies = [ [[package]] name = "v_htmlescape" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "v_escape 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "v_escape 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2993,7 +2991,7 @@ name = "ws" version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3042,7 +3040,7 @@ dependencies = [ "errors 0.1.0", "front_matter 0.1.0", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "notify 4.0.7 (registry+https://github.com/rust-lang/crates.io-index)", + "notify 4.0.8 (registry+https://github.com/rust-lang/crates.io-index)", "rebuild 0.1.0", "site 0.1.0", "termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3077,9 +3075,9 @@ dependencies = [ "checksum block-buffer 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a076c298b9ecdb530ed9d967e74a6027d6a7478924520acddcddc24c1c8ab3ab" "checksum build_const 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "39092a32794787acd8525ee150305ff051b0aa6cc2abaf193924f5ab05425f39" "checksum byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "560c32574a12a89ecd91f5e742165893f86e3ab98d21f8ea548658eb9eef5f40" -"checksum byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "94f88df23a25417badc922ab0f5716cc1330e87f71ddd9203b3a3ccd9cedf75d" +"checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb" "checksum bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "40ade3d27603c2cb345eb0912aec461a6dec7e06a4ae48589904e808335c7afa" -"checksum cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4a8b715cb4597106ea87c7c84b2f1d452c7492033765df7f32651e66fcf749" +"checksum cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)" = "4390a3b5f4f6bce9c1d0c00128379df433e53777fdd30e92f16a529332baec4e" "checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4" "checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878" "checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e" @@ -3114,7 +3112,7 @@ dependencies = [ "checksum encoding-index-singlebyte 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3351d5acffb224af9ca265f435b859c7c01537c0849754d3db3fdf2bfe2ae84a" "checksum encoding-index-tradchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fd0e20d5688ce3cab59eb3ef3a2083a5c77bf496cb798dc6fcdb75f323890c18" "checksum encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569" -"checksum encoding_rs 0.8.14 (registry+https://github.com/rust-lang/crates.io-index)" = "a69d152eaa438a291636c1971b0a370212165ca8a75759eb66818c5ce9b538f7" +"checksum encoding_rs 0.8.16 (registry+https://github.com/rust-lang/crates.io-index)" = "0535f350c60aac0b87ccf28319abc749391e912192255b0c00a2c12c6917bd73" "checksum error-chain 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6930e04918388a9a2e41d518c25cf679ccafe26733fb4127dbf21993f2575d46" "checksum failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2" "checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1" @@ -3127,7 +3125,7 @@ dependencies = [ "checksum fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674" "checksum fsevent 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)" = "c4bbbf71584aeed076100b5665ac14e3d85eeb31fdbb45fbd41ef9a682b5ec05" "checksum fsevent-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "1a772d36c338d07a032d5375a36f15f9a7043bf0cb8ce7cee658e037c6032874" -"checksum fuchsia-cprng 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "81f7f8eb465745ea9b02e2704612a9946a59fa40572086c6fd49d6ddcf30bf31" +"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" "checksum futf 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7c9c1ce3fa9336301af935ab852c437817d14cd33690446569392e65170aac3b" @@ -3193,7 +3191,7 @@ dependencies = [ "checksum nix 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d37e713a259ff641624b6cb20e3b12b2952313ba36b6823c0f16e6cfd9e5de17" "checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" "checksum nom 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b30adc557058ce00c9d0d7cb3c6e0b5bc6f36e2e2eabe74b0ba726d194abd588" -"checksum notify 4.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "c968cf37cf949114b00d51b0b23536d1c3a4a3963767cf4c969c65a6af78dc7d" +"checksum notify 4.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "c9b605e417814e88bb051c88a84f83655d6ad4fa32fc36d9a96296d86087692d" "checksum num-derive 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d9fe8fcafd1b86a37ce8a1cfa15ae504817e0c8c2e7ad42767371461ac1d316d" "checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" "checksum num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "af3fdbbc3291a5464dc57b03860ec37ca6bf915ed6ee385e7c6c052c422b2124" @@ -3221,7 +3219,7 @@ dependencies = [ "checksum plist 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0c7316832d9ac5da02786bdc89a3faf0ca07070212b388766e969078fd593edc" "checksum png 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9adebf7fb91ccf5eac9da1a8e00e83cb8ae882c3e8d8e4ad59da73cb8c82a2c9" "checksum precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" -"checksum proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)" = "38fddd23d98b2144d197c0eca5705632d4fe2667d14a6be5df8934f8d74f1978" +"checksum proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "4d317f9caece796be1980837fd5cb3dfec5613ebdb04ad0956deea83ce168915" "checksum pulldown-cmark 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "eef52fac62d0ea7b9b4dc7da092aa64ea7ec3d90af6679422d3d7e0e14b6ee15" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" "checksum quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd8e04bd9c52e0342b406469d494fcb033be4bdbe5c606016defbb1681411e1" @@ -3233,7 +3231,7 @@ dependencies = [ "checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0" "checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" "checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" -"checksum rand_jitter 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "29fe7b8bc348249f3b1bbb9ab8baa6fa3419196ecfbf213408bca1b2494710de" +"checksum rand_jitter 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b9ea758282efe12823e0d952ddb269d2e1897227e464919a554f2a03ef1b832" "checksum rand_os 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b7c690732391ae0abafced5015ffb53656abfaec61b342290e5eb56b286a679d" "checksum rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "086bd09a33c7044e56bb44d5bdde5a60e7f119a9e95b0775f545de759a32fe05" "checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" @@ -3263,9 +3261,9 @@ dependencies = [ "checksum security-framework-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3d6696852716b589dff9e886ff83778bb635150168e83afa8ac6b8a78cb82abc" "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -"checksum serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)" = "534b8b91a95e0f71bca3ed5824752d558da048d4248c91af873b63bd60519752" -"checksum serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)" = "a915306b0f1ac5607797697148c223bedeaa36bcc2e28a01441cd638cc6567b4" -"checksum serde_json 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)" = "4b90a9fbe1211e57d3e1c15670f1cb00802988fb23a1a4aad7a2b63544f1920e" +"checksum serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)" = "2e20fde37801e83c891a2dc4ebd3b81f0da4d1fb67a9e0a2a3b921e2536a58ee" +"checksum serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)" = "633e97856567e518b59ffb2ad7c7a4fd4c5d91d9c7f32dd38a27b2bf7e8114ea" +"checksum serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)" = "27dce848e7467aa0e2fcaf0a413641499c0b745452aaca1194d24dedde9e13c9" "checksum serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d48f9f99cd749a2de71d29da5f948de7f2764cc5a9d7f3c97e3514d4ee6eabf2" "checksum sha-1 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "51b9d1f3b5de8a167ab06834a7c883bd197f2191e1dda1a22d9ccfeedbf9aded" "checksum sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" @@ -3287,14 +3285,14 @@ dependencies = [ "checksum syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)" = "f92e629aa1d9c827b2bb8297046c1ccffc57c99b947a680d3ccff1f136a3bee9" "checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" "checksum syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e02dd9df97a68a2d005ace28ff24c610abfc3ce17afcfdb22a077645dabb599a" -"checksum tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "7e91405c14320e5c79b3d148e1c86f40749a36e490642202a31689cb1a3452b2" +"checksum tempfile 3.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "37daa55a7240c4931c84559f03b3cad7d19535840d1c4a0cc4e9b2fb0dcf70ff" "checksum tendril 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "707feda9f2582d5d680d733e38755547a3e8fb471e7ba11452ecfd9ce93a5d3b" -"checksum tera 1.0.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0fbadfbcaeb99c662f4855b43b023cb9ad98c62007263c64a5ffe78d4bf0a3d2" +"checksum tera 1.0.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "31ef8198415b2431dfd105f99b377a5b53592b793e80db87dcdaee15c5befd81" "checksum termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4096add70612622289f2fdcdbd5086dc81c1e2675e6ae58d6c4f62a16c6d7f2f" "checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" "checksum textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "307686869c93e71f94da64286f9a9524c0f308a9e1c87a583de8e9c9039ad3f6" "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" -"checksum tiff 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a2cc6c4fd13cb1cfd20abdb196e794ceccb29371855b7e7f575945f920a5b3c2" +"checksum tiff 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1e4834f28a0330cb9f3f2c87d2649dca723cb33802e2bdcf18da32759fbec7ce" "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" "checksum tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "e0500b88064f08bebddd0c0bed39e19f5c567a5f30975bee52b0c0d3e2eeb38c" "checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" @@ -3304,10 +3302,10 @@ dependencies = [ "checksum tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b53aeb9d3f5ccf2ebb29e19788f96987fa1355f8fe45ea193928eaaaf3ae820f" "checksum tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "afbcdb0f0d2a1e4c440af82d7bbf0bf91a8a8c0575bcd20c05d15be7e9d3a02f" "checksum tokio-signal 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "dd6dc5276ea05ce379a16de90083ec80836440d5ef8a6a39545a3207373b8296" -"checksum tokio-sync 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0d65a58e2215c13179e6eeb2cf00511e0aee455cad40a9bfaef15a2fd8aab1c7" +"checksum tokio-sync 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3742b64166c1ee9121f1921aea5a726098458926a6b732d906ef23b1f3ef6f4f" "checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" "checksum tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c3fd86cb15547d02daa2b21aadaf4e37dee3368df38a526178a5afa3c034d2fb" -"checksum tokio-timer 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "21c04a314a1f69f73c0227beba6250e06cdc1e9a62e7eff912bf54a59b6d1b94" +"checksum tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "2910970404ba6fa78c5539126a9ae2045d62e3713041e447f695f41405a120c6" "checksum tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "66268575b80f4a4a710ef83d087fdfeeabdce9b74c797535fbac18a2cb906e92" "checksum tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "037ffc3ba0e12a0ab4aca92e5234e0dedeb48fddf6ccd260f1f150a36a9f2445" "checksum toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f" @@ -3338,11 +3336,11 @@ dependencies = [ "checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737" "checksum uuid 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0238db0c5b605dd1cf51de0f21766f97fba2645897024461d6a00c036819a768" "checksum v_escape 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c8b50688edb86f4c092a1a9fe8bda004b0faa3197100897653809e97e09a2814" -"checksum v_escape 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6177565a30b7091835dd4a33a81fc4f064e671729a6b7cb964675b2a0bb295a1" +"checksum v_escape 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "38187e1fdbf09d7dcb6fd3dfa7fcc14a0d77d9f09be411431faec832a5476d75" "checksum v_escape_derive 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7cd994c63b487fef7aad31e5394ec04b9e24de7b32ea5251c9fb499cd2cbf44c" -"checksum v_escape_derive 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ebc450df00e6b12b42f963f620156611891dfc6475533d9b7d5a607a527a403d" +"checksum v_escape_derive 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4592e378ab72caf41ee682531446526c5e16bb1aaa4f7cd673da893ade308b79" "checksum v_htmlescape 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "020cae817dc82693aa523f01087b291b1c7a9ac8cea5c12297963f21769fb27f" -"checksum v_htmlescape 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "168b0208dc58f378f35a743f39c93f199dd981be5ed24615f2b467d55f37e959" +"checksum v_htmlescape 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "72030ff9467f2e782051667b315875a117b9cef470d0796d5482c7f7da84524b" "checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" "checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" diff --git a/components/site/benches/site.rs b/components/site/benches/site.rs index 0c507c16..c65badb4 100644 --- a/components/site/benches/site.rs +++ b/components/site/benches/site.rs @@ -43,7 +43,7 @@ fn bench_render_rss_feed(b: &mut test::Bencher) { let tmp_dir = tempdir().expect("create temp dir"); let public = &tmp_dir.path().join("public"); site.set_output_path(&public); - b.iter(|| site.render_rss_feed(site.library.pages_values(), None).unwrap()); + b.iter(|| site.render_rss_feed(site.library.read().unwrap().pages_values(), None).unwrap()); } #[bench] @@ -61,8 +61,9 @@ fn bench_render_paginated(b: &mut test::Bencher) { let tmp_dir = tempdir().expect("create temp dir"); let public = &tmp_dir.path().join("public"); site.set_output_path(&public); - let section = site.library.sections_values()[0]; - let paginator = Paginator::from_section(§ion, &site.library); + let library = site.library.read().unwrap(); + let section = library.sections_values()[0]; + let paginator = Paginator::from_section(§ion, &library); b.iter(|| site.render_paginated(public, &paginator)); } From 9bc675f2a77b417b30f15d136ec6d816b2937c1a Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Sat, 9 Feb 2019 19:54:46 +0100 Subject: [PATCH 41/74] Fix colocated dates + rustfmt Closes #607 --- Cargo.lock | 13 +- components/errors/src/lib.rs | 7 +- components/front_matter/src/lib.rs | 12 +- components/imageproc/src/lib.rs | 2 +- components/library/src/content/page.rs | 54 +++++- components/library/src/content/section.rs | 12 +- components/library/src/library.rs | 2 +- components/library/src/pagination/mod.rs | 2 +- components/library/src/taxonomies/mod.rs | 72 ++++++-- components/rebuild/src/lib.rs | 20 ++- components/rendering/src/markdown.rs | 164 ++++++++++-------- components/rendering/src/shortcode.rs | 5 +- components/site/src/lib.rs | 74 +++++--- components/site/tests/site.rs | 5 +- components/site/tests/site_i18n.rs | 4 +- .../templates/src/global_fns/load_data.rs | 4 +- components/templates/src/global_fns/mod.rs | 60 ++++--- components/templates/src/lib.rs | 2 +- components/utils/src/fs.rs | 11 +- components/utils/src/vec.rs | 4 +- src/cmd/serve.rs | 8 +- src/console.rs | 6 +- 22 files changed, 331 insertions(+), 212 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 705e0484..c2303b1d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -229,9 +229,10 @@ dependencies = [ [[package]] name = "bincode" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1372,7 +1373,7 @@ dependencies = [ [[package]] name = "notify" -version = "4.0.8" +version = "4.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2260,7 +2261,7 @@ name = "syntect" version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bincode 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bincode 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "flate2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3040,7 +3041,7 @@ dependencies = [ "errors 0.1.0", "front_matter 0.1.0", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "notify 4.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "notify 4.0.9 (registry+https://github.com/rust-lang/crates.io-index)", "rebuild 0.1.0", "site 0.1.0", "termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3069,7 +3070,7 @@ dependencies = [ "checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" "checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" -"checksum bincode 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9f2fb9e29e72fd6bc12071533d5dc7664cb01480c59406f656d7ac25c7bd8ff7" +"checksum bincode 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "58470ad6460f0b0e89b0df5f17b8bd77ebae26af69dca0bd9ddc8b9e38abb2ff" "checksum bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d" "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" "checksum block-buffer 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a076c298b9ecdb530ed9d967e74a6027d6a7478924520acddcddc24c1c8ab3ab" @@ -3191,7 +3192,7 @@ dependencies = [ "checksum nix 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d37e713a259ff641624b6cb20e3b12b2952313ba36b6823c0f16e6cfd9e5de17" "checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" "checksum nom 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b30adc557058ce00c9d0d7cb3c6e0b5bc6f36e2e2eabe74b0ba726d194abd588" -"checksum notify 4.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "c9b605e417814e88bb051c88a84f83655d6ad4fa32fc36d9a96296d86087692d" +"checksum notify 4.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9cc7ed2bd4b7edad3ee93b659c38e53dabb619f7274e127a0fab054ad2bb998d" "checksum num-derive 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d9fe8fcafd1b86a37ce8a1cfa15ae504817e0c8c2e7ad42767371461ac1d316d" "checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" "checksum num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "af3fdbbc3291a5464dc57b03860ec37ca6bf915ed6ee385e7c6c052c422b2124" diff --git a/components/errors/src/lib.rs b/components/errors/src/lib.rs index c8ada64b..e9a271f4 100755 --- a/components/errors/src/lib.rs +++ b/components/errors/src/lib.rs @@ -32,10 +32,8 @@ impl StdError for Error { let mut source = self.source.as_ref().map(|c| &**c); if source.is_none() { match self.kind { - ErrorKind::Tera(ref err) => { - source = err.source() - }, - _ => () + ErrorKind::Tera(ref err) => source = err.source(), + _ => (), }; } @@ -68,7 +66,6 @@ impl Error { } } - impl From<&str> for Error { fn from(e: &str) -> Self { Self::msg(e) diff --git a/components/front_matter/src/lib.rs b/components/front_matter/src/lib.rs index c0ca8b70..204582ca 100644 --- a/components/front_matter/src/lib.rs +++ b/components/front_matter/src/lib.rs @@ -12,7 +12,7 @@ extern crate toml; extern crate errors; extern crate utils; -use errors::{Result, Error}; +use errors::{Error, Result}; use regex::Regex; use std::path::Path; @@ -72,7 +72,10 @@ pub fn split_section_content( ) -> Result<(SectionFrontMatter, String)> { let (front_matter, content) = split_content(file_path, content)?; let meta = SectionFrontMatter::parse(&front_matter).map_err(|e| { - Error::chain(format!("Error when parsing front matter of section `{}`", file_path.to_string_lossy()), e) + Error::chain( + format!("Error when parsing front matter of section `{}`", file_path.to_string_lossy()), + e, + ) })?; Ok((meta, content)) } @@ -82,7 +85,10 @@ pub fn split_section_content( pub fn split_page_content(file_path: &Path, content: &str) -> Result<(PageFrontMatter, String)> { let (front_matter, content) = split_content(file_path, content)?; let meta = PageFrontMatter::parse(&front_matter).map_err(|e| { - Error::chain(format!("Error when parsing front matter of page `{}`", file_path.to_string_lossy()), e) + Error::chain( + format!("Error when parsing front matter of page `{}`", file_path.to_string_lossy()), + e, + ) })?; Ok((meta, content)) } diff --git a/components/imageproc/src/lib.rs b/components/imageproc/src/lib.rs index 4ebdbea0..91d1ec3d 100644 --- a/components/imageproc/src/lib.rs +++ b/components/imageproc/src/lib.rs @@ -20,7 +20,7 @@ use image::{FilterType, GenericImageView}; use rayon::prelude::*; use regex::Regex; -use errors::{Result, Error}; +use errors::{Error, Result}; use utils::fs as ufs; static RESIZED_SUBDIR: &'static str = "processed_images"; diff --git a/components/library/src/content/page.rs b/components/library/src/content/page.rs index 420e414a..c344d505 100644 --- a/components/library/src/content/page.rs +++ b/components/library/src/content/page.rs @@ -8,7 +8,7 @@ use slug::slugify; use tera::{Context as TeraContext, Tera}; use config::Config; -use errors::{Result, Error}; +use errors::{Error, Result}; use front_matter::{split_page_content, InsertAnchor, PageFrontMatter}; use library::Library; use rendering::{render_content, Header, RenderContext}; @@ -126,7 +126,16 @@ impl Page { page.reading_time = Some(reading_time); let mut slug_from_dated_filename = None; - if let Some(ref caps) = RFC3339_DATE.captures(&page.file.name.replace(".md", "")) { + let file_path = if page.file.name == "index" { + if let Some(parent) = page.file.path.parent() { + parent.file_name().unwrap().to_str().unwrap().to_string() + } else { + page.file.name.replace(".md", "") + } + } else { + page.file.name.replace(".md", "") + }; + if let Some(ref caps) = RFC3339_DATE.captures(&file_path) { slug_from_dated_filename = Some(caps.name("slug").unwrap().as_str().to_string()); if page.meta.date.is_none() { page.meta.date = Some(caps.name("datetime").unwrap().as_str().to_string()); @@ -139,7 +148,11 @@ impl Page { slug.trim().to_string() } else if page.file.name == "index" { if let Some(parent) = page.file.path.parent() { - slugify(parent.file_name().unwrap().to_str().unwrap()) + if let Some(slug) = slug_from_dated_filename { + slugify(&slug) + } else { + slugify(parent.file_name().unwrap().to_str().unwrap()) + } } else { slugify(&page.file.name) } @@ -233,8 +246,9 @@ impl Page { context.tera_context.insert("page", &SerializingPage::from_page_basic(self, None)); - let res = render_content(&self.raw_content, &context) - .map_err(|e| Error::chain(format!("Failed to render content of {}", self.file.path.display()), e))?; + let res = render_content(&self.raw_content, &context).map_err(|e| { + Error::chain(format!("Failed to render content of {}", self.file.path.display()), e) + })?; self.summary = res.summary_len.map(|l| res.body[0..l].to_owned()); self.content = res.body; @@ -257,8 +271,9 @@ impl Page { context.insert("page", &self.to_serialized(library)); context.insert("lang", &self.lang); - render_template(&tpl_name, tera, context, &config.theme) - .map_err(|e| Error::chain(format!("Failed to render page '{}'", self.file.path.display()), e)) + render_template(&tpl_name, tera, context, &config.theme).map_err(|e| { + Error::chain(format!("Failed to render page '{}'", self.file.path.display()), e) + }) } /// Creates a vectors of asset URLs. @@ -499,6 +514,31 @@ Hello world assert_eq!(page.permalink, "http://a-website.com/posts/hey/"); } + // https://github.com/getzola/zola/issues/607 + #[test] + fn page_with_assets_and_date_in_folder_name() { + let tmp_dir = tempdir().expect("create temp dir"); + let path = tmp_dir.path(); + create_dir(&path.join("content")).expect("create content temp dir"); + create_dir(&path.join("content").join("posts")).expect("create posts temp dir"); + let nested_path = path.join("content").join("posts").join("2013-06-02_with-assets"); + create_dir(&nested_path).expect("create nested temp dir"); + let mut f = File::create(nested_path.join("index.md")).unwrap(); + f.write_all(b"+++\n\n+++\n").unwrap(); + File::create(nested_path.join("example.js")).unwrap(); + File::create(nested_path.join("graph.jpg")).unwrap(); + File::create(nested_path.join("fail.png")).unwrap(); + + let res = Page::from_file(nested_path.join("index.md").as_path(), &Config::default()); + assert!(res.is_ok()); + let page = res.unwrap(); + assert_eq!(page.file.parent, path.join("content").join("posts")); + assert_eq!(page.slug, "with-assets"); + assert_eq!(page.meta.date, Some("2013-06-02".to_string())); + assert_eq!(page.assets.len(), 3); + assert_eq!(page.permalink, "http://a-website.com/posts/with-assets/"); + } + #[test] fn page_with_ignored_assets_filters_out_correct_files() { let tmp_dir = tempdir().expect("create temp dir"); diff --git a/components/library/src/content/section.rs b/components/library/src/content/section.rs index 9994b57e..3da005eb 100644 --- a/components/library/src/content/section.rs +++ b/components/library/src/content/section.rs @@ -5,7 +5,7 @@ use slotmap::Key; use tera::{Context as TeraContext, Tera}; use config::Config; -use errors::{Result, Error}; +use errors::{Error, Result}; use front_matter::{split_section_content, SectionFrontMatter}; use rendering::{render_content, Header, RenderContext}; use utils::fs::{find_related_assets, read_file}; @@ -171,8 +171,9 @@ impl Section { context.tera_context.insert("section", &SerializingSection::from_section_basic(self, None)); - let res = render_content(&self.raw_content, &context) - .map_err(|e| Error::chain(format!("Failed to render content of {}", self.file.path.display()), e))?; + let res = render_content(&self.raw_content, &context).map_err(|e| { + Error::chain(format!("Failed to render content of {}", self.file.path.display()), e) + })?; self.content = res.body; self.toc = res.toc; Ok(()) @@ -189,8 +190,9 @@ impl Section { context.insert("section", &self.to_serialized(library)); context.insert("lang", &self.lang); - render_template(tpl_name, tera, context, &config.theme) - .map_err(|e| Error::chain(format!("Failed to render section '{}'", self.file.path.display()), e)) + render_template(tpl_name, tera, context, &config.theme).map_err(|e| { + Error::chain(format!("Failed to render section '{}'", self.file.path.display()), e) + }) } /// Is this the index section? diff --git a/components/library/src/library.rs b/components/library/src/library.rs index 793e70fe..c724a2ee 100644 --- a/components/library/src/library.rs +++ b/components/library/src/library.rs @@ -5,9 +5,9 @@ use slotmap::{DenseSlotMap, Key}; use front_matter::SortBy; +use config::Config; use content::{Page, Section}; use sorting::{find_siblings, sort_pages_by_date, sort_pages_by_weight}; -use config::Config; /// Houses everything about pages and sections /// Think of it as a database where each page and section has an id (Key here) diff --git a/components/library/src/pagination/mod.rs b/components/library/src/pagination/mod.rs index 6f47cbec..fd7f57fd 100644 --- a/components/library/src/pagination/mod.rs +++ b/components/library/src/pagination/mod.rs @@ -4,7 +4,7 @@ use slotmap::Key; use tera::{to_value, Context, Tera, Value}; use config::Config; -use errors::{Result, Error}; +use errors::{Error, Result}; use utils::templates::render_template; use content::{Section, SerializingPage, SerializingSection}; diff --git a/components/library/src/taxonomies/mod.rs b/components/library/src/taxonomies/mod.rs index 0756b535..a82c3e55 100644 --- a/components/library/src/taxonomies/mod.rs +++ b/components/library/src/taxonomies/mod.rs @@ -5,7 +5,7 @@ use slug::slugify; use tera::{Context, Tera}; use config::{Config, Taxonomy as TaxonomyConfig}; -use errors::{Result, Error}; +use errors::{Error, Result}; use utils::templates::render_template; use content::SerializingPage; @@ -48,7 +48,13 @@ pub struct TaxonomyItem { } impl TaxonomyItem { - pub fn new(name: &str, taxonomy: &TaxonomyConfig, config: &Config, keys: Vec, library: &Library) -> Self { + pub fn new( + name: &str, + taxonomy: &TaxonomyConfig, + config: &Config, + keys: Vec, + library: &Library, + ) -> Self { // Taxonomy are almost always used for blogs so we filter by dates // and it's not like we can sort things across sections by anything other // than dates @@ -145,7 +151,9 @@ impl Taxonomy { context.insert("current_path", &format!("/{}/{}", self.kind.name, item.slug)); render_template(&format!("{}/single.html", self.kind.name), tera, context, &config.theme) - .map_err(|e| Error::chain(format!("Failed to render single term {} page.", self.kind.name), e)) + .map_err(|e| { + Error::chain(format!("Failed to render single term {} page.", self.kind.name), e) + }) } pub fn render_all_terms( @@ -164,7 +172,9 @@ impl Taxonomy { context.insert("current_path", &self.kind.name); render_template(&format!("{}/list.html", self.kind.name), tera, context, &config.theme) - .map_err(|e| Error::chain(format!("Failed to render a list of {} page.", self.kind.name), e)) + .map_err(|e| { + Error::chain(format!("Failed to render a list of {} page.", self.kind.name), e) + }) } pub fn to_serialized<'a>(&'a self, library: &'a Library) -> SerializedTaxonomy<'a> { @@ -232,7 +242,7 @@ mod tests { use super::*; use std::collections::HashMap; - use config::{Config, Taxonomy as TaxonomyConfig, Language}; + use config::{Config, Language, Taxonomy as TaxonomyConfig}; use content::Page; use library::Library; @@ -242,9 +252,21 @@ mod tests { let mut library = Library::new(2, 0, false); config.taxonomies = vec![ - TaxonomyConfig { name: "categories".to_string(), lang: config.default_language.clone(), ..TaxonomyConfig::default() }, - TaxonomyConfig { name: "tags".to_string(), lang: config.default_language.clone(), ..TaxonomyConfig::default() }, - TaxonomyConfig { name: "authors".to_string(), lang: config.default_language.clone(), ..TaxonomyConfig::default() }, + TaxonomyConfig { + name: "categories".to_string(), + lang: config.default_language.clone(), + ..TaxonomyConfig::default() + }, + TaxonomyConfig { + name: "tags".to_string(), + lang: config.default_language.clone(), + ..TaxonomyConfig::default() + }, + TaxonomyConfig { + name: "authors".to_string(), + lang: config.default_language.clone(), + ..TaxonomyConfig::default() + }, ]; let mut page1 = Page::default(); @@ -324,8 +346,11 @@ mod tests { let mut config = Config::default(); let mut library = Library::new(2, 0, false); - config.taxonomies = - vec![TaxonomyConfig { name: "authors".to_string(), lang: config.default_language.clone(), ..TaxonomyConfig::default() }]; + config.taxonomies = vec![TaxonomyConfig { + name: "authors".to_string(), + lang: config.default_language.clone(), + ..TaxonomyConfig::default() + }]; let mut page1 = Page::default(); let mut taxo_page1 = HashMap::new(); taxo_page1.insert("tags".to_string(), vec!["rust".to_string(), "db".to_string()]); @@ -346,13 +371,25 @@ mod tests { #[test] fn can_make_taxonomies_in_multiple_languages() { let mut config = Config::default(); - config.languages.push(Language {rss: false, code: "fr".to_string()}); + config.languages.push(Language { rss: false, code: "fr".to_string() }); let mut library = Library::new(2, 0, true); config.taxonomies = vec![ - TaxonomyConfig { name: "categories".to_string(), lang: config.default_language.clone(), ..TaxonomyConfig::default() }, - TaxonomyConfig { name: "tags".to_string(), lang: config.default_language.clone(), ..TaxonomyConfig::default() }, - TaxonomyConfig { name: "auteurs".to_string(), lang: "fr".to_string(), ..TaxonomyConfig::default() }, + TaxonomyConfig { + name: "categories".to_string(), + lang: config.default_language.clone(), + ..TaxonomyConfig::default() + }, + TaxonomyConfig { + name: "tags".to_string(), + lang: config.default_language.clone(), + ..TaxonomyConfig::default() + }, + TaxonomyConfig { + name: "auteurs".to_string(), + lang: "fr".to_string(), + ..TaxonomyConfig::default() + }, ]; let mut page1 = Page::default(); @@ -410,7 +447,10 @@ mod tests { assert_eq!(authors.items[0].name, "Vincent Prouillet"); assert_eq!(authors.items[0].slug, "vincent-prouillet"); - assert_eq!(authors.items[0].permalink, "http://a-website.com/fr/auteurs/vincent-prouillet/"); + assert_eq!( + authors.items[0].permalink, + "http://a-website.com/fr/auteurs/vincent-prouillet/" + ); assert_eq!(authors.items[0].pages.len(), 1); assert_eq!(categories.items[0].name, "Other"); @@ -430,7 +470,7 @@ mod tests { #[test] fn errors_on_taxonomy_of_different_language() { let mut config = Config::default(); - config.languages.push(Language {rss: false, code: "fr".to_string()}); + config.languages.push(Language { rss: false, code: "fr".to_string() }); let mut library = Library::new(2, 0, false); config.taxonomies = diff --git a/components/rebuild/src/lib.rs b/components/rebuild/src/lib.rs index 9ba83cbe..ca4250b1 100644 --- a/components/rebuild/src/lib.rs +++ b/components/rebuild/src/lib.rs @@ -155,12 +155,14 @@ fn handle_section_editing(site: &mut Site, path: &Path) -> Result<()> { SectionChangesNeeded::Sort => { site.register_tera_global_fns(); } - SectionChangesNeeded::Render => { - site.render_section(&site.library.read().unwrap().get_section(&pathbuf).unwrap(), false)? - } - SectionChangesNeeded::RenderWithPages => { - site.render_section(&site.library.read().unwrap().get_section(&pathbuf).unwrap(), true)? - } + SectionChangesNeeded::Render => site.render_section( + &site.library.read().unwrap().get_section(&pathbuf).unwrap(), + false, + )?, + SectionChangesNeeded::RenderWithPages => site.render_section( + &site.library.read().unwrap().get_section(&pathbuf).unwrap(), + true, + )?, // not a common enough operation to make it worth optimizing SectionChangesNeeded::Delete | SectionChangesNeeded::Transparent => { site.build()?; @@ -182,7 +184,7 @@ macro_rules! render_parent_sections { ($site: expr, $path: expr) => { for s in $site.library.read().unwrap().find_parent_sections($path) { $site.render_section(s, false)?; - }; + } }; } @@ -230,7 +232,9 @@ fn handle_page_editing(site: &mut Site, path: &Path) -> Result<()> { } PageChangesNeeded::Render => { render_parent_sections!(site, path); - site.render_page(&site.library.read().unwrap().get_page(&path.to_path_buf()).unwrap())?; + site.render_page( + &site.library.read().unwrap().get_page(&path.to_path_buf()).unwrap(), + )?; } }; } diff --git a/components/rendering/src/markdown.rs b/components/rendering/src/markdown.rs index 3c6f20b2..9bbb26a3 100644 --- a/components/rendering/src/markdown.rs +++ b/components/rendering/src/markdown.rs @@ -4,7 +4,7 @@ use pulldown_cmark as cmark; use slug::slugify; use syntect::easy::HighlightLines; use syntect::html::{ - IncludeBackground, start_highlighted_html_snippet, styled_line_to_highlighted_html, + start_highlighted_html_snippet, styled_line_to_highlighted_html, IncludeBackground, }; use config::highlighting::{get_highlighter, SYNTAX_SET, THEME_SET}; @@ -12,13 +12,14 @@ use context::RenderContext; use errors::{Error, Result}; use front_matter::InsertAnchor; use link_checker::check_url; -use table_of_contents::{Header, make_table_of_contents}; +use table_of_contents::{make_table_of_contents, Header}; use utils::site::resolve_internal_link; use utils::vec::InsertMany; use self::cmark::{Event, Options, Parser, Tag}; -const CONTINUE_READING: &str = "

\n"; +const CONTINUE_READING: &str = + "

\n"; const ANCHOR_LINK_TEMPLATE: &str = "anchor-link.html"; #[derive(Debug)] @@ -88,9 +89,7 @@ fn fix_link(link: &str, context: &RenderContext) -> Result { if res.is_valid() { link.to_string() } else { - return Err( - format!("Link {} is not valid: {}", link, res.message()).into(), - ); + return Err(format!("Link {} is not valid: {}", link, res.message()).into()); } } else { link.to_string() @@ -148,78 +147,84 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result { - // if we are in the middle of a code block - if let Some((ref mut highlighter, in_extra)) = highlighter { - let highlighted = if in_extra { - if let Some(ref extra) = context.config.extra_syntax_set { - highlighter.highlight(&text, &extra) + let mut events = Parser::new_ext(content, opts) + .map(|event| { + match event { + Event::Text(text) => { + // if we are in the middle of a code block + if let Some((ref mut highlighter, in_extra)) = highlighter { + let highlighted = if in_extra { + if let Some(ref extra) = context.config.extra_syntax_set { + highlighter.highlight(&text, &extra) + } else { + unreachable!( + "Got a highlighter from extra syntaxes but no extra?" + ); + } } else { - unreachable!("Got a highlighter from extra syntaxes but no extra?"); - } - } else { - highlighter.highlight(&text, &SYNTAX_SET) - }; - //let highlighted = &highlighter.highlight(&text, ss); - let html = styled_line_to_highlighted_html(&highlighted, background); - return Event::Html(Owned(html)); - } - - // Business as usual - Event::Text(text) - } - Event::Start(Tag::CodeBlock(ref info)) => { - if !context.config.highlight_code { - return Event::Html(Borrowed("
"));
-                    }
-
-                    let theme = &THEME_SET.themes[&context.config.highlight_theme];
-                    highlighter = Some(get_highlighter(info, &context.config));
-                    // This selects the background color the same way that start_coloured_html_snippet does
-                    let color =
-                        theme.settings.background.unwrap_or(::syntect::highlighting::Color::WHITE);
-                    background = IncludeBackground::IfDifferent(color);
-                    let snippet = start_highlighted_html_snippet(theme);
-                    Event::Html(Owned(snippet.0))
-                }
-                Event::End(Tag::CodeBlock(_)) => {
-                    if !context.config.highlight_code {
-                        return Event::Html(Borrowed("
\n")); - } - // reset highlight and close the code block - highlighter = None; - Event::Html(Borrowed("")) - } - Event::Start(Tag::Image(src, title)) => { - if is_colocated_asset_link(&src) { - return Event::Start(Tag::Image( - Owned(format!("{}{}", context.current_page_permalink, src)), - title, - )); - } - - Event::Start(Tag::Image(src, title)) - } - Event::Start(Tag::Link(link, title)) => { - let fixed_link = match fix_link(&link, context) { - Ok(fixed_link) => fixed_link, - Err(err) => { - error = Some(err); - return Event::Html(Borrowed("")) + highlighter.highlight(&text, &SYNTAX_SET) + }; + //let highlighted = &highlighter.highlight(&text, ss); + let html = styled_line_to_highlighted_html(&highlighted, background); + return Event::Html(Owned(html)); } - }; - Event::Start(Tag::Link(Owned(fixed_link), title)) + // Business as usual + Event::Text(text) + } + Event::Start(Tag::CodeBlock(ref info)) => { + if !context.config.highlight_code { + return Event::Html(Borrowed("
"));
+                        }
+
+                        let theme = &THEME_SET.themes[&context.config.highlight_theme];
+                        highlighter = Some(get_highlighter(info, &context.config));
+                        // This selects the background color the same way that start_coloured_html_snippet does
+                        let color = theme
+                            .settings
+                            .background
+                            .unwrap_or(::syntect::highlighting::Color::WHITE);
+                        background = IncludeBackground::IfDifferent(color);
+                        let snippet = start_highlighted_html_snippet(theme);
+                        Event::Html(Owned(snippet.0))
+                    }
+                    Event::End(Tag::CodeBlock(_)) => {
+                        if !context.config.highlight_code {
+                            return Event::Html(Borrowed("
\n")); + } + // reset highlight and close the code block + highlighter = None; + Event::Html(Borrowed("")) + } + Event::Start(Tag::Image(src, title)) => { + if is_colocated_asset_link(&src) { + return Event::Start(Tag::Image( + Owned(format!("{}{}", context.current_page_permalink, src)), + title, + )); + } + + Event::Start(Tag::Image(src, title)) + } + Event::Start(Tag::Link(link, title)) => { + let fixed_link = match fix_link(&link, context) { + Ok(fixed_link) => fixed_link, + Err(err) => { + error = Some(err); + return Event::Html(Borrowed("")); + } + }; + + Event::Start(Tag::Link(Owned(fixed_link), title)) + } + Event::Html(ref markup) if markup.contains("") => { + has_summary = true; + Event::Html(Borrowed(CONTINUE_READING)) + } + _ => event, } - Event::Html(ref markup) if markup.contains("") => { - has_summary = true; - Event::Html(Borrowed(CONTINUE_READING)) - } - _ => event, - } - }).collect::>(); // We need to collect the events to make a second pass + }) + .collect::>(); // We need to collect the events to make a second pass let header_refs = get_header_refs(&events); @@ -228,7 +233,7 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result Result Result<()> { if self.output_path.exists() { // Delete current `public` directory so we can start fresh - remove_dir_all(&self.output_path).map_err(|e| Error::chain("Couldn't delete output directory", e))?; + remove_dir_all(&self.output_path) + .map_err(|e| Error::chain("Couldn't delete output directory", e))?; } Ok(()) @@ -544,12 +555,8 @@ impl Site { if !lang.rss { continue; } - let pages = library - .pages_values() - .iter() - .filter(|p| p.lang == lang.code) - .map(|p| *p) - .collect(); + let pages = + library.pages_values().iter().filter(|p| p.lang == lang.code).map(|p| *p).collect(); self.render_rss_feed(pages, Some(&PathBuf::from(lang.code.clone())))?; } @@ -735,7 +742,8 @@ impl Site { } else { self.output_path.join(&taxonomy.kind.name) }; - let list_output = taxonomy.render_all_terms(&self.tera, &self.config, &self.library.read().unwrap())?; + let list_output = + taxonomy.render_all_terms(&self.tera, &self.config, &self.library.read().unwrap())?; create_directory(&output_path)?; create_file(&output_path.join("index.html"), &self.inject_livereload(list_output))?; let library = self.library.read().unwrap(); @@ -794,14 +802,20 @@ impl Site { let mut sections = self .library - .read().unwrap() + .read() + .unwrap() .sections_values() .iter() .filter(|s| s.meta.render) .map(|s| SitemapEntry::new(s.permalink.clone(), None)) .collect::>(); - for section in - self.library.read().unwrap().sections_values().iter().filter(|s| s.meta.paginate_by.is_some()) + for section in self + .library + .read() + .unwrap() + .sections_values() + .iter() + .filter(|s| s.meta.paginate_by.is_some()) { let number_pagers = (section.pages.len() as f64 / section.meta.paginate_by.unwrap() as f64) @@ -971,9 +985,13 @@ impl Site { } if section.meta.is_paginated() { - self.render_paginated(&output_path, &Paginator::from_section(§ion, &self.library.read().unwrap()))?; + self.render_paginated( + &output_path, + &Paginator::from_section(§ion, &self.library.read().unwrap()), + )?; } else { - let output = section.render_html(&self.tera, &self.config, &self.library.read().unwrap())?; + let output = + section.render_html(&self.tera, &self.config, &self.library.read().unwrap())?; create_file(&output_path.join("index.html"), &self.inject_livereload(output))?; } @@ -985,7 +1003,8 @@ impl Site { self.render_section( &self .library - .read().unwrap() + .read() + .unwrap() .get_section(&self.content_path.join("_index.md")) .expect("Failed to get index section"), false, @@ -995,7 +1014,8 @@ impl Site { /// Renders all sections pub fn render_sections(&self) -> Result<()> { self.library - .read().unwrap() + .read() + .unwrap() .sections_values() .into_par_iter() .map(|s| self.render_section(s, true)) @@ -1026,8 +1046,12 @@ impl Site { .map(|pager| { let page_path = folder_path.join(&format!("{}", pager.index)); create_directory(&page_path)?; - let output = - paginator.render_pager(pager, &self.config, &self.tera, &self.library.read().unwrap())?; + let output = paginator.render_pager( + pager, + &self.config, + &self.tera, + &self.library.read().unwrap(), + )?; if pager.index > 1 { create_file(&page_path.join("index.html"), &self.inject_livereload(output))?; } else { diff --git a/components/site/tests/site.rs b/components/site/tests/site.rs index c85033aa..9286b438 100644 --- a/components/site/tests/site.rs +++ b/components/site/tests/site.rs @@ -631,9 +631,8 @@ fn can_apply_page_templates() { assert_eq!(changed_recursively.meta.title, Some("Changed recursively".into())); // But it should not have override a children page_template - let yet_another_section = library - .get_section(&template_path.join("yet_another_section").join("_index.md")) - .unwrap(); + let yet_another_section = + library.get_section(&template_path.join("yet_another_section").join("_index.md")).unwrap(); assert_eq!(yet_another_section.subsections.len(), 0); assert_eq!(yet_another_section.pages.len(), 1); diff --git a/components/site/tests/site_i18n.rs b/components/site/tests/site_i18n.rs index f9b2a986..2f81c7cd 100644 --- a/components/site/tests/site_i18n.rs +++ b/components/site/tests/site_i18n.rs @@ -23,8 +23,7 @@ fn can_parse_multilingual_site() { assert_eq!(default_index_section.pages.len(), 1); assert!(default_index_section.ancestors.is_empty()); - let fr_index_section = - library.get_section(&path.join("content").join("_index.fr.md")).unwrap(); + let fr_index_section = library.get_section(&path.join("content").join("_index.fr.md")).unwrap(); assert_eq!(fr_index_section.pages.len(), 1); assert!(fr_index_section.ancestors.is_empty()); @@ -139,5 +138,4 @@ fn can_build_multilingual_site() { assert!(!file_contains!(public, "fr/auteurs/index.html", "Queen")); assert!(file_contains!(public, "fr/auteurs/index.html", "Vincent")); assert!(!file_exists!(public, "fr/auteurs/vincent-prouillet/rss.xml")); - } diff --git a/components/templates/src/global_fns/load_data.rs b/components/templates/src/global_fns/load_data.rs index 4fec8a9e..bc89c1bf 100644 --- a/components/templates/src/global_fns/load_data.rs +++ b/components/templates/src/global_fns/load_data.rs @@ -183,7 +183,7 @@ impl LoadData { pub fn new(content_path: PathBuf, base_path: PathBuf) -> Self { let client = Arc::new(Mutex::new(Client::builder().build().expect("reqwest client build"))); let result_cache = Arc::new(Mutex::new(HashMap::new())); - Self {content_path, base_path, client, result_cache} + Self { content_path, base_path, client, result_cache } } } @@ -310,7 +310,7 @@ fn load_csv(csv_data: String) -> Result { #[cfg(test)] mod tests { - use super::{LoadData, DataSource, OutputFormat}; + use super::{DataSource, LoadData, OutputFormat}; use std::collections::HashMap; use std::path::PathBuf; diff --git a/components/templates/src/global_fns/mod.rs b/components/templates/src/global_fns/mod.rs index 2398386d..cc347404 100644 --- a/components/templates/src/global_fns/mod.rs +++ b/components/templates/src/global_fns/mod.rs @@ -15,7 +15,7 @@ mod macros; mod load_data; - pub use self::load_data::LoadData; +pub use self::load_data::LoadData; #[derive(Debug)] pub struct Trans { @@ -23,7 +23,7 @@ pub struct Trans { } impl Trans { pub fn new(config: Config) -> Self { - Self {config} + Self { config } } } impl TeraFn for Trans { @@ -43,7 +43,7 @@ pub struct GetUrl { } impl GetUrl { pub fn new(config: Config, permalinks: HashMap) -> Self { - Self {config, permalinks} + Self { config, permalinks } } } impl TeraFn for GetUrl { @@ -88,7 +88,7 @@ pub struct ResizeImage { } impl ResizeImage { pub fn new(imageproc: Arc>) -> Self { - Self {imageproc} + Self { imageproc } } } @@ -154,7 +154,7 @@ impl GetTaxonomyUrl { } taxonomies.insert(taxonomy.kind.name.clone(), items); } - Self {taxonomies} + Self { taxonomies } } } impl TeraFn for GetTaxonomyUrl { @@ -188,7 +188,6 @@ impl TeraFn for GetTaxonomyUrl { } } - #[derive(Debug)] pub struct GetPage { base_path: PathBuf, @@ -196,7 +195,7 @@ pub struct GetPage { } impl GetPage { pub fn new(base_path: PathBuf, library: Arc>) -> Self { - Self {base_path: base_path.join("content"), library} + Self { base_path: base_path.join("content"), library } } } impl TeraFn for GetPage { @@ -209,9 +208,7 @@ impl TeraFn for GetPage { let full_path = self.base_path.join(&path); let library = self.library.read().unwrap(); match library.get_page(&full_path) { - Some(p) => { - Ok(to_value(p.to_serialized(&library)).unwrap()) - }, + Some(p) => Ok(to_value(p.to_serialized(&library)).unwrap()), None => Err(format!("Page `{}` not found.", path).into()), } } @@ -224,7 +221,7 @@ pub struct GetSection { } impl GetSection { pub fn new(base_path: PathBuf, library: Arc>) -> Self { - Self {base_path: base_path.join("content"), library} + Self { base_path: base_path.join("content"), library } } } impl TeraFn for GetSection { @@ -249,13 +246,12 @@ impl TeraFn for GetSection { } else { Ok(to_value(s.to_serialized(&library)).unwrap()) } - }, + } None => Err(format!("Section `{}` not found.", path).into()), } } } - #[derive(Debug)] pub struct GetTaxonomy { library: Arc>, @@ -267,7 +263,7 @@ impl GetTaxonomy { for taxo in all_taxonomies { taxonomies.insert(taxo.kind.name.clone(), taxo); } - Self {taxonomies, library} + Self { taxonomies, library } } } impl TeraFn for GetTaxonomy { @@ -278,16 +274,10 @@ impl TeraFn for GetTaxonomy { "`get_taxonomy` requires a `kind` argument with a string value" ); - match self.taxonomies.get(&kind) { - Some(t) => { - Ok(to_value(t.to_serialized(&self.library.read().unwrap())).unwrap()) - }, + match self.taxonomies.get(&kind) { + Some(t) => Ok(to_value(t.to_serialized(&self.library.read().unwrap())).unwrap()), None => { - Err(format!( - "`get_taxonomy` received an unknown taxonomy as kind: {}", - kind - ) - .into()) + Err(format!("`get_taxonomy` received an unknown taxonomy as kind: {}", kind).into()) } } } @@ -298,9 +288,9 @@ mod tests { use super::{GetTaxonomy, GetTaxonomyUrl, GetUrl, Trans}; use std::collections::HashMap; - use std::sync::{RwLock, Arc}; + use std::sync::{Arc, RwLock}; - use tera::{to_value, Value, Function}; + use tera::{to_value, Function, Value}; use config::{Config, Taxonomy as TaxonomyConfig}; use library::{Library, Taxonomy, TaxonomyItem}; @@ -348,9 +338,19 @@ mod tests { #[test] fn can_get_taxonomy() { let config = Config::default(); - let taxo_config = TaxonomyConfig { name: "tags".to_string(), lang: config.default_language.clone(), ..TaxonomyConfig::default() }; + let taxo_config = TaxonomyConfig { + name: "tags".to_string(), + lang: config.default_language.clone(), + ..TaxonomyConfig::default() + }; let library = Arc::new(RwLock::new(Library::new(0, 0, false))); - let tag = TaxonomyItem::new("Programming", &taxo_config, &config, vec![], &library.read().unwrap()); + let tag = TaxonomyItem::new( + "Programming", + &taxo_config, + &config, + vec![], + &library.read().unwrap(), + ); let tags = Taxonomy { kind: taxo_config, items: vec![tag] }; let taxonomies = vec![tags.clone()]; @@ -388,7 +388,11 @@ mod tests { #[test] fn can_get_taxonomy_url() { let config = Config::default(); - let taxo_config = TaxonomyConfig { name: "tags".to_string(), lang: config.default_language.clone(), ..TaxonomyConfig::default() }; + let taxo_config = TaxonomyConfig { + name: "tags".to_string(), + lang: config.default_language.clone(), + ..TaxonomyConfig::default() + }; let library = Library::new(0, 0, false); let tag = TaxonomyItem::new("Programming", &taxo_config, &config, vec![], &library); let tags = Taxonomy { kind: taxo_config, items: vec![tag] }; diff --git a/components/templates/src/lib.rs b/components/templates/src/lib.rs index 9f54ca87..05f782b6 100644 --- a/components/templates/src/lib.rs +++ b/components/templates/src/lib.rs @@ -25,7 +25,7 @@ pub mod global_fns; use tera::{Context, Tera}; -use errors::{Result, Error}; +use errors::{Error, Result}; lazy_static! { pub static ref ZOLA_TERA: Tera = { diff --git a/components/utils/src/fs.rs b/components/utils/src/fs.rs index fdbccbdb..f9eb4ead 100644 --- a/components/utils/src/fs.rs +++ b/components/utils/src/fs.rs @@ -4,7 +4,7 @@ use std::path::{Path, PathBuf}; use std::time::SystemTime; use walkdir::WalkDir; -use errors::{Result, Error}; +use errors::{Error, Result}; pub fn is_path_in_directory(parent: &Path, path: &Path) -> Result { let canonical_path = path @@ -19,8 +19,8 @@ pub fn is_path_in_directory(parent: &Path, path: &Path) -> Result { /// Create a file with the content given pub fn create_file(path: &Path, content: &str) -> Result<()> { - let mut file = File::create(&path) - .map_err(|e| Error::chain(format!("Failed to create {:?}", path), e))?; + let mut file = + File::create(&path).map_err(|e| Error::chain(format!("Failed to create {:?}", path), e))?; file.write_all(content.as_bytes())?; Ok(()) } @@ -37,8 +37,9 @@ pub fn ensure_directory_exists(path: &Path) -> Result<()> { /// exists before creating it pub fn create_directory(path: &Path) -> Result<()> { if !path.exists() { - create_dir_all(path) - .map_err(|e| Error::chain(format!("Was not able to create folder {}", path.display()), e))?; + create_dir_all(path).map_err(|e| { + Error::chain(format!("Was not able to create folder {}", path.display()), e) + })?; } Ok(()) } diff --git a/components/utils/src/vec.rs b/components/utils/src/vec.rs index 778de4a7..346769c1 100644 --- a/components/utils/src/vec.rs +++ b/components/utils/src/vec.rs @@ -16,7 +16,7 @@ impl InsertMany for Vec { for (idx, elem) in elem_to_insert.into_iter() { let head_len = idx - last_idx; - inserted.extend(self.splice(0 .. head_len, std::iter::empty())); + inserted.extend(self.splice(0..head_len, std::iter::empty())); inserted.push(elem); last_idx = idx; } @@ -41,4 +41,4 @@ mod test { v2.insert_many(vec![(0, 0), (2, -1)]); assert_eq!(v2, &[0, 1, 2, -1, 3, 4, 5]); } -} \ No newline at end of file +} diff --git a/src/cmd/serve.rs b/src/cmd/serve.rs index 2deba227..07544a06 100644 --- a/src/cmd/serve.rs +++ b/src/cmd/serve.rs @@ -36,7 +36,7 @@ use ctrlc; use notify::{watcher, RecursiveMode, Watcher}; use ws::{Message, Sender, WebSocket}; -use errors::{Result, Error as ZolaError}; +use errors::{Error as ZolaError, Result}; use site::Site; use utils::fs::copy_file; @@ -296,11 +296,7 @@ pub fn serve( }; console::info(&msg); // Force refresh - rebuild_done_handling( - &broadcaster, - rebuild::after_template_change(site, &path), - "/x.js", - ); + rebuild_done_handling(&broadcaster, rebuild::after_template_change(site, &path), "/x.js"); }; let reload_sass = |site: &Site, path: &Path, partial_path: &Path| { diff --git a/src/console.rs b/src/console.rs index 719f3ad4..0241cf36 100644 --- a/src/console.rs +++ b/src/console.rs @@ -7,8 +7,8 @@ use atty; use chrono::Duration; use termcolor::{Color, ColorChoice, ColorSpec, StandardStream, WriteColor}; -use site::Site; use errors::Error; +use site::Site; lazy_static! { /// Termcolor color choice. @@ -64,9 +64,7 @@ pub fn warn_about_ignored_pages(site: &Site) { let ignored_pages: Vec<_> = library .sections_values() .iter() - .flat_map(|s| { - s.ignored_pages.iter().map(|k| library.get_page_by_key(*k).file.path.clone()) - }) + .flat_map(|s| s.ignored_pages.iter().map(|k| library.get_page_by_key(*k).file.path.clone())) .collect(); if !ignored_pages.is_empty() { From 705a30aa8d2e15a48df98944992e56d7d2ca83e2 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Sat, 9 Feb 2019 20:49:18 +0100 Subject: [PATCH 42/74] Move toc to be a rendering page/section variable level --- CHANGELOG.md | 2 ++ components/library/src/content/page.rs | 1 + components/library/src/content/section.rs | 1 + components/library/src/content/ser.rs | 6 ------ docs/content/documentation/templates/pages-sections.md | 6 +----- test_site/templates/page.html | 1 + 6 files changed, 6 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cbf56d50..becfe36f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ ### Breaking - `earlier/later` and `lighter/heavier` are not set anymore on pages when rendering a section +- The table of content for a page/section is now only available as the `toc` variable when +rendering it and not anymore on the `page`/`section` variable ### Other - Add support for content in multiple languages diff --git a/components/library/src/content/page.rs b/components/library/src/content/page.rs index c344d505..8383e5bc 100644 --- a/components/library/src/content/page.rs +++ b/components/library/src/content/page.rs @@ -270,6 +270,7 @@ impl Page { context.insert("current_path", &self.path); context.insert("page", &self.to_serialized(library)); context.insert("lang", &self.lang); + context.insert("toc", &self.toc); render_template(&tpl_name, tera, context, &config.theme).map_err(|e| { Error::chain(format!("Failed to render page '{}'", self.file.path.display()), e) diff --git a/components/library/src/content/section.rs b/components/library/src/content/section.rs index 3da005eb..84166e80 100644 --- a/components/library/src/content/section.rs +++ b/components/library/src/content/section.rs @@ -189,6 +189,7 @@ impl Section { context.insert("current_path", &self.path); context.insert("section", &self.to_serialized(library)); context.insert("lang", &self.lang); + context.insert("toc", &self.toc); render_template(tpl_name, tera, context, &config.theme).map_err(|e| { Error::chain(format!("Failed to render section '{}'", self.file.path.display()), e) diff --git a/components/library/src/content/ser.rs b/components/library/src/content/ser.rs index e8f311b2..83388d60 100644 --- a/components/library/src/content/ser.rs +++ b/components/library/src/content/ser.rs @@ -67,7 +67,6 @@ pub struct SerializingPage<'a> { summary: &'a Option, word_count: Option, reading_time: Option, - toc: &'a [Header], assets: &'a [String], draft: bool, lang: &'a str, @@ -129,7 +128,6 @@ impl<'a> SerializingPage<'a> { summary: &page.summary, word_count: page.word_count, reading_time: page.reading_time, - toc: &page.toc, assets: &page.serialized_assets, draft: page.is_draft(), lang: &page.lang, @@ -185,7 +183,6 @@ impl<'a> SerializingPage<'a> { summary: &page.summary, word_count: page.word_count, reading_time: page.reading_time, - toc: &page.toc, assets: &page.serialized_assets, draft: page.is_draft(), lang: &page.lang, @@ -212,7 +209,6 @@ pub struct SerializingSection<'a> { word_count: Option, reading_time: Option, lang: &'a str, - toc: &'a [Header], assets: &'a [String], pages: Vec>, subsections: Vec<&'a str>, @@ -251,7 +247,6 @@ impl<'a> SerializingSection<'a> { components: §ion.components, word_count: section.word_count, reading_time: section.reading_time, - toc: §ion.toc, assets: §ion.serialized_assets, lang: §ion.lang, pages, @@ -290,7 +285,6 @@ impl<'a> SerializingSection<'a> { components: §ion.components, word_count: section.word_count, reading_time: section.reading_time, - toc: §ion.toc, assets: §ion.serialized_assets, lang: §ion.lang, pages: vec![], diff --git a/docs/content/documentation/templates/pages-sections.md b/docs/content/documentation/templates/pages-sections.md index c21ed773..c1402d4d 100644 --- a/docs/content/documentation/templates/pages-sections.md +++ b/docs/content/documentation/templates/pages-sections.md @@ -39,8 +39,6 @@ later: Page?; // and only set when rendering the page itself heavier: Page?; lighter: Page?; -// See the Table of contents section below for more details -toc: Array
; // Year/month/day is only set if the page has a date and month/day are 1-indexed year: Number?; month: Number?; @@ -89,8 +87,6 @@ subsections: Array; word_count: Number; // Based on https://help.medium.com/hc/en-us/articles/214991667-Read-time reading_time: Number; -// See the Table of contents section below for more details -toc: Array
; // Paths of colocated assets, relative to the content directory assets: Array; // The relative paths of the parent sections until the index onef for use with the `get_section` Tera function @@ -107,7 +103,7 @@ translations: Array; ## Table of contents -Both page and section have a `toc` field which corresponds to an array of `Header`. +Both page and section templates have a `toc` variable which corresponds to an array of `Header`. A `Header` has the following fields: ```ts diff --git a/test_site/templates/page.html b/test_site/templates/page.html index 275de869..d0e0f3e1 100644 --- a/test_site/templates/page.html +++ b/test_site/templates/page.html @@ -3,6 +3,7 @@ {% block content %} {{ page.content | safe }} {{ page.relative_path | safe }} + {{ toc }} {% if page.earlier %}Previous article: {{ page.earlier.permalink }}{% endif %} {% if page.later %}Next article: {{ page.later.permalink }}{% endif %} From 25b943ec352de32ff8c983d2872e80f363762b46 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Sat, 16 Feb 2019 15:40:59 +0100 Subject: [PATCH 43/74] Print list of template names to debug Windows error --- Cargo.lock | 158 ++++++++++++++-------------- components/rebuild/tests/rebuild.rs | 1 + 2 files changed, 79 insertions(+), 80 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c2303b1d..9ac0072e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -48,7 +48,7 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -88,12 +88,12 @@ dependencies = [ "mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", "serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -131,7 +131,7 @@ name = "aho-corasick" version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -234,7 +234,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -297,7 +297,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -336,8 +336,8 @@ dependencies = [ "errors 0.1.0", "globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", "syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", @@ -396,7 +396,7 @@ dependencies = [ "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -477,7 +477,7 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "csv-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -485,7 +485,7 @@ name = "csv-core" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -537,8 +537,8 @@ dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rust-stemmers 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", "strum 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "strum_macros 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -623,7 +623,7 @@ version = "0.1.0" dependencies = [ "image 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", "syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -699,9 +699,9 @@ dependencies = [ "errors 0.1.0", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -768,7 +768,7 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -809,7 +809,7 @@ dependencies = [ "aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -899,7 +899,7 @@ dependencies = [ [[package]] name = "hyper" -version = "0.12.23" +version = "0.12.24" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -930,7 +930,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.23 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.24 (registry+https://github.com/rust-lang/crates.io-index)", "native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -954,7 +954,7 @@ dependencies = [ "globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "same-file 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -989,7 +989,7 @@ dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -1000,7 +1000,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "inflate" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1111,12 +1111,12 @@ dependencies = [ "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rendering 0.1.0", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", "slotmap 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -1186,8 +1186,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", "phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1201,10 +1201,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "memchr" -version = "2.1.3" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1367,7 +1366,7 @@ name = "nom" version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1432,7 +1431,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "num_cpus" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1440,7 +1439,7 @@ dependencies = [ [[package]] name = "onig" -version = "4.3.1" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1608,7 +1607,7 @@ dependencies = [ "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", "xml-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1619,7 +1618,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "deflate 0.7.19 (registry+https://github.com/rust-lang/crates.io-index)", - "inflate 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "inflate 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", "num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1796,7 +1795,7 @@ dependencies = [ "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1838,7 +1837,7 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex-syntax 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1873,12 +1872,12 @@ dependencies = [ "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "pulldown-cmark 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "templates 0.1.0", - "tera 1.0.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -1892,14 +1891,14 @@ dependencies = [ "encoding_rs 0.8.16 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.23 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.24 (registry+https://github.com/rust-lang/crates.io-index)", "hyper-tls 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "libflate 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", "mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", "native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", "serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1925,8 +1924,8 @@ name = "rust-stemmers" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2050,12 +2049,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde" -version = "1.0.87" +version = "1.0.88" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde_derive" -version = "1.0.87" +version = "1.0.88" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2071,7 +2070,7 @@ dependencies = [ "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2081,7 +2080,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2128,11 +2127,11 @@ dependencies = [ "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "sass-rs 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "search 0.1.0", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "templates 0.1.0", - "tera 1.0.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -2192,7 +2191,7 @@ dependencies = [ "new_debug_unreachable 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", "precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2267,11 +2266,11 @@ dependencies = [ "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "onig 4.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "onig 4.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "plist 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex-syntax 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "yaml-rust 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2304,7 +2303,7 @@ dependencies = [ "pulldown-cmark 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "reqwest 0.9.9 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", @@ -2322,7 +2321,7 @@ dependencies = [ [[package]] name = "tera" -version = "1.0.0-alpha.5" +version = "1.0.0-beta.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2332,12 +2331,12 @@ dependencies = [ "pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "unic-segment 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "v_htmlescape 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "v_htmlescape 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2403,7 +2402,7 @@ dependencies = [ "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2476,7 +2475,7 @@ dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2531,7 +2530,7 @@ dependencies = [ "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2584,7 +2583,7 @@ name = "toml" version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2804,9 +2803,9 @@ name = "utils" version = "0.1.0" dependencies = [ "errors 0.1.0", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2831,7 +2830,7 @@ dependencies = [ [[package]] name = "v_escape" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "v_escape_derive 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2872,12 +2871,11 @@ dependencies = [ [[package]] name = "v_htmlescape" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "v_escape 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "v_escape 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3146,13 +3144,13 @@ dependencies = [ "checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" "checksum humansize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6cab2627acfc432780848602f3f558f7e9dd427352224b0d9324025796d2a5e" "checksum humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca7e5f2e110db35f93b837c81797f3714500b81d517bf20c431b16d3ca4f114" -"checksum hyper 0.12.23 (registry+https://github.com/rust-lang/crates.io-index)" = "860faf61a9957c9cb0e23e69f1c8290e92f6eb660fcdd1f2d6777043a2ae1a46" +"checksum hyper 0.12.24 (registry+https://github.com/rust-lang/crates.io-index)" = "fdfa9b401ef6c4229745bb6e9b2529192d07b920eed624cdee2a82348cd550af" "checksum hyper-tls 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "32cd73f14ad370d3b4d4b7dce08f69b81536c82e39fcc89731930fe5788cd661" "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" "checksum ignore 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ad03ca67dc12474ecd91fdb94d758cbd20cb4e7a78ebe831df26a9b7511e1162" "checksum image 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)" = "52fb0666a1273dac46f9725aa4859bcd5595fc3554cf3495051b4de8db745e7d" "checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d" -"checksum inflate 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "84c683bde2d8413b8f1be3e459c30e4817672b6e7a31d9212b0323154e76eba7" +"checksum inflate 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1cdb29978cc5797bd8dcc8e5bf7de604891df2a8dc576973d71a281e916db2ff" "checksum inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "40b54539f3910d6f84fbf9a643efd6e3aa6e4f001426c0329576128255994718" "checksum inotify-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e74a1aa87c59aeff6ef2cc2fa62d41bc43f54952f55652656b18a02fd5e356c0" "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" @@ -3175,7 +3173,7 @@ dependencies = [ "checksum maplit 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "08cbb6b4fef96b6d77bfc40ec491b1690c779e77b05cd9f07f787ed376fd4c43" "checksum markup5ever 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)" = "897636f9850c3eef4905a5540683ed53dc9393860f0846cab2c2ddf9939862ff" "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" -"checksum memchr 2.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e1dd4eaac298c32ce07eb6ed9242eda7d82955b9170b7d6db59b2e02cc63fcb8" +"checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39" "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" "checksum mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "3e27ca21f40a310bd06d9031785f4801710d566c184a6e15bad4f1d9b65f9425" "checksum mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "30de2e4613efcba1ec63d8133f344076952090c122992a903359be5a4f99c3ed" @@ -3198,8 +3196,8 @@ dependencies = [ "checksum num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "af3fdbbc3291a5464dc57b03860ec37ca6bf915ed6ee385e7c6c052c422b2124" "checksum num-rational 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4e96f040177bb3da242b5b1ecf3f54b5d5af3efbbfb18608977a5d2767b22f10" "checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" -"checksum num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5a69d464bdc213aaaff628444e99578ede64e9c854025aa43b9796530afa9238" -"checksum onig 4.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2e69a05d35a8f30d626a1df53c8636fe1b689407d744c0c7623aa825c0a3356e" +"checksum num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a23f0ed30a54abaa0c7e83b1d2d87ada7c3c23078d1d87815af3e3b6385fbba" +"checksum onig 4.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a646989adad8a19f49be2090374712931c3a59835cb5277b4530f48b417f26e7" "checksum onig_sys 69.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388410bf5fa341f10e58e6db3975f4bea1ac30247dd79d37a9e5ced3cb4cc3b0" "checksum openssl 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)" = "ec7bd7ca4cce6dbdc77e7c1230682740d307d1218a87fb0349a571272be749f9" "checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" @@ -3262,8 +3260,8 @@ dependencies = [ "checksum security-framework-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3d6696852716b589dff9e886ff83778bb635150168e83afa8ac6b8a78cb82abc" "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -"checksum serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)" = "2e20fde37801e83c891a2dc4ebd3b81f0da4d1fb67a9e0a2a3b921e2536a58ee" -"checksum serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)" = "633e97856567e518b59ffb2ad7c7a4fd4c5d91d9c7f32dd38a27b2bf7e8114ea" +"checksum serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)" = "9f301d728f2b94c9a7691c90f07b0b4e8a4517181d9461be94c04bddeb4bd850" +"checksum serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)" = "beed18e6f5175aef3ba670e57c60ef3b1b74d250d962a26604bff4c80e970dd4" "checksum serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)" = "27dce848e7467aa0e2fcaf0a413641499c0b745452aaca1194d24dedde9e13c9" "checksum serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d48f9f99cd749a2de71d29da5f948de7f2764cc5a9d7f3c97e3514d4ee6eabf2" "checksum sha-1 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "51b9d1f3b5de8a167ab06834a7c883bd197f2191e1dda1a22d9ccfeedbf9aded" @@ -3288,7 +3286,7 @@ dependencies = [ "checksum syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e02dd9df97a68a2d005ace28ff24c610abfc3ce17afcfdb22a077645dabb599a" "checksum tempfile 3.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "37daa55a7240c4931c84559f03b3cad7d19535840d1c4a0cc4e9b2fb0dcf70ff" "checksum tendril 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "707feda9f2582d5d680d733e38755547a3e8fb471e7ba11452ecfd9ce93a5d3b" -"checksum tera 1.0.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "31ef8198415b2431dfd105f99b377a5b53592b793e80db87dcdaee15c5befd81" +"checksum tera 1.0.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c8e39195166443c9ab187b0718c9351efddabfb2fa425ced513f8aa2d8c5a453" "checksum termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4096add70612622289f2fdcdbd5086dc81c1e2675e6ae58d6c4f62a16c6d7f2f" "checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" "checksum textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "307686869c93e71f94da64286f9a9524c0f308a9e1c87a583de8e9c9039ad3f6" @@ -3337,11 +3335,11 @@ dependencies = [ "checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737" "checksum uuid 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0238db0c5b605dd1cf51de0f21766f97fba2645897024461d6a00c036819a768" "checksum v_escape 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c8b50688edb86f4c092a1a9fe8bda004b0faa3197100897653809e97e09a2814" -"checksum v_escape 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "38187e1fdbf09d7dcb6fd3dfa7fcc14a0d77d9f09be411431faec832a5476d75" +"checksum v_escape 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "973c504626bd18920d388344f98cdcafe77affd37f0a69ff946842d8ee1c7ef3" "checksum v_escape_derive 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7cd994c63b487fef7aad31e5394ec04b9e24de7b32ea5251c9fb499cd2cbf44c" "checksum v_escape_derive 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4592e378ab72caf41ee682531446526c5e16bb1aaa4f7cd673da893ade308b79" "checksum v_htmlescape 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "020cae817dc82693aa523f01087b291b1c7a9ac8cea5c12297963f21769fb27f" -"checksum v_htmlescape 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "72030ff9467f2e782051667b315875a117b9cef470d0796d5482c7f7da84524b" +"checksum v_htmlescape 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9bc3140d4809e7f14ea901910b1bc8e80ac0421978690205931c9d569b80d47a" "checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" "checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" diff --git a/components/rebuild/tests/rebuild.rs b/components/rebuild/tests/rebuild.rs index 621e8a8f..6bd69be1 100644 --- a/components/rebuild/tests/rebuild.rs +++ b/components/rebuild/tests/rebuild.rs @@ -240,6 +240,7 @@ fn can_rebuild_after_renaming_non_md_asset_in_colocated_folder() { fn can_rebuild_after_deleting_file() { let tmp_dir = tempdir().expect("create temp dir"); let (site_path, mut site) = load_and_build_site!(tmp_dir, "test_site"); + println!("{:#?}", site.tera.templates.keys().collect::>()); let path = site_path.join("content").join("posts").join("fixed-slug.md"); fs::remove_file(&path).unwrap(); From 84f10f6b692fcaa39291c8f5d6a79f37f58b01b0 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Sat, 16 Feb 2019 16:31:29 +0100 Subject: [PATCH 44/74] Use platform separator for shortcodes paths --- components/library/src/content/ser.rs | 1 - components/rebuild/tests/rebuild.rs | 1 - components/rendering/src/shortcode.rs | 4 +++- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/components/library/src/content/ser.rs b/components/library/src/content/ser.rs index 83388d60..f5304849 100644 --- a/components/library/src/content/ser.rs +++ b/components/library/src/content/ser.rs @@ -5,7 +5,6 @@ use tera::{Map, Value}; use content::{Page, Section}; use library::Library; -use rendering::Header; #[derive(Clone, Debug, PartialEq, Serialize)] pub struct TranslatedContent<'a> { diff --git a/components/rebuild/tests/rebuild.rs b/components/rebuild/tests/rebuild.rs index 6bd69be1..621e8a8f 100644 --- a/components/rebuild/tests/rebuild.rs +++ b/components/rebuild/tests/rebuild.rs @@ -240,7 +240,6 @@ fn can_rebuild_after_renaming_non_md_asset_in_colocated_folder() { fn can_rebuild_after_deleting_file() { let tmp_dir = tempdir().expect("create temp dir"); let (site_path, mut site) = load_and_build_site!(tmp_dir, "test_site"); - println!("{:#?}", site.tera.templates.keys().collect::>()); let path = site_path.join("content").join("posts").join("fixed-slug.md"); fs::remove_file(&path).unwrap(); diff --git a/components/rendering/src/shortcode.rs b/components/rendering/src/shortcode.rs index 4bf7c691..0ef0488b 100644 --- a/components/rendering/src/shortcode.rs +++ b/components/rendering/src/shortcode.rs @@ -1,3 +1,5 @@ +use std::path::MAIN_SEPARATOR; + use pest::iterators::Pair; use pest::Parser; use regex::Regex; @@ -112,7 +114,7 @@ fn render_shortcode( } tera_context.extend(context.tera_context.clone()); - let template_name = format!("shortcodes/{}.html", name); + let template_name = format!("shortcodes{}{}.html", MAIN_SEPARATOR, name); let res = utils::templates::render_template(&template_name, &context.tera, tera_context, &None) .map_err(|e| Error::chain(format!("Failed to render {} shortcode", name), e))?; From b5e3fd7d2daf0a301837a2abd04c3e9d80788241 Mon Sep 17 00:00:00 2001 From: Eli Flanagan Date: Mon, 18 Feb 2019 15:29:55 -0500 Subject: [PATCH 45/74] fix minor typo in doc template --- .github/ISSUE_TEMPLATE/documentation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/documentation.md b/.github/ISSUE_TEMPLATE/documentation.md index d0466870..8e455bd9 100644 --- a/.github/ISSUE_TEMPLATE/documentation.md +++ b/.github/ISSUE_TEMPLATE/documentation.md @@ -10,5 +10,5 @@ What is the issue? Is the documentation unclear? Is it missing information? ## Proposed solution A quick explanation of what you would like to see to solve the issue. -If you want to add content, please explain what you were looking fod and what was +If you want to add content, please explain what you were looking for and what was your process while looking at the current documentation. From ce0f0ec9353254f890834a6f32574b222d06eeab Mon Sep 17 00:00:00 2001 From: Eli Flanagan Date: Tue, 19 Feb 2019 09:54:07 -0500 Subject: [PATCH 46/74] use nix-shell to build on nixos Fix #616. Add brief documentation for how to use it. --- .gitignore | 3 +++ .../documentation/getting-started/installation.md | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/.gitignore b/.gitignore index ef376f6b..f9c3472e 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,6 @@ snap/.snapcraft parts prime stage + +# nixos dependencies snippet +shell.nix diff --git a/docs/content/documentation/getting-started/installation.md b/docs/content/documentation/getting-started/installation.md index 6f7f4dce..03c36005 100644 --- a/docs/content/documentation/getting-started/installation.md +++ b/docs/content/documentation/getting-started/installation.md @@ -49,6 +49,19 @@ To build it from source, you will need to have Git, [Rust (at least 1.30) and Ca installed. You will also need additional dependencies to compile [libsass](https://github.com/sass/libsass): - OSX, Linux and other Unix: `make` (`gmake` on BSDs), `g++`, `libssl-dev` + - NixOS: Create a `shell.nix` file in the root of the cloned project with the following contents: + ```nix + with import {}; + + pkgs.mkShell { + buildInputs = [ + libsass + openssl + pkgconfig + ]; + } + ``` + - Then invoke `nix-shell`. This opens a shell with the above dependencies. You then run `cargo build --release` to build the project. - Windows (a bit trickier): updated `MSVC` and overall updated VS installation From a terminal, you can now run the following command: From 11c58458e8bf3ffebf4c4dff4668ce4dff81fd69 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Fri, 22 Feb 2019 21:02:42 +0100 Subject: [PATCH 47/74] Revert useless change in shortcodes --- .gitignore | 1 + components/rendering/src/shortcode.rs | 4 +--- components/site/benches/gen.py | 1 + 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 777cd7b2..fd58a410 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ small-blog medium-blog big-blog huge-blog +extra-huge-blog small-kb medium-kb huge-kb diff --git a/components/rendering/src/shortcode.rs b/components/rendering/src/shortcode.rs index 0ef0488b..4bf7c691 100644 --- a/components/rendering/src/shortcode.rs +++ b/components/rendering/src/shortcode.rs @@ -1,5 +1,3 @@ -use std::path::MAIN_SEPARATOR; - use pest::iterators::Pair; use pest::Parser; use regex::Regex; @@ -114,7 +112,7 @@ fn render_shortcode( } tera_context.extend(context.tera_context.clone()); - let template_name = format!("shortcodes{}{}.html", MAIN_SEPARATOR, name); + let template_name = format!("shortcodes/{}.html", name); let res = utils::templates::render_template(&template_name, &context.tera, tera_context, &None) .map_err(|e| Error::chain(format!("Failed to render {} shortcode", name), e))?; diff --git a/components/site/benches/gen.py b/components/site/benches/gen.py index 060104f5..c30709ba 100644 --- a/components/site/benches/gen.py +++ b/components/site/benches/gen.py @@ -169,6 +169,7 @@ if __name__ == "__main__": gen_site("medium-blog", [""], 250, is_blog=True) gen_site("big-blog", [""], 1000, is_blog=True) gen_site("huge-blog", [""], 10000, is_blog=True) + gen_site("extra-huge-blog", [""], 100000, is_blog=True) gen_site("small-kb", ["help", "help1", "help2", "help3", "help4", "help5", "help6", "help7", "help8", "help9"], 10) gen_site("medium-kb", ["help", "help1", "help2", "help3", "help4", "help5", "help6", "help7", "help8", "help9"], 100) From 974492bb7b62e91ad65d0e367225da58c3445328 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Fri, 22 Feb 2019 21:48:30 +0100 Subject: [PATCH 48/74] Ensure we don't delete root index without adding back default in rebuild Fix #620 --- components/rebuild/src/lib.rs | 3 +++ components/rebuild/tests/rebuild.rs | 17 ++++++++++++ components/site/src/lib.rs | 42 ++++++++++++++++------------- test_site/content/_index.md | 2 ++ 4 files changed, 46 insertions(+), 18 deletions(-) create mode 100644 test_site/content/_index.md diff --git a/components/rebuild/src/lib.rs b/components/rebuild/src/lib.rs index ca4250b1..a93ef7f8 100644 --- a/components/rebuild/src/lib.rs +++ b/components/rebuild/src/lib.rs @@ -116,6 +116,9 @@ fn delete_element(site: &mut Site, path: &Path, is_section: bool) -> Result<()> } } + // We might have delete the root _index.md so ensure we have at least the default one + // before populating + site.create_default_index_sections()?; site.populate_sections(); site.populate_taxonomies()?; // Ensure we have our fn updated so it doesn't contain the permalink(s)/section/page deleted diff --git a/components/rebuild/tests/rebuild.rs b/components/rebuild/tests/rebuild.rs index 621e8a8f..f35c0c22 100644 --- a/components/rebuild/tests/rebuild.rs +++ b/components/rebuild/tests/rebuild.rs @@ -269,3 +269,20 @@ Edite assert!(res.is_ok()); assert!(file_contains!(site_path, "public/fr/blog/with-assets/index.html", "Edite")); } + +// https://github.com/getzola/zola/issues/620 +#[test] +fn can_rebuild_after_renaming_section_and_deleting_file() { + let tmp_dir = tempdir().expect("create temp dir"); + let (site_path, mut site) = load_and_build_site!(tmp_dir, "test_site"); + let (old_path, new_path) = rename!(site_path, "content/posts/", "post/"); + let res = after_content_rename(&mut site, &old_path, &new_path); + assert!(res.is_ok()); + + let path = site_path.join("content").join("_index.md"); + fs::remove_file(&path).unwrap(); + + let res = after_content_change(&mut site, &path); + println!("{:?}", res); + assert!(res.is_ok()); +} diff --git a/components/site/src/lib.rs b/components/site/src/lib.rs index 9d40f759..643a10df 100644 --- a/components/site/src/lib.rs +++ b/components/site/src/lib.rs @@ -234,8 +234,30 @@ impl Site { self.add_section(s, false)?; } - // Insert a default index section for each language if necessary so we don't need to create - // a _index.md to render the index page at the root of the site + self.create_default_index_sections()?; + + let mut pages_insert_anchors = HashMap::new(); + for page in pages { + let p = page?; + pages_insert_anchors.insert( + p.file.path.clone(), + self.find_parent_section_insert_anchor(&p.file.parent.clone(), &p.lang), + ); + self.add_page(p, false)?; + } + + self.register_early_global_fns(); + self.populate_sections(); + self.render_markdown()?; + self.populate_taxonomies()?; + self.register_tera_global_fns(); + + Ok(()) + } + + /// Insert a default index section for each language if necessary so we don't need to create + /// a _index.md to render the index page at the root of the site + pub fn create_default_index_sections(&mut self) -> Result<()> { for (index_path, lang) in self.index_section_paths() { if let Some(ref index_section) = self.library.read().unwrap().get_section(&index_path) { if self.config.build_search_index && !index_section.meta.in_search_index { @@ -270,22 +292,6 @@ impl Site { } } - let mut pages_insert_anchors = HashMap::new(); - for page in pages { - let p = page?; - pages_insert_anchors.insert( - p.file.path.clone(), - self.find_parent_section_insert_anchor(&p.file.parent.clone(), &p.lang), - ); - self.add_page(p, false)?; - } - - self.register_early_global_fns(); - self.populate_sections(); - self.render_markdown()?; - self.populate_taxonomies()?; - self.register_tera_global_fns(); - Ok(()) } diff --git a/test_site/content/_index.md b/test_site/content/_index.md new file mode 100644 index 00000000..ac36e062 --- /dev/null +++ b/test_site/content/_index.md @@ -0,0 +1,2 @@ ++++ ++++ From 13b24d56fb60289263cd820a7336a13b89d733ff Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Sat, 23 Feb 2019 13:01:46 +0100 Subject: [PATCH 49/74] Update deps --- Cargo.lock | 270 +++++++++++++++++++++++++---------------------------- 1 file changed, 128 insertions(+), 142 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9ac0072e..f9a19bbb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5,7 +5,7 @@ name = "MacTypes-sys" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -20,10 +20,10 @@ dependencies = [ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -78,7 +78,7 @@ dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "h2 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -98,7 +98,7 @@ dependencies = [ "serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -128,7 +128,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "aho-corasick" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -178,7 +178,7 @@ name = "atty" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -190,13 +190,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "backtrace" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -207,7 +207,7 @@ version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -229,7 +229,7 @@ dependencies = [ [[package]] name = "bincode" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -358,7 +358,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -366,7 +366,7 @@ name = "core-foundation-sys" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -406,7 +406,7 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -526,7 +526,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "either" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -614,7 +614,7 @@ name = "error-chain" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "backtrace 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -623,7 +623,7 @@ version = "0.1.0" dependencies = [ "image 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", "syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.2 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -632,7 +632,7 @@ name = "failure" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "backtrace 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -658,7 +658,7 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -668,7 +668,7 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crc32fast 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "miniz-sys 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "miniz_oxide_c_api 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -701,7 +701,7 @@ dependencies = [ "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.2 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -718,7 +718,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "fsevent-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -726,7 +726,7 @@ name = "fsevent-sys" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -754,7 +754,7 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "mac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "new_debug_unreachable 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "new_debug_unreachable 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -806,7 +806,7 @@ name = "globset" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -815,7 +815,7 @@ dependencies = [ [[package]] name = "globwalk" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "ignore 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -831,7 +831,7 @@ dependencies = [ "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -852,7 +852,7 @@ name = "hostname" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "winutil 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -871,7 +871,7 @@ dependencies = [ [[package]] name = "http" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -906,7 +906,7 @@ dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "h2 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -989,7 +989,7 @@ dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.2 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -1013,7 +1013,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "inotify-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1021,7 +1021,7 @@ name = "inotify-sys" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1029,7 +1029,7 @@ name = "iovec" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1085,12 +1085,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "libc" -version = "0.2.48" +version = "0.2.49" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "libflate" -version = "0.1.19" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1115,8 +1115,8 @@ dependencies = [ "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", "slotmap 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.2 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -1126,7 +1126,7 @@ name = "link_checker" version = "0.1.0" dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "reqwest 0.9.9 (registry+https://github.com/rust-lang/crates.io-index)", + "reqwest 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1204,7 +1204,7 @@ name = "memchr" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1237,7 +1237,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1255,7 +1255,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", "crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "miniz_oxide 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1269,7 +1269,7 @@ dependencies = [ "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1294,7 +1294,7 @@ version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1315,15 +1315,15 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl 0.10.18 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.40 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.41 (registry+https://github.com/rust-lang/crates.io-index)", "schannel 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", "security-framework 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "security-framework-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1332,17 +1332,14 @@ version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "new_debug_unreachable" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "nix" @@ -1352,7 +1349,7 @@ dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1381,7 +1378,7 @@ dependencies = [ "fsevent-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1434,7 +1431,7 @@ name = "num_cpus" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1444,7 +1441,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "onig_sys 69.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1459,15 +1456,15 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.16" +version = "0.10.18" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.40 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.41 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1477,11 +1474,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "openssl-sys" -version = "0.9.40" +version = "0.9.41" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1508,10 +1505,10 @@ name = "parking_lot_core" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1663,7 +1660,7 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1676,7 +1673,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1687,14 +1684,14 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_jitter 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "rand_os 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1742,7 +1739,7 @@ name = "rand_jitter" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1754,7 +1751,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1762,11 +1759,11 @@ dependencies = [ [[package]] name = "rand_pcg" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1783,7 +1780,7 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "rayon-core 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1794,7 +1791,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1815,7 +1812,7 @@ dependencies = [ "fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "library 0.1.0", "site 0.1.0", - "tempfile 3.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1836,7 +1833,7 @@ name = "regex" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex-syntax 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1877,23 +1874,23 @@ dependencies = [ "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "templates 0.1.0", - "tera 1.0.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.2 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] [[package]] name = "reqwest" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "encoding_rs 0.8.16 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.12.24 (registry+https://github.com/rust-lang/crates.io-index)", "hyper-tls 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libflate 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", + "libflate 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", "mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1969,17 +1966,18 @@ name = "sass-rs" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "sass-sys 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "sass-sys 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sass-sys" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2020,7 +2018,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "security-framework-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2031,7 +2029,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "MacTypes-sys 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2106,7 +2104,7 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arc-swap 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2129,9 +2127,9 @@ dependencies = [ "search 0.1.0", "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "templates 0.1.0", - "tera 1.0.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.2 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -2155,11 +2153,8 @@ dependencies = [ [[package]] name = "smallvec" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "socket2" @@ -2167,7 +2162,7 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2188,7 +2183,7 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "new_debug_unreachable 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "new_debug_unreachable 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", "precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2260,7 +2255,7 @@ name = "syntect" version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bincode 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bincode 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "flate2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2278,11 +2273,11 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.0.6" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2301,9 +2296,9 @@ dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "library 0.1.0", "pulldown-cmark 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "reqwest 0.9.9 (registry+https://github.com/rust-lang/crates.io-index)", + "reqwest 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.2 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", @@ -2321,11 +2316,11 @@ dependencies = [ [[package]] name = "tera" -version = "1.0.0-beta.1" +version = "1.0.0-beta.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "globwalk 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "globwalk 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "humansize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2352,7 +2347,7 @@ name = "termion" version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2389,7 +2384,7 @@ name = "time" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2409,7 +2404,7 @@ dependencies = [ "tokio-fs 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2488,7 +2483,7 @@ version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", "signal-hook 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2500,7 +2495,7 @@ dependencies = [ [[package]] name = "tokio-sync" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2569,7 +2564,7 @@ dependencies = [ "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2606,7 +2601,7 @@ dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "socket2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2629,7 +2624,7 @@ dependencies = [ "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "socket2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2653,7 +2648,7 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "resolv-conf 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "trust-dns-proto 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2751,7 +2746,7 @@ name = "unicode-normalization" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2769,14 +2764,6 @@ name = "unicode-xid" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "unreachable" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "url" version = "1.7.2" @@ -2804,8 +2791,8 @@ version = "0.1.0" dependencies = [ "errors 0.1.0", "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.2 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3056,7 +3043,7 @@ dependencies = [ "checksum actix-web 0.7.18 (registry+https://github.com/rust-lang/crates.io-index)" = "e9f33c941e5e69a58a6bfef33853228042ed3799fc4b5a4923a36a85776fb690" "checksum actix_derive 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4300e9431455322ae393d43a2ba1ef96b8080573c0fc23b196219efedfb6ba69" "checksum adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7e522997b529f05601e05166c07ed17789691f562762c7f3b987263d2dedee5c" -"checksum aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1e9a933f4e58658d7b12defcf96dc5c720f20832deebe3e0a19efd3b6aaeeb9e" +"checksum aho-corasick 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "81ce3d38065e618af2d7b77e10c5ad9a069859b4be3c2250f674af3840d9c8a5" "checksum ammonia 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9c8cd3dff93e4471fff384645c5625cb8e4349000d8a730b9685bdbb19cbacb4" "checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" "checksum arc-swap 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1025aeae2b664ca0ea726a89d574fe8f4e77dd712d443236ad1de00379450cf6" @@ -3064,11 +3051,11 @@ dependencies = [ "checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" "checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652" "checksum autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a6d640bee2da49f60a4068a7fae53acde8982514ab7bae8b8cea9e88cbcfd799" -"checksum backtrace 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "b5b493b66e03090ebc4343eb02f94ff944e0cbc9ac6571491d170ba026741eb5" +"checksum backtrace 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "cd5a90e2b463010cd0e0ce9a11d4a9d5d58d9f41d4a6ba3dcaf9e68b466e88b4" "checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" "checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" -"checksum bincode 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "58470ad6460f0b0e89b0df5f17b8bd77ebae26af69dca0bd9ddc8b9e38abb2ff" +"checksum bincode 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3efe0b4c8eaeed8600549c29f538a6a11bf422858d0ed435b1d70ec4ab101190" "checksum bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d" "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" "checksum block-buffer 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a076c298b9ecdb530ed9d967e74a6027d6a7478924520acddcddc24c1c8ab3ab" @@ -3102,7 +3089,7 @@ dependencies = [ "checksum deunicode 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "850878694b7933ca4c9569d30a34b55031b9b139ee1fc7b94a527c4ef960d690" "checksum digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "03b072242a8cbaf9c145665af9d250c59af3b958f83ed6824e13533cf76d5b90" "checksum dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6d301140eb411af13d3115f9a562c85cc6b541ade9dfa314132244aaee7489dd" -"checksum either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3be565ca5c557d7f59e7cfcf1844f9e3033650c929c6566f511e8005f205c1d0" +"checksum either 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c67353c641dc847124ea1902d69bd753dee9bb3beff9aa3662ecf86c971d1fac" "checksum elasticlunr-rs 2.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a99a310cd1f9770e7bf8e48810c7bcbb0e078c8fb23a8c7bcf0da4c2bf61a455" "checksum encoding 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "6b0d943856b990d12d3b55b359144ff341533e516d94098b1d3fc1ac666d36ec" "checksum encoding-index-japanese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "04e8b2ff42e9a05335dbf8b5c6f7567e5591d0d916ccef4e0b1710d32a0d0c91" @@ -3135,12 +3122,12 @@ dependencies = [ "checksum gif 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4bca55ac1f213920ce3527ccd62386f1f15fa3f1714aeee1cf93f2c416903f" "checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" "checksum globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4743617a7464bbda3c8aec8558ff2f9429047e025771037df561d383337ff865" -"checksum globwalk 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4be0267260c9bb4e278dfb2291de9518a595cb625cf6f5f385c4b7d8d1aa7112" +"checksum globwalk 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4c7ee1ce235d766a01b481e593804b9356768d1dbd68fc0c063d04b407bee71a" "checksum h2 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "ddb2b25a33e231484694267af28fec74ac63b5ccf51ee2065a5e313b834d836e" "checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" "checksum hostname 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "21ceb46a83a85e824ef93669c8b390009623863b5c195d1ba747292c0c72f94e" "checksum html5ever 0.22.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c213fa6a618dc1da552f54f85cba74b05d8e883c92ec4e89067736938084c26e" -"checksum http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "1a10e5b573b9a0146545010f50772b9e8b1dd0a256564cc4307694c68832a2f5" +"checksum http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "fe67e3678f2827030e89cc4b9e7ecd16d52f132c0b940ab5005f88e821500f6a" "checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" "checksum humansize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6cab2627acfc432780848602f3f558f7e9dd427352224b0d9324025796d2a5e" "checksum humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca7e5f2e110db35f93b837c81797f3714500b81d517bf20c431b16d3ca4f114" @@ -3161,8 +3148,8 @@ dependencies = [ "checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" "checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1" "checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" -"checksum libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)" = "e962c7641008ac010fa60a7dfdc1712449f29c44ef2d4702394aea943ee75047" -"checksum libflate 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)" = "bff3ac7d6f23730d3b533c35ed75eef638167634476a499feef16c428d74b57b" +"checksum libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)" = "413f3dfc802c5dc91dc570b05125b6cda9855edfaa9825c9849807876376e70e" +"checksum libflate 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)" = "54d1ddf9c52870243c5689d7638d888331c1116aa5b398f3ba1acfa7d8758ca1" "checksum linked-hash-map 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7860ec297f7008ff7a1e3382d7f7e1dcd69efc94751a2284bafc3d013c2aa939" "checksum linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "70fb39025bc7cdd76305867c4eccf2f2dcf6e9a57f5b21a93e1c2d86cd03ec9e" "checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" @@ -3186,7 +3173,7 @@ dependencies = [ "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" "checksum native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ff8e08de0070bbf4c31f452ea2a70db092f36f6f2e4d897adf5674477d488fb2" "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" -"checksum new_debug_unreachable 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0cdc457076c78ab54d5e0d6fa7c47981757f1e34dc39ff92787f217dede586c4" +"checksum new_debug_unreachable 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fe2deb65e9f08f6540e6766481b9dc3a36e73d2fdb96e82bc3cd56353fafe90a" "checksum nix 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d37e713a259ff641624b6cb20e3b12b2952313ba36b6823c0f16e6cfd9e5de17" "checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" "checksum nom 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b30adc557058ce00c9d0d7cb3c6e0b5bc6f36e2e2eabe74b0ba726d194abd588" @@ -3199,9 +3186,9 @@ dependencies = [ "checksum num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a23f0ed30a54abaa0c7e83b1d2d87ada7c3c23078d1d87815af3e3b6385fbba" "checksum onig 4.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a646989adad8a19f49be2090374712931c3a59835cb5277b4530f48b417f26e7" "checksum onig_sys 69.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388410bf5fa341f10e58e6db3975f4bea1ac30247dd79d37a9e5ced3cb4cc3b0" -"checksum openssl 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)" = "ec7bd7ca4cce6dbdc77e7c1230682740d307d1218a87fb0349a571272be749f9" +"checksum openssl 0.10.18 (registry+https://github.com/rust-lang/crates.io-index)" = "b90119d71b0a3596588da04bf7c2c42f2978cfa1217a94119d8ec9e963c7729c" "checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" -"checksum openssl-sys 0.9.40 (registry+https://github.com/rust-lang/crates.io-index)" = "1bb974e77de925ef426b6bc82fce15fd45bdcbeb5728bffcfc7cdeeb7ce1c2d6" +"checksum openssl-sys 0.9.41 (registry+https://github.com/rust-lang/crates.io-index)" = "e4c77cdd67d31759b22aa72cfda3c65c12348f9e6c5420946b403c022fd0311a" "checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" "checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" "checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" @@ -3232,7 +3219,7 @@ dependencies = [ "checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" "checksum rand_jitter 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b9ea758282efe12823e0d952ddb269d2e1897227e464919a554f2a03ef1b832" "checksum rand_os 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b7c690732391ae0abafced5015ffb53656abfaec61b342290e5eb56b286a679d" -"checksum rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "086bd09a33c7044e56bb44d5bdde5a60e7f119a9e95b0775f545de759a32fe05" +"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" "checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" "checksum rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "373814f27745b2686b350dd261bfd24576a6fb0e2c5919b3a2b6005f820b0473" "checksum rayon-core 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b055d1e92aba6877574d8fe604a63c8b5df60f60e5982bf7ccbb1338ea527356" @@ -3242,7 +3229,7 @@ dependencies = [ "checksum regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "37e7cbbd370869ce2e8dff25c7018702d10b21a20ef7135316f8daecd6c25b7f" "checksum regex-syntax 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "8c2f35eedad5295fdf00a63d7d4b238135723f92b434ec06774dad15c7ab0861" "checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" -"checksum reqwest 0.9.9 (registry+https://github.com/rust-lang/crates.io-index)" = "09d6e187a58d923ee132fcda141c94e716bcfe301c2ea2bef5c81536e0085376" +"checksum reqwest 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)" = "f205a95638627fc0d21c53901671b06f439dc2830311ff11ecdff34ae2d839a8" "checksum resolv-conf 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b263b4aa1b5de9ffc0054a2386f96992058bb6870aab516f8cdeb8a667d56dcb" "checksum rust-stemmers 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05928c187b85b38f6b98db43057a24f0245163635a5ce6325a4f77a833d646aa" "checksum rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "adacaae16d02b6ec37fdc7acfcddf365978de76d1983d3ee22afc260e1ca9619" @@ -3252,7 +3239,7 @@ dependencies = [ "checksum safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8dca453248a96cb0749e36ccdfe2b0b4e54a61bfef89fb97ec621eb8e0a93dd9" "checksum same-file 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8f20c4be53a8a1ff4c1f1b2bd14570d2f634628709752f0702ecdd2b3f9a5267" "checksum sass-rs 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90f8cf6e645aa843ffffcbdc1e8752b1f221dfa314c81895aeb229a77aea7e05" -"checksum sass-sys 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "173ac202b4585ecfb1521159491175a787584fcc346457d53a099b240c69cd41" +"checksum sass-sys 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "f88301b9780e715f1ef96b16d33a4d7d917c61ec1caccf26215ebc4bebca58dd" "checksum schannel 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "0e1a231dc10abf6749cfa5d7767f25888d484201accbd919b66ab5413c502d56" "checksum scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" @@ -3271,7 +3258,7 @@ dependencies = [ "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" "checksum slotmap 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4ed041f7f2ff35f2bf7d688bf30686976512f8300e37433c2c73ea9f4cf14b" "checksum slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b3bc762e6a4b6c6fcaade73e77f9ebc6991b676f88bb2358bddb56560f073373" -"checksum smallvec 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)" = "88aea073965ab29f6edb5493faf96ad662fb18aa9eeb186a3b7057951605ed15" +"checksum smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c4488ae950c49d403731982257768f48fada354a5203fe81f9bb6f43ca9002be" "checksum socket2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "c4d11a52082057d87cb5caa31ad812f4504b97ab44732cd8359df2e9ff9f48e7" "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" "checksum string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b639411d0b9c738748b5397d5ceba08e648f4f1992231aa859af1a017f31f60b" @@ -3284,9 +3271,9 @@ dependencies = [ "checksum syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)" = "f92e629aa1d9c827b2bb8297046c1ccffc57c99b947a680d3ccff1f136a3bee9" "checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" "checksum syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e02dd9df97a68a2d005ace28ff24c610abfc3ce17afcfdb22a077645dabb599a" -"checksum tempfile 3.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "37daa55a7240c4931c84559f03b3cad7d19535840d1c4a0cc4e9b2fb0dcf70ff" +"checksum tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b86c784c88d98c801132806dadd3819ed29d8600836c4088e855cdf3e178ed8a" "checksum tendril 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "707feda9f2582d5d680d733e38755547a3e8fb471e7ba11452ecfd9ce93a5d3b" -"checksum tera 1.0.0-beta.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c8e39195166443c9ab187b0718c9351efddabfb2fa425ced513f8aa2d8c5a453" +"checksum tera 1.0.0-beta.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c027da6522d5abaca1e6633ac7a1085a86ca00f3a60178dbd9f0df6eef51e9a" "checksum termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4096add70612622289f2fdcdbd5086dc81c1e2675e6ae58d6c4f62a16c6d7f2f" "checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" "checksum textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "307686869c93e71f94da64286f9a9524c0f308a9e1c87a583de8e9c9039ad3f6" @@ -3301,7 +3288,7 @@ dependencies = [ "checksum tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b53aeb9d3f5ccf2ebb29e19788f96987fa1355f8fe45ea193928eaaaf3ae820f" "checksum tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "afbcdb0f0d2a1e4c440af82d7bbf0bf91a8a8c0575bcd20c05d15be7e9d3a02f" "checksum tokio-signal 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "dd6dc5276ea05ce379a16de90083ec80836440d5ef8a6a39545a3207373b8296" -"checksum tokio-sync 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3742b64166c1ee9121f1921aea5a726098458926a6b732d906ef23b1f3ef6f4f" +"checksum tokio-sync 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c73850a5ad497d73ccfcfc0ffb494a4502d93f35cb475cfeef4fcf2916d26040" "checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" "checksum tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c3fd86cb15547d02daa2b21aadaf4e37dee3368df38a526178a5afa3c034d2fb" "checksum tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "2910970404ba6fa78c5539126a9ae2045d62e3713041e447f695f41405a120c6" @@ -3329,7 +3316,6 @@ dependencies = [ "checksum unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "aa6024fc12ddfd1c6dbc14a80fa2324d4568849869b779f6bd37e5e4c03344d1" "checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" -"checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" "checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" "checksum utf-8 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)" = "05e42f7c18b8f902290b009cde6d651262f956c98bc51bca4cd1d511c9cd85c7" "checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737" From 3b61bf9b47809639c07dceb0c2bf229740bcb918 Mon Sep 17 00:00:00 2001 From: Marshall Bowers Date: Sat, 23 Feb 2019 14:06:22 -0500 Subject: [PATCH 50/74] Add maxdeviant.com to examples --- EXAMPLES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/EXAMPLES.md b/EXAMPLES.md index 65dacc9f..e83a9720 100644 --- a/EXAMPLES.md +++ b/EXAMPLES.md @@ -20,3 +20,4 @@ | [Jens Getreu's blog](https://blog.getreu.net) | | | [Matthias Endler](https://matthias-endler.de) | https://github.com/mre/mre.github.io | | [Hello, Rust!](https://hello-rust.show) | https://github.com/hello-rust/hello-rust.github.io | +| [maxdeviant.com](https://maxdeviant.com/) | | From 52cdffdfd45d5c1f9741eea2b33ba18aeba01adb Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Mon, 25 Feb 2019 18:11:16 +0100 Subject: [PATCH 51/74] Add PowerShell syntax Fix #613 --- .../content/syntax-highlighting.md | 1 + sublime_syntaxes/PowerShell.sublime-syntax | 466 ++++++++++++++++++ sublime_syntaxes/newlines.packdump | Bin 467306 -> 471422 bytes 3 files changed, 467 insertions(+) create mode 100644 sublime_syntaxes/PowerShell.sublime-syntax diff --git a/docs/content/documentation/content/syntax-highlighting.md b/docs/content/documentation/content/syntax-highlighting.md index bfb7f633..a824bf13 100644 --- a/docs/content/documentation/content/syntax-highlighting.md +++ b/docs/content/documentation/content/syntax-highlighting.md @@ -105,6 +105,7 @@ Here is a full list of the supported languages and the short names you can use: - Textile -> ["textile"] - XML -> ["xml", "xsd", "xslt", "tld", "dtml", "rss", "opml", "svg"] - YAML -> ["yaml", "yml", "sublime-syntax"] +- PowerShell -> ["ps1", "psm1", "psd1"] - SWI-Prolog -> ["pro"] - Reason -> ["re", "rei"] - CMake C Header -> ["h.in"] diff --git a/sublime_syntaxes/PowerShell.sublime-syntax b/sublime_syntaxes/PowerShell.sublime-syntax new file mode 100644 index 00000000..63488230 --- /dev/null +++ b/sublime_syntaxes/PowerShell.sublime-syntax @@ -0,0 +1,466 @@ +%YAML 1.2 +--- +# http://www.sublimetext.com/docs/3/syntax.html +name: PowerShell +file_extensions: + - ps1 + - psm1 + - psd1 +scope: source.powershell +contexts: + main: + - match: "<#" + captures: + 0: punctuation.definition.comment.block.begin.powershell + push: + - meta_scope: comment.block.powershell + - match: "#>" + captures: + 0: punctuation.definition.comment.block.end.powershell + pop: true + - include: commentEmbeddedDocs + - match: '[2-6]>&1|>>|>|<<|<|>|>\||[1-6]>|[1-6]>>' + scope: keyword.operator.redirection.powershell + - include: commands + - include: commentLine + - include: variable + - include: interpolatedStringContent + - include: function + - include: attribute + - include: UsingDirective + - include: type + - include: hashtable + - include: doubleQuotedString + - include: scriptblock + - include: doubleQuotedStringEscapes + - match: (?6-$d?jT{w&7YJ<(rrW1kR>^X0{ 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�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 z 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ΞdnB#3$!H;pmz! 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
Sh?s?mqZvrG3|G4G60lxlch-+C)^ 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

=^{j*c~*Y6c}s`n=f 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

Yr-EC%N~*ipQ*FjPozXIUQ!_ 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 Em+NJ?$9|{Tds(+cR?p(Qp)@tOqGIWV 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 eEsr;!@~Du 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 z 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

nCa>v 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

!h_l2{5|NS7$eNg1*wlt^v!9s@jXYumy4bhlq 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

h1y?%bt9IZ89Z{B|KGVX-`^-rrqZG5g4 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%0DkFFdc`d{ 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 Y%?r8h`6MFPKd*8*Yy8t#BJ5!~0K2P=v;Y7A delta 447942 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%0AKnE{`Z?+e}*UNN_2 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\me+4n)UnXy>IQg>b$u&$<-`Z zbS&51f;zg}0Yrr5kk_M3F%8{4OG3+`Xp zTo}$;#2?6iN$G(7bfp8qA1AyH-+t|=m7U$}$Nz3#*)cshST^Z|d${Af&COf>KMMKx zi^G0)$*1X`ue0C$Ww-nF7>2J!l++5eZT+9tc{HGuPUq8BP>G@9={{I#N(Lerw^SFA+R_bqTX2?5Et$%Lk1QV+hUmxe- zwhvzs{!2%{b${fN@LxLofA(t!-}bAozx!#)tZkrWuEwfb>y}K2Fw&2`&t3kfXHUtW ze2d)Fz_7~AD-ZQB{jc9Xm*M5q!&o1CrRf~E!EdTMl1K*e^(U6Cb? zy8=4GO^hUe8L^n0Ivu(BLj|MSnM=Zvs*=Z!UvYMwamrgNGJx80zcd%LBQXvn|r$!>jzLqzS*))%kU`CPcQ z*E3Q_M0A%^{qg(npKhA|uuE0>knUT%37cHLPCPYdU)H$;lQ%MiuJzlQbZV{Ns`cCN ztV7%3zngpOs<_9M8!uXm9I*`PUh>W~&;81Sby=?t?#@#*^^EU~pROA6luKe> z|C=+1T2Jmb=Gu~Wmigb(OW#iV9GSOHuYMlmnU6^c=R}#6Z=YB0H0{1QSDUGK!o4SM zd#@emdG`2lLY)nRsNv>4>A6WEmOLrul1={q?2F|i>i#rNdgLwB6|;A1x$-KL=Vj~j zJC{6}IeY(+HnF`&d{%O0Jq^!sTVy=b;Zq6$vlamzt`maGFLhZT4E8S-XO6Ixq^3<~bL>*aYb@k<|&8p5%AJ?8yc&vDC!;gw* zua?*4v3kGF*s#A;@nKiGk>TC9g=eSKm9wYsigB?HZJ+k?%Pmp&sd{U2U+T{|_xY;r zk+QH@bN!b^&-N$rl zUEB3`OV=!vvA^@GEZ@Is_rB|A1RL+X`K}VY>#;wd>4ynd54>#Zd;Kp@Ait9TIY)e} z?eeG%o*#QfH1|zWo4x9>gm-+(MYqi z)9F@=>$mLnyY}4LwqeJd>oeZz?>^@D^FpBFNx93dM!XmJ&Wq08oEhm}A;i!9i`__h z-;o~8E4C%yWp6LB30>CdS8jB-%huR?TVCSTNx}2CmHp9NayZNE;5oH}db@P*iwFe? zt(Gg@s=P{mNx9_R*lHfl5@mNT+tm8Tj6Br7^=oDIYPu*Z zvNX;8>Y3Yir3=4oJ=PI)qUNBOfZMV({>!iC|8AMip1em!GHpuxliI^)GKBuF;OQ)~ zy`t$PwDswgKf*3z$)3$uBzH}<7UOk${gIvP-_*QibC)K%9z804XYHJ>2KDKC(^(~> zf;TES7o8C)3j6b9ZFzms>qGv#zI`-UJjo$Lpt9_x+3b(GsjFJ~eOJ35QhI+er%t!K z=J30J2mA6T=5+;UEM4{4ihufLg()-FT|8#$8}~BUH^V;8QMQ`b zVH4^9XCUmY}mxh|9jsAJ(r*6xc=6S&$ISLnyluZ zZT_$E6cclC%3ir&-I)jP+r;nA`x>P?C$e?B@Gsk++f{9D zEM}b~db$3pro3lf&-#-}M)|AizZ`z1yT4eSWA~gzcX#c5mw&#fFY)m=Gt-;Crky=c zny01TyL2=o=)1_4Ur|fjjq=y74HL^>CdakcwzAWBRa3KsdF^YN2m5zAt`{x%wERox z)FoFhSZ~Nz`u_Eb*^R#!^riG)-ZpwF_%6xp!}e8->sNld{>zNHU(Dm~jcN70X-`w@ z<)!&zzto82zWEx(o}_k1aE@dQW6%EXm`jFo&HtutaVxiQwXFACc5{!{7UgSyEthS( zvNmKl=WE`H-|TDs&)2A@w^Ogb+*LGLTKCrMm*o2lCXc&4huB_bJ@K9DAbK-=Poc!<252p)ev5H%}R?d2J-zxUr z>Gr(Wtg|bvP0t@YuOdHj*4oVb&t~R*G0x|I+;h|6*R&|FYiAc~?t6SZqW3vR{F

Ytz6 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 E08Z}Ty#N3J From bf1fd1a0867c7440c31ad34908bd51838442c1ed Mon Sep 17 00:00:00 2001 From: Jordan Shurmer Date: Wed, 27 Feb 2019 08:54:09 -0500 Subject: [PATCH 52/74] Fix minor documentation quirks in templates/overview --- docs/content/documentation/templates/overview.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/content/documentation/templates/overview.md b/docs/content/documentation/templates/overview.md index 0ada7282..97ca289d 100644 --- a/docs/content/documentation/templates/overview.md +++ b/docs/content/documentation/templates/overview.md @@ -193,14 +193,14 @@ template: #### Remote content -Instead of using a file, you can load data from a remote URL. This can be done by specifying a `url` parameter to `load_data` rather than `file`. +Instead of using a file, you can load data from a remote URL. This can be done by specifying a `url` parameter to `load_data` rather than `path`. ```jinja2 {% set response = load_data(url="https://api.github.com/repos/getzola/zola") %} {{ response }} ``` -By default, the response body will be returned with no parsing. This can be changed by using the `format` argument as above. +By default, the response body will be returned with no parsing. This can be changed by using the `format` argument as below. ```jinja2 @@ -213,7 +213,7 @@ By default, the response body will be returned with no parsing. This can be chan Data file loading and remote requests are cached in memory during build, so multiple requests aren't made to the same endpoint. URLs are cached based on the URL, and data files are cached based on the files modified time. The format is also taken into account when caching, so a request will be sent twice if it's loaded with 2 different formats. ### `trans` -Gets the translation of the given `key`, for the `default_language` or the `language given +Gets the translation of the given `key`, for the `default_language` or the `lang`uage given ```jinja2 {{/* trans(key="title") */}} From 67ddabfa8b26984620935b1bf66c0a89b162d181 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Wed, 27 Feb 2019 17:59:09 +0100 Subject: [PATCH 53/74] Fix doc mentioning non-existent fields on sections --- docs/content/documentation/templates/pages-sections.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/content/documentation/templates/pages-sections.md b/docs/content/documentation/templates/pages-sections.md index c1402d4d..3a8440cc 100644 --- a/docs/content/documentation/templates/pages-sections.md +++ b/docs/content/documentation/templates/pages-sections.md @@ -70,8 +70,6 @@ with the following fields: content: String; title: String?; description: String?; -date: String?; -slug: String; path: String; // the path, split on '/' components: Array; From ea50b4ba904aa2f0a3b8fe04f02be597a417ed2a Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Fri, 8 Mar 2019 21:41:31 +0100 Subject: [PATCH 54/74] Update deps --- Cargo.lock | 751 ++++++++++++++++++++++++++--------------------------- 1 file changed, 372 insertions(+), 379 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f9a19bbb..b3c4c49b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5,7 +5,7 @@ name = "MacTypes-sys" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -15,20 +15,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "actix_derive 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-signal 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -43,18 +43,18 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "actix 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-current-thread 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "tower-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -71,7 +71,7 @@ dependencies = [ "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "cookie 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "encoding 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -81,7 +81,7 @@ dependencies = [ "http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", @@ -92,18 +92,18 @@ dependencies = [ "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-current-thread 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -118,7 +118,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.28 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -140,7 +140,7 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "html5ever 0.22.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "maplit 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tendril 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -178,7 +178,7 @@ name = "atty" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -195,8 +195,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -206,17 +206,8 @@ name = "backtrace-sys" version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "base64" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -234,7 +225,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -273,7 +264,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "bytes" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -282,12 +273,12 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.29" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "cfg-if" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -297,7 +288,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -335,10 +326,10 @@ dependencies = [ "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "errors 0.1.0", "globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", - "syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "syntect 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -358,7 +349,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -366,7 +357,7 @@ name = "core-foundation-sys" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -379,25 +370,10 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.1.2" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -420,7 +396,7 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.6.3" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -433,9 +409,9 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -447,19 +423,27 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "crossbeam-queue" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "crossbeam-utils" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -467,8 +451,8 @@ name = "crossbeam-utils" version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -477,7 +461,7 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "csv-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -534,12 +518,12 @@ name = "elasticlunr-rs" version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "rust-stemmers 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "strum 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "strum_macros 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -603,10 +587,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "encoding_rs" -version = "0.8.16" +version = "0.8.17" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -622,8 +606,8 @@ name = "errors" version = "0.1.0" dependencies = [ "image 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", - "syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-beta.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syntect 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.3 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -643,7 +627,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.28 (registry+https://github.com/rust-lang/crates.io-index)", "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -657,8 +641,8 @@ name = "filetime" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -667,8 +651,8 @@ name = "flate2" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crc32fast 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "miniz-sys 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "miniz_oxide_c_api 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -697,11 +681,11 @@ version = "0.1.0" dependencies = [ "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "errors 0.1.0", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-beta.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.3 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -718,7 +702,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "fsevent-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -726,7 +710,7 @@ name = "fsevent-sys" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -754,7 +738,7 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "mac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "new_debug_unreachable 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "new_debug_unreachable 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -810,7 +794,7 @@ dependencies = [ "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -828,7 +812,7 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", @@ -836,7 +820,7 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -852,7 +836,7 @@ name = "hostname" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "winutil 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -866,7 +850,7 @@ dependencies = [ "markup5ever 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.28 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -874,7 +858,7 @@ name = "http" version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -899,10 +883,10 @@ dependencies = [ [[package]] name = "hyper" -version = "0.12.24" +version = "0.12.25" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "h2 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", @@ -912,13 +896,14 @@ dependencies = [ "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -928,11 +913,11 @@ name = "hyper-tls" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.24 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.25 (registry+https://github.com/rust-lang/crates.io-index)", "native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -952,10 +937,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "same-file 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -986,10 +971,10 @@ version = "0.1.0" dependencies = [ "errors 0.1.0", "image 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-beta.2 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.3 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -1013,7 +998,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "inotify-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1021,7 +1006,7 @@ name = "inotify-sys" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1029,7 +1014,7 @@ name = "iovec" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1075,7 +1060,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "lazy_static" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1085,7 +1070,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "libc" -version = "0.2.49" +version = "0.2.50" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1095,7 +1080,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crc32fast 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1107,26 +1092,34 @@ dependencies = [ "errors 0.1.0", "front_matter 0.1.0", "globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "rendering 0.1.0", - "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", "slotmap 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-beta.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.3 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] +[[package]] +name = "line-wrap" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "link_checker" version = "0.1.0" dependencies = [ - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "reqwest 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "reqwest 0.9.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1153,7 +1146,7 @@ name = "log" version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1186,9 +1179,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", "phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "tendril 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1204,7 +1197,7 @@ name = "memchr" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1217,7 +1210,7 @@ name = "mime" version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1236,8 +1229,8 @@ name = "miniz-sys" version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1253,9 +1246,9 @@ name = "miniz_oxide_c_api" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)", "crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "miniz_oxide 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1269,7 +1262,7 @@ dependencies = [ "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1294,7 +1287,7 @@ version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1314,13 +1307,13 @@ name = "native-tls" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl 0.10.18 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl 0.10.19 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.41 (registry+https://github.com/rust-lang/crates.io-index)", - "schannel 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.42 (registry+https://github.com/rust-lang/crates.io-index)", + "schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "security-framework 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "security-framework-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1331,14 +1324,14 @@ name = "net2" version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "new_debug_unreachable" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1347,9 +1340,9 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1360,7 +1353,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "nom" -version = "4.2.0" +version = "4.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1369,7 +1362,7 @@ dependencies = [ [[package]] name = "notify" -version = "4.0.9" +version = "4.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1378,7 +1371,7 @@ dependencies = [ "fsevent-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1392,7 +1385,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.28 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1431,7 +1424,7 @@ name = "num_cpus" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1440,8 +1433,8 @@ version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "onig_sys 69.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1450,21 +1443,21 @@ name = "onig_sys" version = "69.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "openssl" -version = "0.10.18" +version = "0.10.19" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.41 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.42 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1474,12 +1467,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "openssl-sys" -version = "0.9.41" +version = "0.9.42" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1505,7 +1499,7 @@ name = "parking_lot_core" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1543,7 +1537,7 @@ dependencies = [ "pest_meta 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.28 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1598,14 +1592,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "plist" -version = "0.3.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", - "xml-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "line-wrap 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "xml-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1660,7 +1655,7 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1673,7 +1668,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1684,13 +1679,13 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_jitter 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_os 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1739,19 +1734,19 @@ name = "rand_jitter" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_os" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1790,8 +1785,8 @@ version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1830,7 +1825,7 @@ dependencies = [ [[package]] name = "regex" -version = "1.1.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "aho-corasick 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1863,45 +1858,45 @@ dependencies = [ "config 0.1.0", "errors 0.1.0", "front_matter 0.1.0", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "link_checker 0.1.0", "pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "pulldown-cmark 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syntect 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "templates 0.1.0", - "tera 1.0.0-beta.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.3 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] [[package]] name = "reqwest" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "encoding_rs 0.8.16 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.24 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.25 (registry+https://github.com/rust-lang/crates.io-index)", "hyper-tls 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "libflate 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", "mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", "native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1921,8 +1916,8 @@ name = "rust-stemmers" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1966,7 +1961,7 @@ name = "sass-rs" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "sass-sys 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1975,18 +1970,18 @@ name = "sass-sys" version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "schannel" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2007,7 +2002,7 @@ dependencies = [ "ammonia 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "elasticlunr-rs 2.3.4 (registry+https://github.com/rust-lang/crates.io-index)", "errors 0.1.0", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "library 0.1.0", ] @@ -2018,7 +2013,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "security-framework-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2029,7 +2024,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "MacTypes-sys 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2047,28 +2042,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde" -version = "1.0.88" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde_derive" -version = "1.0.88" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.28 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_json" -version = "1.0.38" +version = "1.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2078,7 +2073,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2100,11 +2095,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "signal-hook" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arc-swap 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2125,11 +2120,11 @@ dependencies = [ "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "sass-rs 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "search 0.1.0", - "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "templates 0.1.0", - "tera 1.0.0-beta.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.3 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -2161,8 +2156,8 @@ name = "socket2" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2182,11 +2177,11 @@ name = "string_cache" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "new_debug_unreachable 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "new_debug_unreachable 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", "precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2226,12 +2221,12 @@ dependencies = [ "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.28 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "syn" -version = "0.15.26" +version = "0.15.28" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2246,29 +2241,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.28 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "syntect" -version = "3.0.2" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bincode 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "flate2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "onig 4.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "plist 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "plist 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "regex-syntax 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "yaml-rust 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "yaml-rust 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2276,8 +2271,8 @@ name = "tempfile" version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2293,12 +2288,12 @@ dependencies = [ "csv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "errors 0.1.0", "imageproc 0.1.0", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "library 0.1.0", "pulldown-cmark 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "reqwest 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-beta.2 (registry+https://github.com/rust-lang/crates.io-index)", + "reqwest 0.9.11 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.3 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", @@ -2316,22 +2311,22 @@ dependencies = [ [[package]] name = "tera" -version = "1.0.0-beta.2" +version = "1.0.0-beta.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "globwalk 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "humansize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "unic-segment 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unic-segment 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "v_htmlescape 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "v_htmlescape 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2347,7 +2342,7 @@ name = "termion" version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2365,7 +2360,7 @@ name = "thread_local" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2384,29 +2379,29 @@ name = "time" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-current-thread 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-fs 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2417,14 +2412,14 @@ name = "tokio-codec" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-current-thread" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2442,39 +2437,40 @@ dependencies = [ [[package]] name = "tokio-fs" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-io" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-reactor" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2483,21 +2479,22 @@ version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "signal-hook 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "signal-hook 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-sync" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2506,22 +2503,21 @@ name = "tokio-tcp" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-threadpool" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2547,13 +2543,13 @@ name = "tokio-udp" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2561,16 +2557,16 @@ name = "tokio-uds" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2578,7 +2574,7 @@ name = "toml" version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2598,14 +2594,14 @@ dependencies = [ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "socket2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2621,14 +2617,14 @@ dependencies = [ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "socket2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2640,16 +2636,16 @@ name = "trust-dns-resolver" version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "ipconfig 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "resolv-conf 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "trust-dns-proto 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2675,46 +2671,46 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "unic-char-property" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "unic-char-range 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unic-char-range 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "unic-char-range" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "unic-common" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "unic-segment" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "unic-ucd-segment 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unic-ucd-segment 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "unic-ucd-segment" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "unic-char-property 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unic-char-range 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unic-ucd-version 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unic-char-property 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unic-char-range 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unic-ucd-version 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "unic-ucd-version" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "unic-common 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unic-common 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2727,7 +2723,7 @@ dependencies = [ [[package]] name = "unicase" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2790,9 +2786,9 @@ name = "utils" version = "0.1.0" dependencies = [ "errors 0.1.0", - "serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 1.0.0-beta.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 1.0.0-beta.3 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2817,10 +2813,10 @@ dependencies = [ [[package]] name = "v_escape" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "v_escape_derive 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "v_escape_derive 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2829,21 +2825,21 @@ name = "v_escape_derive" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "nom 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "nom 4.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.28 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "v_escape_derive" -version = "0.5.0" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "nom 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "nom 4.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.28 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2851,18 +2847,18 @@ name = "v_htmlescape" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "v_escape 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "v_htmlescape" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "v_escape 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "v_escape 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2978,7 +2974,7 @@ version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3000,15 +2996,12 @@ dependencies = [ [[package]] name = "xml-rs" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "yaml-rust" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3025,8 +3018,8 @@ dependencies = [ "ctrlc 3.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "errors 0.1.0", "front_matter 0.1.0", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "notify 4.0.9 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "notify 4.0.10 (registry+https://github.com/rust-lang/crates.io-index)", "rebuild 0.1.0", "site 0.1.0", "termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3054,7 +3047,6 @@ dependencies = [ "checksum backtrace 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "cd5a90e2b463010cd0e0ce9a11d4a9d5d58d9f41d4a6ba3dcaf9e68b466e88b4" "checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" -"checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" "checksum bincode 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3efe0b4c8eaeed8600549c29f538a6a11bf422858d0ed435b1d70ec4ab101190" "checksum bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d" "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" @@ -3062,9 +3054,9 @@ dependencies = [ "checksum build_const 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "39092a32794787acd8525ee150305ff051b0aa6cc2abaf193924f5ab05425f39" "checksum byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "560c32574a12a89ecd91f5e742165893f86e3ab98d21f8ea548658eb9eef5f40" "checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb" -"checksum bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "40ade3d27603c2cb345eb0912aec461a6dec7e06a4ae48589904e808335c7afa" -"checksum cc 1.0.29 (registry+https://github.com/rust-lang/crates.io-index)" = "4390a3b5f4f6bce9c1d0c00128379df433e53777fdd30e92f16a529332baec4e" -"checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4" +"checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" +"checksum cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)" = "d01c69d08ff207f231f07196e30f84c70f1c815b04f980f8b7b01ff01f05eb92" +"checksum cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "11d43355396e872eefb45ce6342e4374ed7bc2b3a502d1b28e36d6e23c05d1f4" "checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878" "checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e" "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" @@ -3073,13 +3065,13 @@ dependencies = [ "checksum core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "286e0b41c3a20da26536c6000a280585d519fd07b3956b43aed8a79e9edce980" "checksum core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "716c271e8613ace48344f723b60b900a93150271e5be206212d052bbc0883efa" "checksum crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d663548de7f5cca343f1e0a48d14dcfb0e9eb4e079ec58883b7251539fa10aeb" -"checksum crc32fast 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e91d5240c6975ef33aeb5f148f35275c25eda8e8a5f95abe421978b05b8bf192" -"checksum crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad4c7ea749d9fb09e23c5cb17e3b70650860553a0e2744e38446b1803bf7db94" +"checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" "checksum crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f0ed1a4de2235cabda8558ff5840bffb97fcb64c97827f354a451307df5f72b" "checksum crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f739f8c5363aca78cfb059edf753d8f0d36908c348f3d8d1503f03d8b75d9cf3" -"checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13" +"checksum crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71" "checksum crossbeam-epoch 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "927121f5407de9956180ff5e936fe3cf4324279280001cd56b669d28ee7e9150" "checksum crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "04c9e3102cc2d69cd681412141b390abd55a362afc1540965dad0ad4d34280b4" +"checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" "checksum crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2760899e32a1d58d5abb31129f8fae5de75220bc2176e77ff7c627ae45c918d9" "checksum crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c" "checksum csv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "9fd1c44c58078cfbeaf11fbb3eac9ae5534c23004ed770cc4bfb48e658ae4f04" @@ -3098,7 +3090,7 @@ dependencies = [ "checksum encoding-index-singlebyte 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3351d5acffb224af9ca265f435b859c7c01537c0849754d3db3fdf2bfe2ae84a" "checksum encoding-index-tradchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fd0e20d5688ce3cab59eb3ef3a2083a5c77bf496cb798dc6fcdb75f323890c18" "checksum encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569" -"checksum encoding_rs 0.8.16 (registry+https://github.com/rust-lang/crates.io-index)" = "0535f350c60aac0b87ccf28319abc749391e912192255b0c00a2c12c6917bd73" +"checksum encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)" = "4155785c79f2f6701f185eb2e6b4caf0555ec03477cb4c70db67b465311620ed" "checksum error-chain 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6930e04918388a9a2e41d518c25cf679ccafe26733fb4127dbf21993f2575d46" "checksum failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2" "checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1" @@ -3131,7 +3123,7 @@ dependencies = [ "checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" "checksum humansize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6cab2627acfc432780848602f3f558f7e9dd427352224b0d9324025796d2a5e" "checksum humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca7e5f2e110db35f93b837c81797f3714500b81d517bf20c431b16d3ca4f114" -"checksum hyper 0.12.24 (registry+https://github.com/rust-lang/crates.io-index)" = "fdfa9b401ef6c4229745bb6e9b2529192d07b920eed624cdee2a82348cd550af" +"checksum hyper 0.12.25 (registry+https://github.com/rust-lang/crates.io-index)" = "7d5b6658b016965ae301fa995306db965c93677880ea70765a84235a96eae896" "checksum hyper-tls 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "32cd73f14ad370d3b4d4b7dce08f69b81536c82e39fcc89731930fe5788cd661" "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" "checksum ignore 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ad03ca67dc12474ecd91fdb94d758cbd20cb4e7a78ebe831df26a9b7511e1162" @@ -3146,10 +3138,11 @@ dependencies = [ "checksum jpeg-decoder 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "c8b7d43206b34b3f94ea9445174bda196e772049b9bddbc620c9d29b2d20110d" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" -"checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1" +"checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" "checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" -"checksum libc 0.2.49 (registry+https://github.com/rust-lang/crates.io-index)" = "413f3dfc802c5dc91dc570b05125b6cda9855edfaa9825c9849807876376e70e" +"checksum libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)" = "aab692d7759f5cd8c859e169db98ae5b52c924add2af5fbbca11d12fefb567c1" "checksum libflate 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)" = "54d1ddf9c52870243c5689d7638d888331c1116aa5b398f3ba1acfa7d8758ca1" +"checksum line-wrap 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9" "checksum linked-hash-map 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7860ec297f7008ff7a1e3382d7f7e1dcd69efc94751a2284bafc3d013c2aa939" "checksum linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "70fb39025bc7cdd76305867c4eccf2f2dcf6e9a57f5b21a93e1c2d86cd03ec9e" "checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" @@ -3173,11 +3166,11 @@ dependencies = [ "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" "checksum native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ff8e08de0070bbf4c31f452ea2a70db092f36f6f2e4d897adf5674477d488fb2" "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" -"checksum new_debug_unreachable 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fe2deb65e9f08f6540e6766481b9dc3a36e73d2fdb96e82bc3cd56353fafe90a" +"checksum new_debug_unreachable 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f40f005c60db6e03bae699e414c58bf9aa7ea02a2d0b9bfbcf19286cc4c82b30" "checksum nix 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d37e713a259ff641624b6cb20e3b12b2952313ba36b6823c0f16e6cfd9e5de17" "checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" -"checksum nom 4.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b30adc557058ce00c9d0d7cb3c6e0b5bc6f36e2e2eabe74b0ba726d194abd588" -"checksum notify 4.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9cc7ed2bd4b7edad3ee93b659c38e53dabb619f7274e127a0fab054ad2bb998d" +"checksum nom 4.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "22293d25d3f33a8567cc8a1dc20f40c7eeb761ce83d0fcca059858580790cac3" +"checksum notify 4.0.10 (registry+https://github.com/rust-lang/crates.io-index)" = "abb1581693e44d8a0ec347ef12289625063f52a1dddc3f3c9befd5fc59e88943" "checksum num-derive 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d9fe8fcafd1b86a37ce8a1cfa15ae504817e0c8c2e7ad42767371461ac1d316d" "checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" "checksum num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "af3fdbbc3291a5464dc57b03860ec37ca6bf915ed6ee385e7c6c052c422b2124" @@ -3186,9 +3179,9 @@ dependencies = [ "checksum num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a23f0ed30a54abaa0c7e83b1d2d87ada7c3c23078d1d87815af3e3b6385fbba" "checksum onig 4.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a646989adad8a19f49be2090374712931c3a59835cb5277b4530f48b417f26e7" "checksum onig_sys 69.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388410bf5fa341f10e58e6db3975f4bea1ac30247dd79d37a9e5ced3cb4cc3b0" -"checksum openssl 0.10.18 (registry+https://github.com/rust-lang/crates.io-index)" = "b90119d71b0a3596588da04bf7c2c42f2978cfa1217a94119d8ec9e963c7729c" +"checksum openssl 0.10.19 (registry+https://github.com/rust-lang/crates.io-index)" = "84321fb9004c3bce5611188a644d6171f895fa2889d155927d528782edb21c5d" "checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" -"checksum openssl-sys 0.9.41 (registry+https://github.com/rust-lang/crates.io-index)" = "e4c77cdd67d31759b22aa72cfda3c65c12348f9e6c5420946b403c022fd0311a" +"checksum openssl-sys 0.9.42 (registry+https://github.com/rust-lang/crates.io-index)" = "cb534d752bf98cf363b473950659ac2546517f9c6be9723771614ab3f03bbc9e" "checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" "checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" "checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" @@ -3202,7 +3195,7 @@ dependencies = [ "checksum phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "09364cc93c159b8b06b1f4dd8a4398984503483891b0c26b867cf431fb132662" "checksum phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "234f71a15de2288bcb7e3b6515828d22af7ec8598ee6d24c3b526fa0a80b67a0" "checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" -"checksum plist 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0c7316832d9ac5da02786bdc89a3faf0ca07070212b388766e969078fd593edc" +"checksum plist 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f4739851c08dd9a62a78beff2edf1a438517268b2c563c42fc6d9d3139e42d2a" "checksum png 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9adebf7fb91ccf5eac9da1a8e00e83cb8ae882c3e8d8e4ad59da73cb8c82a2c9" "checksum precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" "checksum proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "4d317f9caece796be1980837fd5cb3dfec5613ebdb04ad0956deea83ce168915" @@ -3218,7 +3211,7 @@ dependencies = [ "checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" "checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" "checksum rand_jitter 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b9ea758282efe12823e0d952ddb269d2e1897227e464919a554f2a03ef1b832" -"checksum rand_os 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b7c690732391ae0abafced5015ffb53656abfaec61b342290e5eb56b286a679d" +"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" "checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" "checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" "checksum rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "373814f27745b2686b350dd261bfd24576a6fb0e2c5919b3a2b6005f820b0473" @@ -3226,10 +3219,10 @@ dependencies = [ "checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" "checksum redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)" = "423e376fffca3dfa06c9e9790a9ccd282fafb3cc6e6397d01dbf64f9bacc6b85" "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" -"checksum regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "37e7cbbd370869ce2e8dff25c7018702d10b21a20ef7135316f8daecd6c25b7f" +"checksum regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "53ee8cfdddb2e0291adfb9f13d31d3bbe0a03c9a402c01b1e24188d86c35b24f" "checksum regex-syntax 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "8c2f35eedad5295fdf00a63d7d4b238135723f92b434ec06774dad15c7ab0861" "checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" -"checksum reqwest 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)" = "f205a95638627fc0d21c53901671b06f439dc2830311ff11ecdff34ae2d839a8" +"checksum reqwest 0.9.11 (registry+https://github.com/rust-lang/crates.io-index)" = "e542d9f077c126af32536b6aacc75bb7325400eab8cd0743543be5d91660780d" "checksum resolv-conf 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b263b4aa1b5de9ffc0054a2386f96992058bb6870aab516f8cdeb8a667d56dcb" "checksum rust-stemmers 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05928c187b85b38f6b98db43057a24f0245163635a5ce6325a4f77a833d646aa" "checksum rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "adacaae16d02b6ec37fdc7acfcddf365978de76d1983d3ee22afc260e1ca9619" @@ -3240,20 +3233,20 @@ dependencies = [ "checksum same-file 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8f20c4be53a8a1ff4c1f1b2bd14570d2f634628709752f0702ecdd2b3f9a5267" "checksum sass-rs 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90f8cf6e645aa843ffffcbdc1e8752b1f221dfa314c81895aeb229a77aea7e05" "checksum sass-sys 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "f88301b9780e715f1ef96b16d33a4d7d917c61ec1caccf26215ebc4bebca58dd" -"checksum schannel 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "0e1a231dc10abf6749cfa5d7767f25888d484201accbd919b66ab5413c502d56" +"checksum schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "f2f6abf258d99c3c1c5c2131d99d064e94b7b3dd5f416483057f308fea253339" "checksum scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" "checksum security-framework 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bfab8dda0e7a327c696d893df9ffa19cadc4bd195797997f5223cf5831beaf05" "checksum security-framework-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3d6696852716b589dff9e886ff83778bb635150168e83afa8ac6b8a78cb82abc" "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -"checksum serde 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)" = "9f301d728f2b94c9a7691c90f07b0b4e8a4517181d9461be94c04bddeb4bd850" -"checksum serde_derive 1.0.88 (registry+https://github.com/rust-lang/crates.io-index)" = "beed18e6f5175aef3ba670e57c60ef3b1b74d250d962a26604bff4c80e970dd4" -"checksum serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)" = "27dce848e7467aa0e2fcaf0a413641499c0b745452aaca1194d24dedde9e13c9" +"checksum serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)" = "92514fb95f900c9b5126e32d020f5c6d40564c27a5ea6d1d7d9f157a96623560" +"checksum serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)" = "bb6eabf4b5914e88e24eea240bb7c9f9a2cbc1bbbe8d961d381975ec3c6b806c" +"checksum serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)" = "5a23aa71d4a4d43fdbfaac00eff68ba8a06a51759a89ac3304323e800c4dd40d" "checksum serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d48f9f99cd749a2de71d29da5f948de7f2764cc5a9d7f3c97e3514d4ee6eabf2" "checksum sha-1 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "51b9d1f3b5de8a167ab06834a7c883bd197f2191e1dda1a22d9ccfeedbf9aded" "checksum sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" -"checksum signal-hook 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1f272d1b7586bec132ed427f532dd418d8beca1ca7f2caf7df35569b1415a4b4" +"checksum signal-hook 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "97a47ae722318beceb0294e6f3d601205a1e6abaa4437d9d33e3a212233e3021" "checksum siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" "checksum slotmap 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4ed041f7f2ff35f2bf7d688bf30686976512f8300e37433c2c73ea9f4cf14b" @@ -3268,29 +3261,29 @@ dependencies = [ "checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" "checksum strum 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f6c3a2071519ab6a48f465808c4c1ffdd00dfc8e93111d02b4fc5abab177676e" "checksum strum_macros 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8baacebd7b7c9b864d83a6ba7a246232983e277b86fa5cdec77f565715a4b136" -"checksum syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)" = "f92e629aa1d9c827b2bb8297046c1ccffc57c99b947a680d3ccff1f136a3bee9" +"checksum syn 0.15.28 (registry+https://github.com/rust-lang/crates.io-index)" = "218aa5a01ab9805df6e9e48074c8d88f317cc9660b1ad6c3dabac2d627d185d6" "checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" -"checksum syntect 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e02dd9df97a68a2d005ace28ff24c610abfc3ce17afcfdb22a077645dabb599a" +"checksum syntect 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "72fed41b91655133c9819f68d0b9a194dcbf36aa46e80033b6e9ae169f58b211" "checksum tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b86c784c88d98c801132806dadd3819ed29d8600836c4088e855cdf3e178ed8a" "checksum tendril 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "707feda9f2582d5d680d733e38755547a3e8fb471e7ba11452ecfd9ce93a5d3b" -"checksum tera 1.0.0-beta.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c027da6522d5abaca1e6633ac7a1085a86ca00f3a60178dbd9f0df6eef51e9a" +"checksum tera 1.0.0-beta.3 (registry+https://github.com/rust-lang/crates.io-index)" = "dc35f9f4098f84b32579af1fd3d9c850d5c713ea2490c81e1f792a5fbb22e278" "checksum termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4096add70612622289f2fdcdbd5086dc81c1e2675e6ae58d6c4f62a16c6d7f2f" "checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" "checksum textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "307686869c93e71f94da64286f9a9524c0f308a9e1c87a583de8e9c9039ad3f6" "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" "checksum tiff 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1e4834f28a0330cb9f3f2c87d2649dca723cb33802e2bdcf18da32759fbec7ce" "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" -"checksum tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "e0500b88064f08bebddd0c0bed39e19f5c567a5f30975bee52b0c0d3e2eeb38c" +"checksum tokio 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "fcaabb3cec70485d0df6e9454fe514393ad1c4070dee8915f11041e95630b230" "checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" -"checksum tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "331c8acc267855ec06eb0c94618dcbbfea45bed2d20b77252940095273fb58f6" +"checksum tokio-current-thread 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c756b04680eea21902a46fca4e9f410a2332c04995af590e07ff262e2193a9a3" "checksum tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "30c6dbf2d1ad1de300b393910e8a3aa272b724a400b6531da03eed99e329fbf0" -"checksum tokio-fs 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0e9cbbc8a3698b7ab652340f46633364f9eaa928ddaaee79d8b8f356dd79a09d" -"checksum tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b53aeb9d3f5ccf2ebb29e19788f96987fa1355f8fe45ea193928eaaaf3ae820f" -"checksum tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "afbcdb0f0d2a1e4c440af82d7bbf0bf91a8a8c0575bcd20c05d15be7e9d3a02f" +"checksum tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "3fe6dc22b08d6993916647d108a1a7d15b9cd29c4f4496c62b92c45b5041b7af" +"checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926" +"checksum tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6af16bfac7e112bea8b0442542161bfc41cbfa4466b580bdda7d18cb88b911ce" "checksum tokio-signal 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "dd6dc5276ea05ce379a16de90083ec80836440d5ef8a6a39545a3207373b8296" -"checksum tokio-sync 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c73850a5ad497d73ccfcfc0ffb494a4502d93f35cb475cfeef4fcf2916d26040" +"checksum tokio-sync 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1bf2b9dac2a0509b5cfd1df5aa25eafacb616a42a491a13604d6bbeab4486363" "checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" -"checksum tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c3fd86cb15547d02daa2b21aadaf4e37dee3368df38a526178a5afa3c034d2fb" +"checksum tokio-threadpool 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "742e511f6ce2298aeb86fc9ea0d8df81c2388c6ebae3dc8a7316e8c9df0df801" "checksum tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "2910970404ba6fa78c5539126a9ae2045d62e3713041e447f695f41405a120c6" "checksum tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "66268575b80f4a4a710ef83d087fdfeeabdce9b74c797535fbac18a2cb906e92" "checksum tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "037ffc3ba0e12a0ab4aca92e5234e0dedeb48fddf6ccd260f1f150a36a9f2445" @@ -3303,14 +3296,14 @@ dependencies = [ "checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" "checksum ucd-trie 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "71a9c5b1fe77426cf144cc30e49e955270f5086e31a6441dfa8b32efc09b9d77" "checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86" -"checksum unic-char-property 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "70aaa0e0c676362a3a4945c9f69b095201b11fbe967c7fc0e414b9c8dba89b20" -"checksum unic-char-range 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7232ba52475caa78979e29fcfd596f502e035bca9f8b42ae0061b24f7960c282" -"checksum unic-common 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "927243420dad0c87b8aa487c84d28dc2d66088d5383c1c3f1c352043a4b33b2a" -"checksum unic-segment 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7bf6ab996840832e606c29f54e9b37c2ceb03c24af640b6022b09fdeb0067f7f" -"checksum unic-ucd-segment 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "54959cc93f681cae3d977532c42181a5f363cb95625bfcc71854486e8a5640ff" -"checksum unic-ucd-version 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7f6bfaa7ddcc6772ec63932876639daf4b1eeff7683e15c7f9247724d4a6c910" +"checksum unic-char-property 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +"checksum unic-char-range 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" +"checksum unic-common 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" +"checksum unic-segment 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e4ed5d26be57f84f176157270c112ef57b86debac9cd21daaabbe56db0f88f23" +"checksum unic-ucd-segment 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2079c122a62205b421f499da10f3ee0f7697f012f55b675e002483c73ea34700" +"checksum unic-ucd-version 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" "checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" -"checksum unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9d3218ea14b4edcaccfa0df0a64a3792a2c32cc706f1b336e48867f9d3147f90" +"checksum unicase 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "41d17211f887da8e4a70a45b9536f26fc5de166b81e2d5d80de4a17fd22553bd" "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" "checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426" "checksum unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "aa6024fc12ddfd1c6dbc14a80fa2324d4568849869b779f6bd37e5e4c03344d1" @@ -3321,11 +3314,11 @@ dependencies = [ "checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737" "checksum uuid 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0238db0c5b605dd1cf51de0f21766f97fba2645897024461d6a00c036819a768" "checksum v_escape 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c8b50688edb86f4c092a1a9fe8bda004b0faa3197100897653809e97e09a2814" -"checksum v_escape 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "973c504626bd18920d388344f98cdcafe77affd37f0a69ff946842d8ee1c7ef3" +"checksum v_escape 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8865501b78eef9193c1b45486acf18ba889e5662eba98854d6fc59d8ecf3542d" "checksum v_escape_derive 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7cd994c63b487fef7aad31e5394ec04b9e24de7b32ea5251c9fb499cd2cbf44c" -"checksum v_escape_derive 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4592e378ab72caf41ee682531446526c5e16bb1aaa4f7cd673da893ade308b79" +"checksum v_escape_derive 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "306896ff4b75998501263a1dc000456de442e21d68fe8c8bdf75c66a33a58e23" "checksum v_htmlescape 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "020cae817dc82693aa523f01087b291b1c7a9ac8cea5c12297963f21769fb27f" -"checksum v_htmlescape 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9bc3140d4809e7f14ea901910b1bc8e80ac0421978690205931c9d569b80d47a" +"checksum v_htmlescape 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7fbbe0fa88dd36f9c8cf61a218d4b953ba669de4d0785832f33cc72bd081e1be" "checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" "checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" @@ -3344,5 +3337,5 @@ dependencies = [ "checksum winutil 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7daf138b6b14196e3830a588acf1e86966c694d3e8fb026fb105b8b5dca07e6e" "checksum ws 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)" = "329d3e6dd450a9c5c73024e1047f0be7e24121a68484eb0b5368977bee3cf8c3" "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" -"checksum xml-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c1cb601d29fe2c2ac60a2b2e5e293994d87a1f6fa9687a31a15270f909be9c2" -"checksum yaml-rust 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "95acf0db5515d07da9965ec0e0ba6cc2d825e2caeb7303b66ca441729801254e" +"checksum xml-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "541b12c998c5b56aa2b4e6f18f03664eef9a4fd0a246a55594efae6cc2d964b5" +"checksum yaml-rust 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "65923dd1784f44da1d2c3dbbc5e822045628c590ba72123e1c73d3c230c4434d" From eccb1e9986475736381a0d0956cdfd8468f43ba0 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Fri, 8 Mar 2019 23:26:57 +0100 Subject: [PATCH 55/74] Strip base_path from page/section paths To ensure we will get the right `content` directory. Fix #629 --- components/library/src/content/file_info.rs | 70 ++++++++++------ components/library/src/content/page.rs | 89 +++++++++++++++------ components/library/src/content/section.rs | 46 ++++++++--- components/library/src/pagination/mod.rs | 3 +- components/library/src/sorting.rs | 5 +- components/rebuild/src/lib.rs | 4 +- components/site/src/lib.rs | 4 +- 7 files changed, 153 insertions(+), 68 deletions(-) diff --git a/components/library/src/content/file_info.rs b/components/library/src/content/file_info.rs index 94311b52..8d58ebea 100644 --- a/components/library/src/content/file_info.rs +++ b/components/library/src/content/file_info.rs @@ -52,11 +52,13 @@ pub struct FileInfo { } impl FileInfo { - pub fn new_page(path: &Path) -> FileInfo { + pub fn new_page(path: &Path, base_path: &PathBuf) -> FileInfo { let file_path = path.to_path_buf(); - let mut parent = file_path.parent().unwrap().to_path_buf(); + let mut parent = file_path.parent().expect("Get parent of page").to_path_buf(); let name = path.file_stem().unwrap().to_string_lossy().to_string(); - let mut components = find_content_components(&file_path); + let mut components = find_content_components( + &file_path.strip_prefix(base_path).expect("Strip base path prefix for page"), + ); let relative = if !components.is_empty() { format!("{}/{}.md", components.join("/"), name) } else { @@ -85,11 +87,13 @@ impl FileInfo { } } - pub fn new_section(path: &Path) -> FileInfo { + pub fn new_section(path: &Path, base_path: &PathBuf) -> FileInfo { let file_path = path.to_path_buf(); - let parent = path.parent().unwrap().to_path_buf(); + let parent = path.parent().expect("Get parent of section").to_path_buf(); let name = path.file_stem().unwrap().to_string_lossy().to_string(); - let components = find_content_components(path); + let components = find_content_components( + &file_path.strip_prefix(base_path).expect("Strip base path prefix for section"), + ); let relative = if !components.is_empty() { format!("{}/{}.md", components.join("/"), name) } else { @@ -158,7 +162,7 @@ impl Default for FileInfo { #[cfg(test)] mod tests { - use std::path::Path; + use std::path::{Path, PathBuf}; use config::{Config, Language}; @@ -170,11 +174,22 @@ mod tests { find_content_components("/home/vincent/code/site/content/posts/tutorials/python.md"); assert_eq!(res, ["posts".to_string(), "tutorials".to_string()]); } + #[test] fn can_find_components_in_page_with_assets() { - let file = FileInfo::new_page(&Path::new( - "/home/vincent/code/site/content/posts/tutorials/python/index.md", - )); + let file = FileInfo::new_page( + &Path::new("/home/vincent/code/site/content/posts/tutorials/python/index.md"), + &PathBuf::new(), + ); + assert_eq!(file.components, ["posts".to_string(), "tutorials".to_string()]); + } + + #[test] + fn doesnt_fail_with_multiple_content_directories() { + let file = FileInfo::new_page( + &Path::new("/home/vincent/code/content/site/content/posts/tutorials/python/index.md"), + &PathBuf::from("/home/vincent/code/content/site"), + ); assert_eq!(file.components, ["posts".to_string(), "tutorials".to_string()]); } @@ -182,9 +197,10 @@ mod tests { fn can_find_valid_language_in_page() { let mut config = Config::default(); config.languages.push(Language { code: String::from("fr"), rss: false }); - let mut file = FileInfo::new_page(&Path::new( - "/home/vincent/code/site/content/posts/tutorials/python.fr.md", - )); + let mut file = FileInfo::new_page( + &Path::new("/home/vincent/code/site/content/posts/tutorials/python.fr.md"), + &PathBuf::new(), + ); let res = file.find_language(&config); assert!(res.is_ok()); assert_eq!(res.unwrap(), "fr"); @@ -194,9 +210,10 @@ mod tests { fn can_find_valid_language_in_page_with_assets() { let mut config = Config::default(); config.languages.push(Language { code: String::from("fr"), rss: false }); - let mut file = FileInfo::new_page(&Path::new( - "/home/vincent/code/site/content/posts/tutorials/python/index.fr.md", - )); + let mut file = FileInfo::new_page( + &Path::new("/home/vincent/code/site/content/posts/tutorials/python/index.fr.md"), + &PathBuf::new(), + ); assert_eq!(file.components, ["posts".to_string(), "tutorials".to_string()]); let res = file.find_language(&config); assert!(res.is_ok()); @@ -206,9 +223,10 @@ mod tests { #[test] fn do_nothing_on_unknown_language_in_page_with_i18n_off() { let config = Config::default(); - let mut file = FileInfo::new_page(&Path::new( - "/home/vincent/code/site/content/posts/tutorials/python.fr.md", - )); + let mut file = FileInfo::new_page( + &Path::new("/home/vincent/code/site/content/posts/tutorials/python.fr.md"), + &PathBuf::new(), + ); let res = file.find_language(&config); assert!(res.is_ok()); assert_eq!(res.unwrap(), config.default_language); @@ -218,9 +236,10 @@ mod tests { fn errors_on_unknown_language_in_page_with_i18n_on() { let mut config = Config::default(); config.languages.push(Language { code: String::from("it"), rss: false }); - let mut file = FileInfo::new_page(&Path::new( - "/home/vincent/code/site/content/posts/tutorials/python.fr.md", - )); + let mut file = FileInfo::new_page( + &Path::new("/home/vincent/code/site/content/posts/tutorials/python.fr.md"), + &PathBuf::new(), + ); let res = file.find_language(&config); assert!(res.is_err()); } @@ -229,9 +248,10 @@ mod tests { fn can_find_valid_language_in_section() { let mut config = Config::default(); config.languages.push(Language { code: String::from("fr"), rss: false }); - let mut file = FileInfo::new_section(&Path::new( - "/home/vincent/code/site/content/posts/tutorials/_index.fr.md", - )); + let mut file = FileInfo::new_section( + &Path::new("/home/vincent/code/site/content/posts/tutorials/_index.fr.md"), + &PathBuf::new(), + ); let res = file.find_language(&config); assert!(res.is_ok()); assert_eq!(res.unwrap(), "fr"); diff --git a/components/library/src/content/page.rs b/components/library/src/content/page.rs index 8383e5bc..679764d6 100644 --- a/components/library/src/content/page.rs +++ b/components/library/src/content/page.rs @@ -79,11 +79,11 @@ pub struct Page { } impl Page { - pub fn new>(file_path: P, meta: PageFrontMatter) -> Page { + pub fn new>(file_path: P, meta: PageFrontMatter, base_path: &PathBuf) -> Page { let file_path = file_path.as_ref(); Page { - file: FileInfo::new_page(file_path), + file: FileInfo::new_page(file_path, base_path), meta, ancestors: vec![], raw_content: "".to_string(), @@ -114,9 +114,14 @@ impl Page { /// Parse a page given the content of the .md file /// Files without front matter or with invalid front matter are considered /// erroneous - pub fn parse(file_path: &Path, content: &str, config: &Config) -> Result { + pub fn parse( + file_path: &Path, + content: &str, + config: &Config, + base_path: &PathBuf, + ) -> Result { let (meta, content) = split_page_content(file_path, content)?; - let mut page = Page::new(file_path, meta); + let mut page = Page::new(file_path, meta, base_path); page.lang = page.file.find_language(config)?; @@ -196,10 +201,14 @@ impl Page { } /// Read and parse a .md file into a Page struct - pub fn from_file>(path: P, config: &Config) -> Result { + pub fn from_file>( + path: P, + config: &Config, + base_path: &PathBuf, + ) -> Result { let path = path.as_ref(); let content = read_file(path)?; - let mut page = Page::parse(path, &content, config)?; + let mut page = Page::parse(path, &content, config, base_path)?; if page.file.name == "index" { let parent_dir = path.parent().unwrap(); @@ -329,7 +338,7 @@ mod tests { use std::collections::HashMap; use std::fs::{create_dir, File}; use std::io::Write; - use std::path::Path; + use std::path::{Path, PathBuf}; use globset::{Glob, GlobSetBuilder}; use tempfile::tempdir; @@ -348,7 +357,7 @@ description = "hey there" slug = "hello-world" +++ Hello world"#; - let res = Page::parse(Path::new("post.md"), content, &Config::default()); + let res = Page::parse(Path::new("post.md"), content, &Config::default(), &PathBuf::new()); assert!(res.is_ok()); let mut page = res.unwrap(); page.render_markdown( @@ -374,7 +383,8 @@ Hello world"#; Hello world"#; let mut conf = Config::default(); conf.base_url = "http://hello.com/".to_string(); - let res = Page::parse(Path::new("content/posts/intro/start.md"), content, &conf); + let res = + Page::parse(Path::new("content/posts/intro/start.md"), content, &conf, &PathBuf::new()); assert!(res.is_ok()); let page = res.unwrap(); assert_eq!(page.path, "posts/intro/hello-world/"); @@ -390,7 +400,7 @@ Hello world"#; +++ Hello world"#; let config = Config::default(); - let res = Page::parse(Path::new("start.md"), content, &config); + let res = Page::parse(Path::new("start.md"), content, &config, &PathBuf::new()); assert!(res.is_ok()); let page = res.unwrap(); assert_eq!(page.path, "hello-world/"); @@ -406,7 +416,12 @@ Hello world"#; +++ Hello world"#; let config = Config::default(); - let res = Page::parse(Path::new("content/posts/intro/start.md"), content, &config); + let res = Page::parse( + Path::new("content/posts/intro/start.md"), + content, + &config, + &PathBuf::new(), + ); assert!(res.is_ok()); let page = res.unwrap(); assert_eq!(page.path, "hello-world/"); @@ -422,7 +437,12 @@ Hello world"#; +++ Hello world"#; let config = Config::default(); - let res = Page::parse(Path::new("content/posts/intro/start.md"), content, &config); + let res = Page::parse( + Path::new("content/posts/intro/start.md"), + content, + &config, + &PathBuf::new(), + ); assert!(res.is_ok()); let page = res.unwrap(); assert_eq!(page.path, "hello-world/"); @@ -438,14 +458,15 @@ Hello world"#; slug = "hello-world" +++ Hello world"#; - let res = Page::parse(Path::new("start.md"), content, &Config::default()); + let res = Page::parse(Path::new("start.md"), content, &Config::default(), &PathBuf::new()); assert!(res.is_err()); } #[test] fn can_make_slug_from_non_slug_filename() { let config = Config::default(); - let res = Page::parse(Path::new(" file with space.md"), "+++\n+++", &config); + let res = + Page::parse(Path::new(" file with space.md"), "+++\n+++", &config, &PathBuf::new()); assert!(res.is_ok()); let page = res.unwrap(); assert_eq!(page.slug, "file-with-space"); @@ -461,7 +482,7 @@ Hello world"#; Hello world "# .to_string(); - let res = Page::parse(Path::new("hello.md"), &content, &config); + let res = Page::parse(Path::new("hello.md"), &content, &config, &PathBuf::new()); assert!(res.is_ok()); let mut page = res.unwrap(); page.render_markdown(&HashMap::default(), &Tera::default(), &config, InsertAnchor::None) @@ -483,7 +504,11 @@ Hello world File::create(nested_path.join("graph.jpg")).unwrap(); File::create(nested_path.join("fail.png")).unwrap(); - let res = Page::from_file(nested_path.join("index.md").as_path(), &Config::default()); + let res = Page::from_file( + nested_path.join("index.md").as_path(), + &Config::default(), + &PathBuf::new(), + ); assert!(res.is_ok()); let page = res.unwrap(); assert_eq!(page.file.parent, path.join("content").join("posts")); @@ -506,7 +531,11 @@ Hello world File::create(nested_path.join("graph.jpg")).unwrap(); File::create(nested_path.join("fail.png")).unwrap(); - let res = Page::from_file(nested_path.join("index.md").as_path(), &Config::default()); + let res = Page::from_file( + nested_path.join("index.md").as_path(), + &Config::default(), + &PathBuf::new(), + ); assert!(res.is_ok()); let page = res.unwrap(); assert_eq!(page.file.parent, path.join("content").join("posts")); @@ -530,7 +559,11 @@ Hello world File::create(nested_path.join("graph.jpg")).unwrap(); File::create(nested_path.join("fail.png")).unwrap(); - let res = Page::from_file(nested_path.join("index.md").as_path(), &Config::default()); + let res = Page::from_file( + nested_path.join("index.md").as_path(), + &Config::default(), + &PathBuf::new(), + ); assert!(res.is_ok()); let page = res.unwrap(); assert_eq!(page.file.parent, path.join("content").join("posts")); @@ -559,7 +592,7 @@ Hello world let mut config = Config::default(); config.ignored_content_globset = Some(gsb.build().unwrap()); - let res = Page::from_file(nested_path.join("index.md").as_path(), &config); + let res = Page::from_file(nested_path.join("index.md").as_path(), &config, &PathBuf::new()); assert!(res.is_ok()); let page = res.unwrap(); @@ -576,7 +609,7 @@ Hello world Hello world "# .to_string(); - let res = Page::parse(Path::new("2018-10-08_hello.md"), &content, &config); + let res = Page::parse(Path::new("2018-10-08_hello.md"), &content, &config, &PathBuf::new()); assert!(res.is_ok()); let page = res.unwrap(); @@ -593,7 +626,12 @@ Hello world Hello world "# .to_string(); - let res = Page::parse(Path::new("2018-10-02T15:00:00Z-hello.md"), &content, &config); + let res = Page::parse( + Path::new("2018-10-02T15:00:00Z-hello.md"), + &content, + &config, + &PathBuf::new(), + ); assert!(res.is_ok()); let page = res.unwrap(); @@ -611,7 +649,7 @@ date = 2018-09-09 Hello world "# .to_string(); - let res = Page::parse(Path::new("2018-10-08_hello.md"), &content, &config); + let res = Page::parse(Path::new("2018-10-08_hello.md"), &content, &config, &PathBuf::new()); assert!(res.is_ok()); let page = res.unwrap(); @@ -628,7 +666,7 @@ Hello world +++ Bonjour le monde"# .to_string(); - let res = Page::parse(Path::new("hello.fr.md"), &content, &config); + let res = Page::parse(Path::new("hello.fr.md"), &content, &config, &PathBuf::new()); assert!(res.is_ok()); let page = res.unwrap(); assert_eq!(page.lang, "fr".to_string()); @@ -645,7 +683,8 @@ Bonjour le monde"# +++ Bonjour le monde"# .to_string(); - let res = Page::parse(Path::new("2018-10-08_hello.fr.md"), &content, &config); + let res = + Page::parse(Path::new("2018-10-08_hello.fr.md"), &content, &config, &PathBuf::new()); assert!(res.is_ok()); let page = res.unwrap(); assert_eq!(page.meta.date, Some("2018-10-08".to_string())); @@ -664,7 +703,7 @@ path = "bonjour" +++ Bonjour le monde"# .to_string(); - let res = Page::parse(Path::new("hello.fr.md"), &content, &config); + let res = Page::parse(Path::new("hello.fr.md"), &content, &config, &PathBuf::new()); assert!(res.is_ok()); let page = res.unwrap(); assert_eq!(page.lang, "fr".to_string()); diff --git a/components/library/src/content/section.rs b/components/library/src/content/section.rs index 84166e80..ebc9ca1a 100644 --- a/components/library/src/content/section.rs +++ b/components/library/src/content/section.rs @@ -59,11 +59,15 @@ pub struct Section { } impl Section { - pub fn new>(file_path: P, meta: SectionFrontMatter) -> Section { + pub fn new>( + file_path: P, + meta: SectionFrontMatter, + base_path: &PathBuf, + ) -> Section { let file_path = file_path.as_ref(); Section { - file: FileInfo::new_section(file_path), + file: FileInfo::new_section(file_path, base_path), meta, ancestors: vec![], path: "".to_string(), @@ -84,9 +88,14 @@ impl Section { } } - pub fn parse(file_path: &Path, content: &str, config: &Config) -> Result
{ + pub fn parse( + file_path: &Path, + content: &str, + config: &Config, + base_path: &PathBuf, + ) -> Result
{ let (meta, content) = split_section_content(file_path, content)?; - let mut section = Section::new(file_path, meta); + let mut section = Section::new(file_path, meta, base_path); section.lang = section.file.find_language(config)?; section.raw_content = content; let (word_count, reading_time) = get_reading_analytics(§ion.raw_content); @@ -109,10 +118,14 @@ impl Section { } /// Read and parse a .md file into a Page struct - pub fn from_file>(path: P, config: &Config) -> Result
{ + pub fn from_file>( + path: P, + config: &Config, + base_path: &PathBuf, + ) -> Result
{ let path = path.as_ref(); let content = read_file(path)?; - let mut section = Section::parse(path, &content, config)?; + let mut section = Section::parse(path, &content, config, base_path)?; let parent_dir = path.parent().unwrap(); let assets = find_related_assets(parent_dir); @@ -250,7 +263,7 @@ impl Default for Section { mod tests { use std::fs::{create_dir, File}; use std::io::Write; - use std::path::Path; + use std::path::{Path, PathBuf}; use globset::{Glob, GlobSetBuilder}; use tempfile::tempdir; @@ -272,7 +285,11 @@ mod tests { File::create(nested_path.join("graph.jpg")).unwrap(); File::create(nested_path.join("fail.png")).unwrap(); - let res = Section::from_file(nested_path.join("_index.md").as_path(), &Config::default()); + let res = Section::from_file( + nested_path.join("_index.md").as_path(), + &Config::default(), + &PathBuf::new(), + ); assert!(res.is_ok()); let section = res.unwrap(); assert_eq!(section.assets.len(), 3); @@ -298,7 +315,8 @@ mod tests { let mut config = Config::default(); config.ignored_content_globset = Some(gsb.build().unwrap()); - let res = Section::from_file(nested_path.join("_index.md").as_path(), &config); + let res = + Section::from_file(nested_path.join("_index.md").as_path(), &config, &PathBuf::new()); assert!(res.is_ok()); let page = res.unwrap(); @@ -315,7 +333,12 @@ mod tests { +++ Bonjour le monde"# .to_string(); - let res = Section::parse(Path::new("content/hello/nested/_index.fr.md"), &content, &config); + let res = Section::parse( + Path::new("content/hello/nested/_index.fr.md"), + &content, + &config, + &PathBuf::new(), + ); assert!(res.is_ok()); let section = res.unwrap(); assert_eq!(section.lang, "fr".to_string()); @@ -332,7 +355,8 @@ Bonjour le monde"# +++ Bonjour le monde"# .to_string(); - let res = Section::parse(Path::new("content/_index.fr.md"), &content, &config); + let res = + Section::parse(Path::new("content/_index.fr.md"), &content, &config, &PathBuf::new()); assert!(res.is_ok()); let section = res.unwrap(); assert_eq!(section.lang, "fr".to_string()); diff --git a/components/library/src/pagination/mod.rs b/components/library/src/pagination/mod.rs index fd7f57fd..2fc92035 100644 --- a/components/library/src/pagination/mod.rs +++ b/components/library/src/pagination/mod.rs @@ -228,6 +228,7 @@ impl<'a> Paginator<'a> { #[cfg(test)] mod tests { + use std::path::PathBuf; use tera::to_value; use config::Taxonomy as TaxonomyConfig; @@ -242,7 +243,7 @@ mod tests { let mut f = SectionFrontMatter::default(); f.paginate_by = Some(2); f.paginate_path = "page".to_string(); - let mut s = Section::new("content/_index.md", f); + let mut s = Section::new("content/_index.md", f, &PathBuf::new()); if !is_index { s.path = "posts/".to_string(); s.permalink = "https://vincent.is/posts/".to_string(); diff --git a/components/library/src/sorting.rs b/components/library/src/sorting.rs index 20844d83..c6cfd671 100644 --- a/components/library/src/sorting.rs +++ b/components/library/src/sorting.rs @@ -113,6 +113,7 @@ pub fn find_siblings(sorted: Vec<(&Key, bool)>) -> Vec<(Key, Option, Option #[cfg(test)] mod tests { use slotmap::DenseSlotMap; + use std::path::PathBuf; use super::{find_siblings, sort_pages_by_date, sort_pages_by_weight}; use content::Page; @@ -122,13 +123,13 @@ mod tests { let mut front_matter = PageFrontMatter::default(); front_matter.date = Some(date.to_string()); front_matter.date_to_datetime(); - Page::new("content/hello.md", front_matter) + Page::new("content/hello.md", front_matter, &PathBuf::new()) } fn create_page_with_weight(weight: usize) -> Page { let mut front_matter = PageFrontMatter::default(); front_matter.weight = Some(weight); - Page::new("content/hello.md", front_matter) + Page::new("content/hello.md", front_matter, &PathBuf::new()) } #[test] diff --git a/components/rebuild/src/lib.rs b/components/rebuild/src/lib.rs index a93ef7f8..32f8e585 100644 --- a/components/rebuild/src/lib.rs +++ b/components/rebuild/src/lib.rs @@ -131,7 +131,7 @@ fn delete_element(site: &mut Site, path: &Path, is_section: bool) -> Result<()> /// Handles a `_index.md` (a section) being edited in some ways fn handle_section_editing(site: &mut Site, path: &Path) -> Result<()> { - let section = Section::from_file(path, &site.config)?; + let section = Section::from_file(path, &site.config, &site.base_path)?; let pathbuf = path.to_path_buf(); match site.add_section(section, true)? { // Updating a section @@ -193,7 +193,7 @@ macro_rules! render_parent_sections { /// Handles a page being edited in some ways fn handle_page_editing(site: &mut Site, path: &Path) -> Result<()> { - let page = Page::from_file(path, &site.config)?; + let page = Page::from_file(path, &site.config, &site.base_path)?; let pathbuf = path.to_path_buf(); match site.add_page(page, true)? { // Updating a page diff --git a/components/site/src/lib.rs b/components/site/src/lib.rs index 643a10df..634664db 100644 --- a/components/site/src/lib.rs +++ b/components/site/src/lib.rs @@ -210,7 +210,7 @@ impl Site { .into_par_iter() .map(|entry| { let path = entry.as_path(); - Section::from_file(path, config) + Section::from_file(path, config, &self.base_path) }) .collect::>() }; @@ -222,7 +222,7 @@ impl Site { .into_par_iter() .map(|entry| { let path = entry.as_path(); - Page::from_file(path, config) + Page::from_file(path, config, &self.base_path) }) .collect::>() }; From 135dc5d5bc845b624a057af211a8b9cf5906ae8b Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Mon, 11 Mar 2019 20:21:13 +0100 Subject: [PATCH 56/74] Change default directory for load_data --- CHANGELOG.md | 1 + components/site/src/lib.rs | 2 +- .../templates/src/global_fns/load_data.rs | 21 +++++++------------ 3 files changed, 10 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index becfe36f..0e700a2d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ a section - The table of content for a page/section is now only available as the `toc` variable when rendering it and not anymore on the `page`/`section` variable +- Default directory for `load_data` is now the root of the site instead of the `content` directory ### Other - Add support for content in multiple languages diff --git a/components/site/src/lib.rs b/components/site/src/lib.rs index 634664db..60d9afca 100644 --- a/components/site/src/lib.rs +++ b/components/site/src/lib.rs @@ -349,7 +349,7 @@ impl Site { ); self.tera.register_function( "load_data", - global_fns::LoadData::new(self.content_path.clone(), self.base_path.clone()), + global_fns::LoadData::new(self.base_path.clone()), ); self.tera.register_function("trans", global_fns::Trans::new(self.config.clone())); self.tera.register_function( diff --git a/components/templates/src/global_fns/load_data.rs b/components/templates/src/global_fns/load_data.rs index 48b71763..5bc506fd 100644 --- a/components/templates/src/global_fns/load_data.rs +++ b/components/templates/src/global_fns/load_data.rs @@ -174,22 +174,21 @@ fn get_output_format_from_args( /// Currently the supported formats are json, toml, csv and plain text #[derive(Debug)] pub struct LoadData { - content_path: PathBuf, base_path: PathBuf, client: Arc>, result_cache: Arc>>, } impl LoadData { - pub fn new(content_path: PathBuf, base_path: PathBuf) -> Self { + pub fn new(base_path: PathBuf) -> Self { let client = Arc::new(Mutex::new(Client::builder().build().expect("reqwest client build"))); let result_cache = Arc::new(Mutex::new(HashMap::new())); - Self { content_path, base_path, client, result_cache } + Self { base_path, client, result_cache } } } impl TeraFn for LoadData { fn call(&self, args: &HashMap) -> Result { - let data_source = get_data_source_from_args(&self.content_path, &args)?; + let data_source = get_data_source_from_args(&self.base_path, &args)?; let file_format = get_output_format_from_args(&args, &data_source)?; let cache_key = data_source.get_cache_key(&file_format); @@ -334,7 +333,7 @@ mod tests { #[test] fn fails_when_missing_file() { let static_fn = - LoadData::new(PathBuf::from("../utils/test-files"), PathBuf::from("../utils")); + LoadData::new(PathBuf::from("../utils")); let mut args = HashMap::new(); args.insert("path".to_string(), to_value("../../../READMEE.md").unwrap()); let result = static_fn.call(&args); @@ -345,9 +344,9 @@ mod tests { #[test] fn cant_load_outside_content_dir() { let static_fn = - LoadData::new(PathBuf::from("../utils/test-files"), PathBuf::from("../utils")); + LoadData::new(PathBuf::from(PathBuf::from("../utils"))); let mut args = HashMap::new(); - args.insert("path".to_string(), to_value("../../../README.md").unwrap()); + args.insert("path".to_string(), to_value("../../README.md").unwrap()); args.insert("format".to_string(), to_value("plain").unwrap()); let result = static_fn.call(&args); assert!(result.is_err()); @@ -395,7 +394,7 @@ mod tests { #[test] fn can_load_remote_data() { - let static_fn = LoadData::new(PathBuf::new(), PathBuf::new()); + let static_fn = LoadData::new(PathBuf::new()); let mut args = HashMap::new(); args.insert("url".to_string(), to_value("https://httpbin.org/json").unwrap()); args.insert("format".to_string(), to_value("json").unwrap()); @@ -408,7 +407,7 @@ mod tests { #[test] fn fails_when_request_404s() { - let static_fn = LoadData::new(PathBuf::new(), PathBuf::new()); + let static_fn = LoadData::new(PathBuf::new()); let mut args = HashMap::new(); args.insert("url".to_string(), to_value("https://httpbin.org/status/404/").unwrap()); args.insert("format".to_string(), to_value("json").unwrap()); @@ -424,7 +423,6 @@ mod tests { fn can_load_toml() { let static_fn = LoadData::new( PathBuf::from("../utils/test-files"), - PathBuf::from("../utils/test-files"), ); let mut args = HashMap::new(); args.insert("path".to_string(), to_value("test.toml").unwrap()); @@ -446,7 +444,6 @@ mod tests { fn can_load_csv() { let static_fn = LoadData::new( PathBuf::from("../utils/test-files"), - PathBuf::from("../utils/test-files"), ); let mut args = HashMap::new(); args.insert("path".to_string(), to_value("test.csv").unwrap()); @@ -469,7 +466,6 @@ mod tests { fn bad_csv_should_result_in_error() { let static_fn = LoadData::new( PathBuf::from("../utils/test-files"), - PathBuf::from("../utils/test-files"), ); let mut args = HashMap::new(); args.insert("path".to_string(), to_value("uneven_rows.csv").unwrap()); @@ -492,7 +488,6 @@ mod tests { fn can_load_json() { let static_fn = LoadData::new( PathBuf::from("../utils/test-files"), - PathBuf::from("../utils/test-files"), ); let mut args = HashMap::new(); args.insert("path".to_string(), to_value("test.json").unwrap()); From 3b8a95eb8ff54f435b82f996cb113cbd84bc5318 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Mon, 11 Mar 2019 20:25:28 +0100 Subject: [PATCH 57/74] Generate assets before rendering templates --- components/site/src/lib.rs | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/components/site/src/lib.rs b/components/site/src/lib.rs index 60d9afca..1d3c27e6 100644 --- a/components/site/src/lib.rs +++ b/components/site/src/lib.rs @@ -536,6 +536,26 @@ impl Site { /// Deletes the `public` directory and builds the site pub fn build(&self) -> Result<()> { self.clean()?; + + // Generate/move all assets before rendering any content + if let Some(ref theme) = self.config.theme { + let theme_path = self.base_path.join("themes").join(theme); + if theme_path.join("sass").exists() { + self.compile_sass(&theme_path)?; + } + } + + if self.config.compile_sass { + self.compile_sass(&self.base_path)?; + } + + self.process_images()?; + self.copy_static_directories()?; + + if self.config.build_search_index { + self.build_search_index()?; + } + // Render aliases first to allow overwriting self.render_aliases()?; self.render_sections()?; @@ -570,24 +590,6 @@ impl Site { self.render_robots()?; self.render_taxonomies()?; - if let Some(ref theme) = self.config.theme { - let theme_path = self.base_path.join("themes").join(theme); - if theme_path.join("sass").exists() { - self.compile_sass(&theme_path)?; - } - } - - if self.config.compile_sass { - self.compile_sass(&self.base_path)?; - } - - self.process_images()?; - self.copy_static_directories()?; - - if self.config.build_search_index { - self.build_search_index()?; - } - Ok(()) } From 2a0d0b9b77ae2298c3f50bc5fcaea2edfb752e0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Mariaux?= <35563610+newbisebi@users.noreply.github.com> Date: Thu, 14 Mar 2019 20:57:22 +0100 Subject: [PATCH 58/74] Split sitemap (#619) Split sitemap when it is getting too big --- .github/ISSUE_TEMPLATE/documentation.md | 2 +- components/rebuild/src/lib.rs | 1 + components/site/src/lib.rs | 47 +++++++++++++++---- components/templates/src/builtins/sitemap.xml | 22 ++------- .../src/builtins/split_sitemap_index.xml | 7 +++ components/templates/src/lib.rs | 3 +- 6 files changed, 54 insertions(+), 28 deletions(-) create mode 100644 components/templates/src/builtins/split_sitemap_index.xml diff --git a/.github/ISSUE_TEMPLATE/documentation.md b/.github/ISSUE_TEMPLATE/documentation.md index d0466870..8e455bd9 100644 --- a/.github/ISSUE_TEMPLATE/documentation.md +++ b/.github/ISSUE_TEMPLATE/documentation.md @@ -10,5 +10,5 @@ What is the issue? Is the documentation unclear? Is it missing information? ## Proposed solution A quick explanation of what you would like to see to solve the issue. -If you want to add content, please explain what you were looking fod and what was +If you want to add content, please explain what you were looking for and what was your process while looking at the current documentation. diff --git a/components/rebuild/src/lib.rs b/components/rebuild/src/lib.rs index 32f8e585..41b4fc44 100644 --- a/components/rebuild/src/lib.rs +++ b/components/rebuild/src/lib.rs @@ -369,6 +369,7 @@ pub fn after_template_change(site: &mut Site, path: &Path) -> Result<()> { match filename { "sitemap.xml" => site.render_sitemap(), "rss.xml" => site.render_rss_feed(site.library.read().unwrap().pages_values(), None), + "split_sitemap_index.xml" => site.render_sitemap(), "robots.txt" => site.render_robots(), "single.html" | "list.html" => site.render_taxonomies(), "page.html" => { diff --git a/components/site/src/lib.rs b/components/site/src/lib.rs index 1d3c27e6..d8bada6a 100644 --- a/components/site/src/lib.rs +++ b/components/site/src/lib.rs @@ -788,8 +788,6 @@ impl Site { pub fn render_sitemap(&self) -> Result<()> { ensure_directory_exists(&self.output_path)?; - let mut context = Context::new(); - let mut pages = self .library .read() @@ -806,7 +804,6 @@ impl Site { }) .collect::>(); pages.sort_by(|a, b| a.permalink.cmp(&b.permalink)); - context.insert("pages", &pages); let mut sections = self .library @@ -835,7 +832,6 @@ impl Site { } } sections.sort_by(|a, b| a.permalink.cmp(&b.permalink)); - context.insert("sections", §ions); let mut taxonomies = vec![]; for taxonomy in &self.taxonomies { @@ -869,13 +865,46 @@ impl Site { taxonomies.push(terms); } - context.insert("taxonomies", &taxonomies); - context.insert("config", &self.config); + // Group all sitemap entries in one vector + let mut all_sitemap_entries = Vec::new(); + all_sitemap_entries.append(&mut pages); + all_sitemap_entries.append(&mut sections); + for terms in taxonomies { + let mut terms = terms; + all_sitemap_entries.append(&mut terms); + } - let sitemap = &render_template("sitemap.xml", &self.tera, context, &self.config.theme)?; - - create_file(&self.output_path.join("sitemap.xml"), sitemap)?; + // Count total number of sitemap entries to include in sitemap + let total_number = all_sitemap_entries.len(); + let sitemap_limit = 30000; + if total_number < sitemap_limit { + // Create single sitemap + let mut context = Context::new(); + context.insert("sitemap_entries", &all_sitemap_entries); + let sitemap = &render_template("sitemap.xml", &self.tera, context, &self.config.theme)?; + create_file(&self.output_path.join("sitemap.xml"), sitemap)?; + return Ok(()) + } + + // Create multiple sitemaps (max 30000 urls each) + let mut sitemap_index = Vec::new(); + for (i, chunk) in all_sitemap_entries.chunks(sitemap_limit).enumerate() { + let mut context = Context::new(); + context.insert("sitemap_entries", &chunk); + let sitemap = &render_template("sitemap.xml", &self.tera, context, &self.config.theme)?; + let file_name = format!("sitemap{}.xml", i+1); + create_file(&self.output_path.join(&file_name), sitemap)?; + let mut sitemap_url:String = self.config.make_permalink(&file_name); + sitemap_url.pop(); // Remove trailing slash + sitemap_index.push(sitemap_url); + } + // Create main sitemap that reference numbered sitemaps + let mut main_context = Context::new(); + main_context.insert("sitemaps", &sitemap_index); + let sitemap = &render_template("split_sitemap_index.xml", &self.tera, main_context, &self.config.theme)?; + create_file(&self.output_path.join("sitemap.xml"), sitemap)?; + Ok(()) } diff --git a/components/templates/src/builtins/sitemap.xml b/components/templates/src/builtins/sitemap.xml index 6eba3d74..3e924543 100644 --- a/components/templates/src/builtins/sitemap.xml +++ b/components/templates/src/builtins/sitemap.xml @@ -1,22 +1,10 @@ - {% for page in pages %} + {% for sitemap_entry in sitemap_entries %} - {{ page.permalink | safe }} - {% if page.date %} - {{ page.date }} + {{ sitemap_entry.permalink | safe }} + {% if sitemap_entry.date %} + {{ sitemap_entry.date }} {% endif %} {% endfor %} - {% for section in sections %} - - {{ section.permalink | safe }} - - {% endfor %} - {% for taxonomy in taxonomies %} - {% for entry in taxonomy %} - - {{ entry.permalink | safe }} - - {% endfor %} - {% endfor %} - + \ No newline at end of file diff --git a/components/templates/src/builtins/split_sitemap_index.xml b/components/templates/src/builtins/split_sitemap_index.xml new file mode 100644 index 00000000..1b883e4f --- /dev/null +++ b/components/templates/src/builtins/split_sitemap_index.xml @@ -0,0 +1,7 @@ + + {% for sitemap in sitemaps %} + + {{ sitemap }} + + {% endfor %} + \ No newline at end of file diff --git a/components/templates/src/lib.rs b/components/templates/src/lib.rs index 05f782b6..eec3b1f3 100644 --- a/components/templates/src/lib.rs +++ b/components/templates/src/lib.rs @@ -35,7 +35,8 @@ lazy_static! { ("__zola_builtins/rss.xml", include_str!("builtins/rss.xml")), ("__zola_builtins/sitemap.xml", include_str!("builtins/sitemap.xml")), ("__zola_builtins/robots.txt", include_str!("builtins/robots.txt")), - ("anchor-link.html", include_str!("builtins/anchor-link.html")), + ("__zola_builtins/split_sitemap_index.xml", include_str!("builtins/split_sitemap_index.xml")), + ("__zola_builtins/anchor-link.html", include_str!("builtins/anchor-link.html")), ( "__zola_builtins/shortcodes/youtube.html", include_str!("builtins/shortcodes/youtube.html"), From 7baf08cef2fe63ffe47397fda3d27347492156fc Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Thu, 14 Mar 2019 21:15:01 +0100 Subject: [PATCH 59/74] Update docs for sitemap --- CHANGELOG.md | 2 ++ components/site/src/lib.rs | 10 ++++---- components/templates/src/builtins/sitemap.xml | 4 ++-- .../documentation/templates/sitemap.md | 23 ++++++++++++------- 4 files changed, 24 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e700a2d..15da4c0e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ a section - The table of content for a page/section is now only available as the `toc` variable when rendering it and not anymore on the `page`/`section` variable - Default directory for `load_data` is now the root of the site instead of the `content` directory +- Change variable sent to the sitemap template, see documentation for details ### Other - Add support for content in multiple languages @@ -17,6 +18,7 @@ rendering it and not anymore on the `page`/`section` variable - Add Dracula syntax highlighting theme - Fix using inline styles in headers - Fix sections with render=false being shown in sitemap +- Sitemap is now split when there are more than 30 000 links in it ## 0.5.1 (2018-12-14) diff --git a/components/site/src/lib.rs b/components/site/src/lib.rs index d8bada6a..f0a4d5ce 100644 --- a/components/site/src/lib.rs +++ b/components/site/src/lib.rs @@ -881,17 +881,17 @@ impl Site { if total_number < sitemap_limit { // Create single sitemap let mut context = Context::new(); - context.insert("sitemap_entries", &all_sitemap_entries); + context.insert("entries", &all_sitemap_entries); let sitemap = &render_template("sitemap.xml", &self.tera, context, &self.config.theme)?; create_file(&self.output_path.join("sitemap.xml"), sitemap)?; return Ok(()) } - + // Create multiple sitemaps (max 30000 urls each) let mut sitemap_index = Vec::new(); for (i, chunk) in all_sitemap_entries.chunks(sitemap_limit).enumerate() { let mut context = Context::new(); - context.insert("sitemap_entries", &chunk); + context.insert("entries", &chunk); let sitemap = &render_template("sitemap.xml", &self.tera, context, &self.config.theme)?; let file_name = format!("sitemap{}.xml", i+1); create_file(&self.output_path.join(&file_name), sitemap)?; @@ -903,8 +903,8 @@ impl Site { let mut main_context = Context::new(); main_context.insert("sitemaps", &sitemap_index); let sitemap = &render_template("split_sitemap_index.xml", &self.tera, main_context, &self.config.theme)?; - create_file(&self.output_path.join("sitemap.xml"), sitemap)?; - + create_file(&self.output_path.join("sitemap.xml"), sitemap)?; + Ok(()) } diff --git a/components/templates/src/builtins/sitemap.xml b/components/templates/src/builtins/sitemap.xml index 3e924543..6d55d37b 100644 --- a/components/templates/src/builtins/sitemap.xml +++ b/components/templates/src/builtins/sitemap.xml @@ -1,5 +1,5 @@ - {% for sitemap_entry in sitemap_entries %} + {% for sitemap_entry in entries %} {{ sitemap_entry.permalink | safe }} {% if sitemap_entry.date %} @@ -7,4 +7,4 @@ {% endif %} {% endfor %} - \ No newline at end of file + diff --git a/docs/content/documentation/templates/sitemap.md b/docs/content/documentation/templates/sitemap.md index 86f510ce..13119c8b 100644 --- a/docs/content/documentation/templates/sitemap.md +++ b/docs/content/documentation/templates/sitemap.md @@ -6,20 +6,27 @@ weight = 60 Zola will look for a `sitemap.xml` file in the `templates` directory or use the built-in one. +If your site has more than 30 000 pages, it will automatically split +the links into multiple sitemaps as recommended by [Google](https://support.google.com/webmasters/answer/183668?hl=en): -The sitemap template gets four variables in addition of the config: +> All formats limit a single sitemap to 50MB (uncompressed) and 50,000 URLs. +> If you have a larger file or more URLs, you will have to break your list into multiple sitemaps. +> You can optionally create a sitemap index file (a file that points to a list of sitemaps) and submit that single index file to Google. -- `pages`: all pages of the site -- `sections`: all sections of the site, including an index section -- `tags`: links the tags page and individual tag page, empty if no tags -- `categories`: links the categories page and individual category page, empty if no categories +In such a case, Zola will use a template called `split_sitemap_index.xml` to render the index sitemap. -As the sitemap only requires a link and an optional date for the `lastmod` field, -all the variables above are arrays of `SitemapEntry` with the following type: + +The `sitemap.xml` template gets a single variable: + +- `entries`: all pages of the site, as a list of `SitemapEntry` + +A `SitemapEntry` has the following fields: ```ts permalink: String; date: String?; ``` -All `SitemapEntry` are sorted in each variable by their permalink. +The `split_sitemap_index.xml` also gets a single variable: + +- `sitemaps`: a list of permalinks to the sitemaps From 9beaa26023c31241a78adf3e54aadd0b77c49c42 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Thu, 14 Mar 2019 21:30:53 +0100 Subject: [PATCH 60/74] Add link to sitemap to robots.txt --- CHANGELOG.md | 1 + components/templates/src/builtins/robots.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 15da4c0e..b04cb341 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ rendering it and not anymore on the `page`/`section` variable - Fix using inline styles in headers - Fix sections with render=false being shown in sitemap - Sitemap is now split when there are more than 30 000 links in it +- Add link to sitemap in robots.txt ## 0.5.1 (2018-12-14) diff --git a/components/templates/src/builtins/robots.txt b/components/templates/src/builtins/robots.txt index 7d329b1d..451ba120 100644 --- a/components/templates/src/builtins/robots.txt +++ b/components/templates/src/builtins/robots.txt @@ -1 +1,2 @@ User-agent: * +Sitemap: {{ get_url(path="sitemap.xml") }} From 8a802b1828890e2de138bb61b2f4997370629831 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Thu, 14 Mar 2019 21:53:07 +0100 Subject: [PATCH 61/74] Make sitemap entries in a set Close #633 --- components/site/src/lib.rs | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/components/site/src/lib.rs b/components/site/src/lib.rs index f0a4d5ce..f64dbd2e 100644 --- a/components/site/src/lib.rs +++ b/components/site/src/lib.rs @@ -19,7 +19,7 @@ extern crate utils; #[cfg(test)] extern crate tempfile; -use std::collections::HashMap; +use std::collections::{HashMap, HashSet}; use std::fs::{copy, create_dir_all, remove_dir_all}; use std::path::{Path, PathBuf}; use std::sync::{Arc, Mutex, RwLock}; @@ -42,7 +42,7 @@ use utils::templates::{render_template, rewrite_theme_paths}; /// The sitemap only needs links and potentially date so we trim down /// all pages to only that -#[derive(Debug, Serialize)] +#[derive(Debug, Serialize, Eq, PartialEq, Hash)] struct SitemapEntry { permalink: String, date: Option, @@ -788,7 +788,7 @@ impl Site { pub fn render_sitemap(&self) -> Result<()> { ensure_directory_exists(&self.output_path)?; - let mut pages = self + let pages = self .library .read() .unwrap() @@ -803,7 +803,6 @@ impl Site { SitemapEntry::new(p.permalink.clone(), date) }) .collect::>(); - pages.sort_by(|a, b| a.permalink.cmp(&b.permalink)); let mut sections = self .library @@ -831,7 +830,6 @@ impl Site { sections.push(SitemapEntry::new(permalink, None)) } } - sections.sort_by(|a, b| a.permalink.cmp(&b.permalink)); let mut taxonomies = vec![]; for taxonomy in &self.taxonomies { @@ -861,17 +859,21 @@ impl Site { } } - terms.sort_by(|a, b| a.permalink.cmp(&b.permalink)); taxonomies.push(terms); } - // Group all sitemap entries in one vector - let mut all_sitemap_entries = Vec::new(); - all_sitemap_entries.append(&mut pages); - all_sitemap_entries.append(&mut sections); + + let mut all_sitemap_entries = HashSet::new(); + for p in pages { + all_sitemap_entries.insert(p); + } + for s in sections { + all_sitemap_entries.insert(s); + } for terms in taxonomies { - let mut terms = terms; - all_sitemap_entries.append(&mut terms); + for term in terms { + all_sitemap_entries.insert(term); + } } // Count total number of sitemap entries to include in sitemap @@ -889,7 +891,7 @@ impl Site { // Create multiple sitemaps (max 30000 urls each) let mut sitemap_index = Vec::new(); - for (i, chunk) in all_sitemap_entries.chunks(sitemap_limit).enumerate() { + for (i, chunk) in all_sitemap_entries.iter().collect::>().chunks(sitemap_limit).enumerate() { let mut context = Context::new(); context.insert("entries", &chunk); let sitemap = &render_template("sitemap.xml", &self.tera, context, &self.config.theme)?; From 3eaf13d49be4e93cd25a9e5b08c5cca1e4b5712b Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Fri, 15 Mar 2019 21:24:06 +0100 Subject: [PATCH 62/74] Update pulldown_cmark --- CHANGELOG.md | 1 + Cargo.lock | 119 +++++++++++++++---------- components/rendering/Cargo.toml | 2 +- components/rendering/src/markdown.rs | 41 +++++---- components/rendering/tests/markdown.rs | 16 +++- 5 files changed, 106 insertions(+), 73 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b04cb341..8bb9f93b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ rendering it and not anymore on the `page`/`section` variable - Fix sections with render=false being shown in sitemap - Sitemap is now split when there are more than 30 000 links in it - Add link to sitemap in robots.txt +- Markdown rendering is now fully CommonMark commpliant ## 0.5.1 (2018-12-14) diff --git a/Cargo.lock b/Cargo.lock index b3c4c49b..7153ac4b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -24,7 +24,7 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -50,7 +50,7 @@ dependencies = [ "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-current-thread 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -77,7 +77,7 @@ dependencies = [ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "h2 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "h2 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -100,7 +100,7 @@ dependencies = [ "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-current-thread 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -118,7 +118,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.28 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -206,7 +206,7 @@ name = "backtrace-sys" version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -273,7 +273,7 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.30" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -329,7 +329,7 @@ dependencies = [ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "syntect 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "syntect 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", ] @@ -606,7 +606,7 @@ name = "errors" version = "0.1.0" dependencies = [ "image 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", - "syntect 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "syntect 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "tera 1.0.0-beta.3 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -627,7 +627,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.28 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)", "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -648,7 +648,7 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -808,7 +808,7 @@ dependencies = [ [[package]] name = "h2" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -850,7 +850,7 @@ dependencies = [ "markup5ever 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.28 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -889,7 +889,7 @@ dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "h2 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "h2 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -898,7 +898,7 @@ dependencies = [ "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1075,7 +1075,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "libflate" -version = "0.1.20" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1229,7 +1229,7 @@ name = "miniz-sys" version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1246,7 +1246,7 @@ name = "miniz_oxide_c_api" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", "crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "miniz_oxide 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1340,7 +1340,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1385,7 +1385,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.28 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1443,7 +1443,7 @@ name = "onig_sys" version = "69.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1470,7 +1470,7 @@ name = "openssl-sys" version = "0.9.42" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1537,7 +1537,7 @@ dependencies = [ "pest_meta 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.28 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1636,6 +1636,16 @@ dependencies = [ "getopts 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "pulldown-cmark" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "getopts 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "quick-error" version = "1.2.2" @@ -1862,12 +1872,12 @@ dependencies = [ "link_checker 0.1.0", "pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pulldown-cmark 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pulldown-cmark 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "syntect 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "syntect 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "templates 0.1.0", "tera 1.0.0-beta.3 (registry+https://github.com/rust-lang/crates.io-index)", "utils 0.1.0", @@ -1885,7 +1895,7 @@ dependencies = [ "http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.12.25 (registry+https://github.com/rust-lang/crates.io-index)", "hyper-tls 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libflate 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)", + "libflate 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", "mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1893,7 +1903,7 @@ dependencies = [ "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-threadpool 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1970,7 +1980,7 @@ name = "sass-sys" version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2052,7 +2062,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.28 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2221,12 +2231,12 @@ dependencies = [ "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.28 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "syn" -version = "0.15.28" +version = "0.15.29" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2241,18 +2251,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.28 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "syntect" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bincode 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "flate2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "flate2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2386,7 +2396,7 @@ dependencies = [ [[package]] name = "tokio" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2399,10 +2409,11 @@ dependencies = [ "tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-threadpool 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-trace-core 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2470,7 +2481,7 @@ dependencies = [ "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2491,7 +2502,7 @@ dependencies = [ [[package]] name = "tokio-sync" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2538,6 +2549,14 @@ dependencies = [ "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "tokio-trace-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "tokio-udp" version = "0.1.3" @@ -2645,7 +2664,7 @@ dependencies = [ "lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "resolv-conf 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "trust-dns-proto 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2828,7 +2847,7 @@ dependencies = [ "nom 4.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.28 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2839,7 +2858,7 @@ dependencies = [ "nom 4.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.28 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3055,7 +3074,7 @@ dependencies = [ "checksum byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "560c32574a12a89ecd91f5e742165893f86e3ab98d21f8ea548658eb9eef5f40" "checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb" "checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" -"checksum cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)" = "d01c69d08ff207f231f07196e30f84c70f1c815b04f980f8b7b01ff01f05eb92" +"checksum cc 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)" = "c9ce8bb087aacff865633f0bd5aeaed910fe2fe55b55f4739527f2e023a2e53d" "checksum cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "11d43355396e872eefb45ce6342e4374ed7bc2b3a502d1b28e36d6e23c05d1f4" "checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878" "checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e" @@ -3096,7 +3115,7 @@ dependencies = [ "checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1" "checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" "checksum filetime 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a2df5c1a8c4be27e7707789dc42ae65976e60b394afd293d1419ab915833e646" -"checksum flate2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2291c165c8e703ee54ef3055ad6188e3d51108e2ded18e9f2476e774fc5ad3d4" +"checksum flate2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f87e68aa82b2de08a6e037f1385455759df6e445a8df5e005b4297191dbf18aa" "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" "checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" @@ -3115,7 +3134,7 @@ dependencies = [ "checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" "checksum globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4743617a7464bbda3c8aec8558ff2f9429047e025771037df561d383337ff865" "checksum globwalk 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4c7ee1ce235d766a01b481e593804b9356768d1dbd68fc0c063d04b407bee71a" -"checksum h2 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "ddb2b25a33e231484694267af28fec74ac63b5ccf51ee2065a5e313b834d836e" +"checksum h2 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "910a5e7be6283a9c91b3982fa5188368c8719cce2a3cf3b86048673bf9d9c36b" "checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" "checksum hostname 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "21ceb46a83a85e824ef93669c8b390009623863b5c195d1ba747292c0c72f94e" "checksum html5ever 0.22.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c213fa6a618dc1da552f54f85cba74b05d8e883c92ec4e89067736938084c26e" @@ -3141,7 +3160,7 @@ dependencies = [ "checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" "checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" "checksum libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)" = "aab692d7759f5cd8c859e169db98ae5b52c924add2af5fbbca11d12fefb567c1" -"checksum libflate 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)" = "54d1ddf9c52870243c5689d7638d888331c1116aa5b398f3ba1acfa7d8758ca1" +"checksum libflate 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)" = "7346a83e8a2c3958d44d24225d905385dc31fc16e89dffb356c457b278914d20" "checksum line-wrap 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9" "checksum linked-hash-map 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7860ec297f7008ff7a1e3382d7f7e1dcd69efc94751a2284bafc3d013c2aa939" "checksum linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "70fb39025bc7cdd76305867c4eccf2f2dcf6e9a57f5b21a93e1c2d86cd03ec9e" @@ -3200,6 +3219,7 @@ dependencies = [ "checksum precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" "checksum proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "4d317f9caece796be1980837fd5cb3dfec5613ebdb04ad0956deea83ce168915" "checksum pulldown-cmark 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "eef52fac62d0ea7b9b4dc7da092aa64ea7ec3d90af6679422d3d7e0e14b6ee15" +"checksum pulldown-cmark 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "426175701ce727edeeef0a56535d88cc62afbdd977933e82be610044d645c4ec" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" "checksum quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd8e04bd9c52e0342b406469d494fcb033be4bdbe5c606016defbb1681411e1" "checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" @@ -3261,9 +3281,9 @@ dependencies = [ "checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" "checksum strum 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f6c3a2071519ab6a48f465808c4c1ffdd00dfc8e93111d02b4fc5abab177676e" "checksum strum_macros 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8baacebd7b7c9b864d83a6ba7a246232983e277b86fa5cdec77f565715a4b136" -"checksum syn 0.15.28 (registry+https://github.com/rust-lang/crates.io-index)" = "218aa5a01ab9805df6e9e48074c8d88f317cc9660b1ad6c3dabac2d627d185d6" +"checksum syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)" = "1825685f977249735d510a242a6727b46efe914bb67e38d30c071b1b72b1d5c2" "checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" -"checksum syntect 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "72fed41b91655133c9819f68d0b9a194dcbf36aa46e80033b6e9ae169f58b211" +"checksum syntect 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e80b8831c5a543192ffc3727f01cf0e57579c6ac15558e3048bfb5708892167b" "checksum tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b86c784c88d98c801132806dadd3819ed29d8600836c4088e855cdf3e178ed8a" "checksum tendril 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "707feda9f2582d5d680d733e38755547a3e8fb471e7ba11452ecfd9ce93a5d3b" "checksum tera 1.0.0-beta.3 (registry+https://github.com/rust-lang/crates.io-index)" = "dc35f9f4098f84b32579af1fd3d9c850d5c713ea2490c81e1f792a5fbb22e278" @@ -3273,7 +3293,7 @@ dependencies = [ "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" "checksum tiff 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1e4834f28a0330cb9f3f2c87d2649dca723cb33802e2bdcf18da32759fbec7ce" "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" -"checksum tokio 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "fcaabb3cec70485d0df6e9454fe514393ad1c4070dee8915f11041e95630b230" +"checksum tokio 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "1021bb1f4150435ab8f222eb7ed37c60b2d57037def63ba43085a79f387512d7" "checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" "checksum tokio-current-thread 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c756b04680eea21902a46fca4e9f410a2332c04995af590e07ff262e2193a9a3" "checksum tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "30c6dbf2d1ad1de300b393910e8a3aa272b724a400b6531da03eed99e329fbf0" @@ -3281,10 +3301,11 @@ dependencies = [ "checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926" "checksum tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6af16bfac7e112bea8b0442542161bfc41cbfa4466b580bdda7d18cb88b911ce" "checksum tokio-signal 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "dd6dc5276ea05ce379a16de90083ec80836440d5ef8a6a39545a3207373b8296" -"checksum tokio-sync 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1bf2b9dac2a0509b5cfd1df5aa25eafacb616a42a491a13604d6bbeab4486363" +"checksum tokio-sync 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "fda385df506bf7546e70872767f71e81640f1f251bdf2fd8eb81a0eaec5fe022" "checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" "checksum tokio-threadpool 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "742e511f6ce2298aeb86fc9ea0d8df81c2388c6ebae3dc8a7316e8c9df0df801" "checksum tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "2910970404ba6fa78c5539126a9ae2045d62e3713041e447f695f41405a120c6" +"checksum tokio-trace-core 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "350c9edade9830dc185ae48ba45667a445ab59f6167ef6d0254ec9d2430d9dd3" "checksum tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "66268575b80f4a4a710ef83d087fdfeeabdce9b74c797535fbac18a2cb906e92" "checksum tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "037ffc3ba0e12a0ab4aca92e5234e0dedeb48fddf6ccd260f1f150a36a9f2445" "checksum toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f" diff --git a/components/rendering/Cargo.toml b/components/rendering/Cargo.toml index b0eca64b..ef38a2c1 100644 --- a/components/rendering/Cargo.toml +++ b/components/rendering/Cargo.toml @@ -6,7 +6,7 @@ authors = ["Vincent Prouillet "] [dependencies] tera = { version = "1.0.0-alpha.3", features = ["preserve_order"] } syntect = "3" -pulldown-cmark = "0.2" +pulldown-cmark = "0.3" slug = "0.1" serde = "1" serde_derive = "1" diff --git a/components/rendering/src/markdown.rs b/components/rendering/src/markdown.rs index 9bbb26a3..5994f7de 100644 --- a/components/rendering/src/markdown.rs +++ b/components/rendering/src/markdown.rs @@ -1,5 +1,3 @@ -use std::borrow::Cow::{Borrowed, Owned}; - use pulldown_cmark as cmark; use slug::slugify; use syntect::easy::HighlightLines; @@ -16,7 +14,7 @@ use table_of_contents::{make_table_of_contents, Header}; use utils::site::resolve_internal_link; use utils::vec::InsertMany; -use self::cmark::{Event, Options, Parser, Tag}; +use self::cmark::{Event, Options, Parser, Tag, LinkType}; const CONTINUE_READING: &str = "

\n"; @@ -67,7 +65,10 @@ fn is_colocated_asset_link(link: &str) -> bool { && !link.starts_with("mailto:") } -fn fix_link(link: &str, context: &RenderContext) -> Result { +fn fix_link(link_type: LinkType, link: &str, context: &RenderContext) -> Result { + if link_type == LinkType::Email { + return Ok(link.to_string()); + } // A few situations here: // - it could be a relative link (starting with `./`) // - it could be a link to a co-located asset @@ -166,7 +167,7 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result Result { if !context.config.highlight_code { - return Event::Html(Borrowed("
"));
+                            return Event::Html("
".into());
                         }
 
                         let theme = &THEME_SET.themes[&context.config.highlight_theme];
@@ -186,40 +187,42 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result {
                         if !context.config.highlight_code {
-                            return Event::Html(Borrowed("
\n")); + return Event::Html("
\n".into()); } // reset highlight and close the code block highlighter = None; - Event::Html(Borrowed("")) + Event::Html("".into()) } - Event::Start(Tag::Image(src, title)) => { + Event::Start(Tag::Image(link_type, src, title)) => { if is_colocated_asset_link(&src) { + let link = format!("{}{}", context.current_page_permalink, &*src); return Event::Start(Tag::Image( - Owned(format!("{}{}", context.current_page_permalink, src)), + link_type, + link.into(), title, )); } - Event::Start(Tag::Image(src, title)) + Event::Start(Tag::Image(link_type, src, title)) } - Event::Start(Tag::Link(link, title)) => { - let fixed_link = match fix_link(&link, context) { + Event::Start(Tag::Link(link_type, link, title)) => { + let fixed_link = match fix_link(link_type, &link, context) { Ok(fixed_link) => fixed_link, Err(err) => { error = Some(err); - return Event::Html(Borrowed("")); + return Event::Html("".into()); } }; - Event::Start(Tag::Link(Owned(fixed_link), title)) + Event::Start(Tag::Link(link_type, fixed_link.into(), title)) } Event::Html(ref markup) if markup.contains("") => { has_summary = true; - Event::Html(Borrowed(CONTINUE_READING)) + Event::Html(CONTINUE_READING.into()) } _ => event, } @@ -239,7 +242,7 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result", lvl = header_ref.level, id = id); - events[start_idx] = Event::Html(Owned(html)); + events[start_idx] = Event::Html(html.into()); // generate anchors and places to insert them if context.insert_anchor != InsertAnchor::None { @@ -258,7 +261,7 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result\n$ gutenberg server\n$ ping\n" + "
\n$ gutenberg server\n$ ping\n
" ); } @@ -729,17 +729,25 @@ fn can_handle_summaries() { let config = Config::default(); let context = RenderContext::new(&tera_ctx, &config, "", &permalinks_ctx, InsertAnchor::None); let res = render_content( - "Hello [world]\n\n\n\nBla bla\n\n[world]: https://vincent.is/about/", + r#" +Hello [My site][world] + + + +Bla bla + +[world]: https://vincentprouillet.com +"#, &context, ) .unwrap(); assert_eq!( res.body, - "

Hello world

\n

\n

Bla bla

\n" + "

Hello My site

\n

\n

Bla bla

\n" ); assert_eq!( res.summary_len, - Some("

Hello world

\n".len()) + Some("

Hello My site

".len()) ); } From c63b7fde445e8c18283c6f8c6587e1ebafffbeae Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Sat, 16 Mar 2019 10:01:11 +0100 Subject: [PATCH 63/74] load_data now defaults to plain type + fix bug with get_taxonomy fn --- CHANGELOG.md | 4 ++- components/rendering/src/markdown.rs | 8 ++--- components/site/src/lib.rs | 27 ++++++++++------- .../templates/src/global_fns/load_data.rs | 30 +++++-------------- components/templates/src/lib.rs | 5 +++- .../documentation/templates/overview.md | 25 +++++++++------- 6 files changed, 48 insertions(+), 51 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8bb9f93b..f95ed95d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,7 +20,9 @@ rendering it and not anymore on the `page`/`section` variable - Fix sections with render=false being shown in sitemap - Sitemap is now split when there are more than 30 000 links in it - Add link to sitemap in robots.txt -- Markdown rendering is now fully CommonMark commpliant +- Markdown rendering is now fully CommonMark compliant +- `load_data` now defaults to loading file as plain text, unless `format` is passed +or the extension matches csv/toml/json ## 0.5.1 (2018-12-14) diff --git a/components/rendering/src/markdown.rs b/components/rendering/src/markdown.rs index 5994f7de..6c34a585 100644 --- a/components/rendering/src/markdown.rs +++ b/components/rendering/src/markdown.rs @@ -14,7 +14,7 @@ use table_of_contents::{make_table_of_contents, Header}; use utils::site::resolve_internal_link; use utils::vec::InsertMany; -use self::cmark::{Event, Options, Parser, Tag, LinkType}; +use self::cmark::{Event, LinkType, Options, Parser, Tag}; const CONTINUE_READING: &str = "

\n"; @@ -200,11 +200,7 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result { if is_colocated_asset_link(&src) { let link = format!("{}{}", context.current_page_permalink, &*src); - return Event::Start(Tag::Image( - link_type, - link.into(), - title, - )); + return Event::Start(Tag::Image(link_type, link.into(), title)); } Event::Start(Tag::Image(link_type, src, title)) diff --git a/components/site/src/lib.rs b/components/site/src/lib.rs index f64dbd2e..bd41dae1 100644 --- a/components/site/src/lib.rs +++ b/components/site/src/lib.rs @@ -246,10 +246,12 @@ impl Site { self.add_page(p, false)?; } + // taxonomy Tera fns are loaded in `register_early_global_fns` + // so we do need to populate it first. + self.populate_taxonomies()?; self.register_early_global_fns(); self.populate_sections(); self.render_markdown()?; - self.populate_taxonomies()?; self.register_tera_global_fns(); Ok(()) @@ -347,10 +349,7 @@ impl Site { "resize_image", global_fns::ResizeImage::new(self.imageproc.clone()), ); - self.tera.register_function( - "load_data", - global_fns::LoadData::new(self.base_path.clone()), - ); + self.tera.register_function("load_data", global_fns::LoadData::new(self.base_path.clone())); self.tera.register_function("trans", global_fns::Trans::new(self.config.clone())); self.tera.register_function( "get_taxonomy_url", @@ -862,7 +861,6 @@ impl Site { taxonomies.push(terms); } - let mut all_sitemap_entries = HashSet::new(); for p in pages { all_sitemap_entries.insert(p); @@ -886,25 +884,32 @@ impl Site { context.insert("entries", &all_sitemap_entries); let sitemap = &render_template("sitemap.xml", &self.tera, context, &self.config.theme)?; create_file(&self.output_path.join("sitemap.xml"), sitemap)?; - return Ok(()) + return Ok(()); } // Create multiple sitemaps (max 30000 urls each) let mut sitemap_index = Vec::new(); - for (i, chunk) in all_sitemap_entries.iter().collect::>().chunks(sitemap_limit).enumerate() { + for (i, chunk) in + all_sitemap_entries.iter().collect::>().chunks(sitemap_limit).enumerate() + { let mut context = Context::new(); context.insert("entries", &chunk); let sitemap = &render_template("sitemap.xml", &self.tera, context, &self.config.theme)?; - let file_name = format!("sitemap{}.xml", i+1); + let file_name = format!("sitemap{}.xml", i + 1); create_file(&self.output_path.join(&file_name), sitemap)?; - let mut sitemap_url:String = self.config.make_permalink(&file_name); + let mut sitemap_url: String = self.config.make_permalink(&file_name); sitemap_url.pop(); // Remove trailing slash sitemap_index.push(sitemap_url); } // Create main sitemap that reference numbered sitemaps let mut main_context = Context::new(); main_context.insert("sitemaps", &sitemap_index); - let sitemap = &render_template("split_sitemap_index.xml", &self.tera, main_context, &self.config.theme)?; + let sitemap = &render_template( + "split_sitemap_index.xml", + &self.tera, + main_context, + &self.config.theme, + )?; create_file(&self.output_path.join("sitemap.xml"), sitemap)?; Ok(()) diff --git a/components/templates/src/global_fns/load_data.rs b/components/templates/src/global_fns/load_data.rs index 5bc506fd..9e6449c1 100644 --- a/components/templates/src/global_fns/load_data.rs +++ b/components/templates/src/global_fns/load_data.rs @@ -151,7 +151,7 @@ fn get_output_format_from_args( let format_arg = optional_arg!( String, args.get("format"), - "`load_data`: `format` needs to be an argument with a string value, being one of the supported `load_data` file types (csv, json, toml)" + "`load_data`: `format` needs to be an argument with a string value, being one of the supported `load_data` file types (csv, json, toml, plain)" ); if let Some(format) = format_arg { @@ -159,11 +159,7 @@ fn get_output_format_from_args( } let from_extension = if let DataSource::Path(path) = data_source { - let extension_result: Result<&str> = - path.extension().map(|extension| extension.to_str().unwrap()).ok_or_else(|| { - format!("Could not determine format for {} from extension", path.display()).into() - }); - extension_result? + path.extension().map(|extension| extension.to_str().unwrap()).unwrap_or_else(|| "plain") } else { "plain" }; @@ -332,8 +328,7 @@ mod tests { #[test] fn fails_when_missing_file() { - let static_fn = - LoadData::new(PathBuf::from("../utils")); + let static_fn = LoadData::new(PathBuf::from("../utils")); let mut args = HashMap::new(); args.insert("path".to_string(), to_value("../../../READMEE.md").unwrap()); let result = static_fn.call(&args); @@ -343,8 +338,7 @@ mod tests { #[test] fn cant_load_outside_content_dir() { - let static_fn = - LoadData::new(PathBuf::from(PathBuf::from("../utils"))); + let static_fn = LoadData::new(PathBuf::from(PathBuf::from("../utils"))); let mut args = HashMap::new(); args.insert("path".to_string(), to_value("../../README.md").unwrap()); args.insert("format".to_string(), to_value("plain").unwrap()); @@ -421,9 +415,7 @@ mod tests { #[test] fn can_load_toml() { - let static_fn = LoadData::new( - PathBuf::from("../utils/test-files"), - ); + let static_fn = LoadData::new(PathBuf::from("../utils/test-files")); let mut args = HashMap::new(); args.insert("path".to_string(), to_value("test.toml").unwrap()); let result = static_fn.call(&args.clone()).unwrap(); @@ -442,9 +434,7 @@ mod tests { #[test] fn can_load_csv() { - let static_fn = LoadData::new( - PathBuf::from("../utils/test-files"), - ); + let static_fn = LoadData::new(PathBuf::from("../utils/test-files")); let mut args = HashMap::new(); args.insert("path".to_string(), to_value("test.csv").unwrap()); let result = static_fn.call(&args.clone()).unwrap(); @@ -464,9 +454,7 @@ mod tests { // Test points to bad csv file with uneven row lengths #[test] fn bad_csv_should_result_in_error() { - let static_fn = LoadData::new( - PathBuf::from("../utils/test-files"), - ); + let static_fn = LoadData::new(PathBuf::from("../utils/test-files")); let mut args = HashMap::new(); args.insert("path".to_string(), to_value("uneven_rows.csv").unwrap()); let result = static_fn.call(&args.clone()); @@ -486,9 +474,7 @@ mod tests { #[test] fn can_load_json() { - let static_fn = LoadData::new( - PathBuf::from("../utils/test-files"), - ); + let static_fn = LoadData::new(PathBuf::from("../utils/test-files")); let mut args = HashMap::new(); args.insert("path".to_string(), to_value("test.json").unwrap()); let result = static_fn.call(&args.clone()).unwrap(); diff --git a/components/templates/src/lib.rs b/components/templates/src/lib.rs index eec3b1f3..a1b61139 100644 --- a/components/templates/src/lib.rs +++ b/components/templates/src/lib.rs @@ -35,7 +35,10 @@ lazy_static! { ("__zola_builtins/rss.xml", include_str!("builtins/rss.xml")), ("__zola_builtins/sitemap.xml", include_str!("builtins/sitemap.xml")), ("__zola_builtins/robots.txt", include_str!("builtins/robots.txt")), - ("__zola_builtins/split_sitemap_index.xml", include_str!("builtins/split_sitemap_index.xml")), + ( + "__zola_builtins/split_sitemap_index.xml", + include_str!("builtins/split_sitemap_index.xml"), + ), ("__zola_builtins/anchor-link.html", include_str!("builtins/anchor-link.html")), ( "__zola_builtins/shortcodes/youtube.html", diff --git a/docs/content/documentation/templates/overview.md b/docs/content/documentation/templates/overview.md index bf9aad72..02349c83 100644 --- a/docs/content/documentation/templates/overview.md +++ b/docs/content/documentation/templates/overview.md @@ -146,34 +146,37 @@ Gets the whole taxonomy of a specific kind. ``` ### `load_data` -Loads data from a file or URL. Supported file types include *toml*, *json* and *csv*. +Loads data from a file or URL. Supported file types include *toml*, *json* and *csv*. +Any other file type will be loaded as plain text. -The `path` argument specifies the path to the data file relative to your content directory. +The `path` argument specifies the path to the data file relative to your base directory, where your `config.toml` is. As a security precaution, If this file is outside of the main site directory, your site will fail to build. ```jinja2 -{% set data = load_data(path="blog/story/data.toml") %} +{% set data = load_data(path="content/blog/story/data.toml") %} ``` The optional `format` argument allows you to specify and override which data type is contained -within the file specified in the `path` argument. Valid entries are *"toml"*, *"json"*, *"csv"* -or *"plain"*. If the `format` argument isn't specified, then the paths extension is used. +within the file specified in the `path` argument. Valid entries are `toml`, `json`, `csv` +or `plain`. If the `format` argument isn't specified, then the paths extension is used. ```jinja2 -{% set data = load_data(path="blog/story/data.txt", format="json") %} +{% set data = load_data(path="content/blog/story/data.txt", format="json") %} ``` +Use the `plain` format for when your file has a toml/json/csv extension but you want to load it as plain text. + For *toml* and *json* the data is loaded into a structure matching the original data file, -however for *csv* there is no native notion of such a structure. Instead the data is seperated +however for *csv* there is no native notion of such a structure. Instead the data is separated into a data structure containing *headers* and *records*. See the example below to see how this works. In the template: ```jinja2 -{% set data = load_data(path="blog/story/data.csv") %} +{% set data = load_data(path="content/blog/story/data.csv") %} ``` -In the *blog/story/data.csv* file: +In the *content/blog/story/data.csv* file: ```csv Number, Title 1,Gutenberg @@ -211,7 +214,9 @@ By default, the response body will be returned with no parsing. This can be chan #### Data Caching -Data file loading and remote requests are cached in memory during build, so multiple requests aren't made to the same endpoint. URLs are cached based on the URL, and data files are cached based on the files modified time. The format is also taken into account when caching, so a request will be sent twice if it's loaded with 2 different formats. +Data file loading and remote requests are cached in memory during build, so multiple requests aren't made to the same endpoint. +URLs are cached based on the URL, and data files are cached based on the files modified time. +The format is also taken into account when caching, so a request will be sent twice if it's loaded with 2 different formats. ### `trans` Gets the translation of the given `key`, for the `default_language` or the `language given From 2a8d0de5326b3d19510a640677e8990debce4fa2 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Tue, 19 Mar 2019 20:42:16 +0100 Subject: [PATCH 64/74] Pass extra for page in sitemap entries --- CHANGELOG.md | 3 +- components/site/src/lib.rs | 116 ++-------------- components/site/src/sitemap.rs | 127 ++++++++++++++++++ .../documentation/templates/sitemap.md | 1 + 4 files changed, 141 insertions(+), 106 deletions(-) create mode 100644 components/site/src/sitemap.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index f95ed95d..4dfaace1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,11 +18,12 @@ rendering it and not anymore on the `page`/`section` variable - Add Dracula syntax highlighting theme - Fix using inline styles in headers - Fix sections with render=false being shown in sitemap -- Sitemap is now split when there are more than 30 000 links in it +- Sitemap is now split when there are more than 30 000 links in it - Add link to sitemap in robots.txt - Markdown rendering is now fully CommonMark compliant - `load_data` now defaults to loading file as plain text, unless `format` is passed or the extension matches csv/toml/json +- Sitemap entries get an additional `extra` field for pages only ## 0.5.1 (2018-12-14) diff --git a/components/site/src/lib.rs b/components/site/src/lib.rs index bd41dae1..ea2467a4 100644 --- a/components/site/src/lib.rs +++ b/components/site/src/lib.rs @@ -19,7 +19,10 @@ extern crate utils; #[cfg(test)] extern crate tempfile; -use std::collections::{HashMap, HashSet}; + +mod sitemap; + +use std::collections::{HashMap}; use std::fs::{copy, create_dir_all, remove_dir_all}; use std::path::{Path, PathBuf}; use std::sync::{Arc, Mutex, RwLock}; @@ -40,20 +43,6 @@ use utils::fs::{copy_directory, create_directory, create_file, ensure_directory_ use utils::net::get_available_port; use utils::templates::{render_template, rewrite_theme_paths}; -/// The sitemap only needs links and potentially date so we trim down -/// all pages to only that -#[derive(Debug, Serialize, Eq, PartialEq, Hash)] -struct SitemapEntry { - permalink: String, - date: Option, -} - -impl SitemapEntry { - pub fn new(permalink: String, date: Option) -> SitemapEntry { - SitemapEntry { permalink, date } - } -} - #[derive(Debug)] pub struct Site { /// The base path of the zola site @@ -787,98 +776,15 @@ impl Site { pub fn render_sitemap(&self) -> Result<()> { ensure_directory_exists(&self.output_path)?; - let pages = self - .library - .read() - .unwrap() - .pages_values() - .iter() - .filter(|p| !p.is_draft()) - .map(|p| { - let date = match p.meta.date { - Some(ref d) => Some(d.to_string()), - None => None, - }; - SitemapEntry::new(p.permalink.clone(), date) - }) - .collect::>(); - - let mut sections = self - .library - .read() - .unwrap() - .sections_values() - .iter() - .filter(|s| s.meta.render) - .map(|s| SitemapEntry::new(s.permalink.clone(), None)) - .collect::>(); - for section in self - .library - .read() - .unwrap() - .sections_values() - .iter() - .filter(|s| s.meta.paginate_by.is_some()) - { - let number_pagers = (section.pages.len() as f64 - / section.meta.paginate_by.unwrap() as f64) - .ceil() as isize; - for i in 1..=number_pagers { - let permalink = - format!("{}{}/{}/", section.permalink, section.meta.paginate_path, i); - sections.push(SitemapEntry::new(permalink, None)) - } - } - - let mut taxonomies = vec![]; - for taxonomy in &self.taxonomies { - let name = &taxonomy.kind.name; - let mut terms = vec![]; - terms.push(SitemapEntry::new(self.config.make_permalink(name), None)); - for item in &taxonomy.items { - terms.push(SitemapEntry::new( - self.config.make_permalink(&format!("{}/{}", &name, item.slug)), - None, - )); - - if taxonomy.kind.is_paginated() { - let number_pagers = (item.pages.len() as f64 - / taxonomy.kind.paginate_by.unwrap() as f64) - .ceil() as isize; - for i in 1..=number_pagers { - let permalink = self.config.make_permalink(&format!( - "{}/{}/{}/{}", - name, - item.slug, - taxonomy.kind.paginate_path(), - i - )); - terms.push(SitemapEntry::new(permalink, None)) - } - } - } - - taxonomies.push(terms); - } - - let mut all_sitemap_entries = HashSet::new(); - for p in pages { - all_sitemap_entries.insert(p); - } - for s in sections { - all_sitemap_entries.insert(s); - } - for terms in taxonomies { - for term in terms { - all_sitemap_entries.insert(term); - } - } - - // Count total number of sitemap entries to include in sitemap - let total_number = all_sitemap_entries.len(); + let library = self.library.read().unwrap(); + let all_sitemap_entries = sitemap::find_entries( + &library, + &self.taxonomies[..], + &self.config, + ); let sitemap_limit = 30000; - if total_number < sitemap_limit { + if all_sitemap_entries.len() < sitemap_limit { // Create single sitemap let mut context = Context::new(); context.insert("entries", &all_sitemap_entries); diff --git a/components/site/src/sitemap.rs b/components/site/src/sitemap.rs new file mode 100644 index 00000000..c38ed96a --- /dev/null +++ b/components/site/src/sitemap.rs @@ -0,0 +1,127 @@ +use std::borrow::Cow; +use std::hash::{Hash, Hasher}; +use std::collections::{HashSet}; + +use tera::{Map, Value}; +use config::{Config}; +use library::{Library, Taxonomy}; + +/// The sitemap only needs links, potentially date and extra for pages in case of updates +/// for examples so we trim down all entries to only that +#[derive(Debug, Serialize)] +pub struct SitemapEntry<'a> { + permalink: Cow<'a, str>, + date: Option, + extra: Option<&'a Map>, +} + +// Hash/Eq is not implemented for tera::Map but in our case we only care about the permalink +// when comparing/hashing so we implement it manually +impl<'a> Hash for SitemapEntry<'a> { + fn hash(&self, state: &mut H) { + self.permalink.hash(state); + } +} +impl<'a> PartialEq for SitemapEntry<'a> { + fn eq(&self, other: &SitemapEntry) -> bool { + self.permalink == other.permalink + } +} +impl<'a> Eq for SitemapEntry<'a> {} + +impl<'a> SitemapEntry<'a> { + pub fn new(permalink: Cow<'a, str>, date: Option) -> Self { + SitemapEntry { permalink, date, extra: None } + } + + pub fn add_extra(&mut self, extra: &'a Map) { + self.extra = Some(extra); + } +} + +/// Finds out all the links to put in a sitemap from the pages/sections/taxonomies +/// There are no duplicate permalinks in the output vec +pub fn find_entries<'a>(library: &'a Library, taxonomies: &'a [Taxonomy], config: &'a Config) -> Vec> { + let pages = library + .pages_values() + .iter() + .filter(|p| !p.is_draft()) + .map(|p| { + let date = match p.meta.date { + Some(ref d) => Some(d.to_string()), + None => None, + }; + let mut entry = SitemapEntry::new(Cow::Borrowed(&p.permalink), date); + entry.add_extra(&p.meta.extra); + entry + }) + .collect::>(); + + let mut sections = library + .sections_values() + .iter() + .filter(|s| s.meta.render) + .map(|s| SitemapEntry::new(Cow::Borrowed(&s.permalink), None)) + .collect::>(); + + for section in library + .sections_values() + .iter() + .filter(|s| s.meta.paginate_by.is_some()) + { + let number_pagers = (section.pages.len() as f64 + / section.meta.paginate_by.unwrap() as f64) + .ceil() as isize; + for i in 1..=number_pagers { + let permalink = + format!("{}{}/{}/", section.permalink, section.meta.paginate_path, i); + sections.push(SitemapEntry::new(Cow::Owned(permalink), None)) + } + } + + let mut taxonomies_entries = vec![]; + for taxonomy in taxonomies { + let name = &taxonomy.kind.name; + let mut terms = vec![]; + terms.push(SitemapEntry::new(Cow::Owned(config.make_permalink(name)), None)); + for item in &taxonomy.items { + terms.push(SitemapEntry::new( + Cow::Owned(config.make_permalink(&format!("{}/{}", name, item.slug))), + None, + )); + + if taxonomy.kind.is_paginated() { + let number_pagers = (item.pages.len() as f64 + / taxonomy.kind.paginate_by.unwrap() as f64) + .ceil() as isize; + for i in 1..=number_pagers { + let permalink = config.make_permalink(&format!( + "{}/{}/{}/{}", + name, + item.slug, + taxonomy.kind.paginate_path(), + i + )); + terms.push(SitemapEntry::new(Cow::Owned(permalink), None)) + } + } + } + + taxonomies_entries.push(terms); + } + + let mut all_sitemap_entries = HashSet::new(); + for p in pages { + all_sitemap_entries.insert(p); + } + for s in sections { + all_sitemap_entries.insert(s); + } + for terms in taxonomies_entries { + for term in terms { + all_sitemap_entries.insert(term); + } + } + + all_sitemap_entries.into_iter().collect::>() +} diff --git a/docs/content/documentation/templates/sitemap.md b/docs/content/documentation/templates/sitemap.md index 13119c8b..74f0f5a1 100644 --- a/docs/content/documentation/templates/sitemap.md +++ b/docs/content/documentation/templates/sitemap.md @@ -25,6 +25,7 @@ A `SitemapEntry` has the following fields: ```ts permalink: String; date: String?; +extra: Hashmap?; ``` The `split_sitemap_index.xml` also gets a single variable: From 283a15cd932a9487237cad576a3bebd21cda2c53 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Tue, 19 Mar 2019 21:35:49 +0100 Subject: [PATCH 65/74] Fix some deprecation notice of pest --- Cargo.lock | 7 ++++--- components/rendering/Cargo.toml | 2 +- components/rendering/src/shortcode.rs | 16 ++++++++-------- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7153ac4b..dc6b44a5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1638,11 +1638,12 @@ dependencies = [ [[package]] name = "pulldown-cmark" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "getopts 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "unicase 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1872,7 +1873,7 @@ dependencies = [ "link_checker 0.1.0", "pest 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "pest_derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pulldown-cmark 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pulldown-cmark 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3219,7 +3220,7 @@ dependencies = [ "checksum precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" "checksum proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "4d317f9caece796be1980837fd5cb3dfec5613ebdb04ad0956deea83ce168915" "checksum pulldown-cmark 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "eef52fac62d0ea7b9b4dc7da092aa64ea7ec3d90af6679422d3d7e0e14b6ee15" -"checksum pulldown-cmark 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "426175701ce727edeeef0a56535d88cc62afbdd977933e82be610044d645c4ec" +"checksum pulldown-cmark 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa4987312f985c300f4d68d208a9e4b646268140b6dbe83388c09652cc19ed3f" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" "checksum quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd8e04bd9c52e0342b406469d494fcb033be4bdbe5c606016defbb1681411e1" "checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" diff --git a/components/rendering/Cargo.toml b/components/rendering/Cargo.toml index ef38a2c1..a4a6408a 100644 --- a/components/rendering/Cargo.toml +++ b/components/rendering/Cargo.toml @@ -6,7 +6,7 @@ authors = ["Vincent Prouillet "] [dependencies] tera = { version = "1.0.0-alpha.3", features = ["preserve_order"] } syntect = "3" -pulldown-cmark = "0.3" +pulldown-cmark = "0.4" slug = "0.1" serde = "1" serde_derive = "1" diff --git a/components/rendering/src/shortcode.rs b/components/rendering/src/shortcode.rs index 4bf7c691..6a47dafd 100644 --- a/components/rendering/src/shortcode.rs +++ b/components/rendering/src/shortcode.rs @@ -58,7 +58,7 @@ fn parse_shortcode_call(pair: Pair) -> (String, Map) { for p in pair.into_inner() { match p.as_rule() { Rule::ident => { - name = Some(p.into_span().as_str().to_string()); + name = Some(p.as_span().as_str().to_string()); } Rule::kwarg => { let mut arg_name = None; @@ -66,7 +66,7 @@ fn parse_shortcode_call(pair: Pair) -> (String, Map) { for p2 in p.into_inner() { match p2.as_rule() { Rule::ident => { - arg_name = Some(p2.into_span().as_str().to_string()); + arg_name = Some(p2.as_span().as_str().to_string()); } Rule::literal => { arg_val = Some(parse_literal(p2)); @@ -169,7 +169,7 @@ pub fn render_shortcodes(content: &str, context: &RenderContext) -> Result res.push_str(p.into_span().as_str()), + Rule::text => res.push_str(p.as_span().as_str()), Rule::inline_shortcode => { let (name, args) = parse_shortcode_call(p); res.push_str(&render_shortcode(&name, &args, context, None)?); @@ -179,12 +179,12 @@ pub fn render_shortcodes(content: &str, context: &RenderContext) -> Result { res.push_str( - &p.into_span().as_str().replacen("{{/*", "{{", 1).replacen("*/}}", "}}", 1), + &p.as_span().as_str().replacen("{{/*", "{{", 1).replacen("*/}}", "}}", 1), ); } Rule::ignored_shortcode_with_body => { @@ -192,13 +192,13 @@ pub fn render_shortcodes(content: &str, context: &RenderContext) -> Result { res.push_str( - &p2.into_span() + &p2.as_span() .as_str() .replacen("{%/*", "{%", 1) .replacen("*/%}", "%}", 1), ); } - Rule::text_in_ignored_body_sc => res.push_str(p2.into_span().as_str()), + Rule::text_in_ignored_body_sc => res.push_str(p2.as_span().as_str()), _ => unreachable!("Got something weird in an ignored shortcode: {:?}", p2), } } @@ -230,7 +230,7 @@ mod tests { panic!(); } assert!(res.is_ok()); - assert_eq!(res.unwrap().last().unwrap().into_span().end(), $input.len()); + assert_eq!(res.unwrap().last().unwrap().as_span().end(), $input.len()); }; } From e00cd3e1b09025176657507ac6a164bb38a0f031 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Fri, 22 Mar 2019 20:34:02 +0100 Subject: [PATCH 66/74] Always default to plain for load_data on unknown extensions --- Cargo.lock | 61 +++++++------------ .../templates/src/global_fns/load_data.rs | 4 +- 2 files changed, 25 insertions(+), 40 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index dc6b44a5..a1c249b0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -910,7 +910,7 @@ dependencies = [ [[package]] name = "hyper-tls" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1073,16 +1073,6 @@ name = "libc" version = "0.2.50" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "libflate" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "library" version = "0.1.0" @@ -1119,17 +1109,12 @@ name = "link_checker" version = "0.1.0" dependencies = [ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "reqwest 0.9.11 (registry+https://github.com/rust-lang/crates.io-index)", + "reqwest 0.9.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "linked-hash-map" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "linked-hash-map" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1151,10 +1136,10 @@ dependencies = [ [[package]] name = "lru-cache" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "linked-hash-map 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1310,9 +1295,9 @@ dependencies = [ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl 0.10.19 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl 0.10.20 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.42 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.43 (registry+https://github.com/rust-lang/crates.io-index)", "schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "security-framework 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "security-framework-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1449,7 +1434,7 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.19" +version = "0.10.20" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1457,7 +1442,7 @@ dependencies = [ "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.42 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1467,7 +1452,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "openssl-sys" -version = "0.9.42" +version = "0.9.43" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1886,17 +1871,17 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.9.11" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)", + "flate2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "http 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.12.25 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper-tls 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libflate 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", "mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2302,7 +2287,7 @@ dependencies = [ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "library 0.1.0", "pulldown-cmark 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "reqwest 0.9.11 (registry+https://github.com/rust-lang/crates.io-index)", + "reqwest 0.9.12 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "tera 1.0.0-beta.3 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2662,7 +2647,7 @@ dependencies = [ "ipconfig 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "resolv-conf 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3024,7 +3009,7 @@ name = "yaml-rust" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3144,7 +3129,7 @@ dependencies = [ "checksum humansize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6cab2627acfc432780848602f3f558f7e9dd427352224b0d9324025796d2a5e" "checksum humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca7e5f2e110db35f93b837c81797f3714500b81d517bf20c431b16d3ca4f114" "checksum hyper 0.12.25 (registry+https://github.com/rust-lang/crates.io-index)" = "7d5b6658b016965ae301fa995306db965c93677880ea70765a84235a96eae896" -"checksum hyper-tls 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "32cd73f14ad370d3b4d4b7dce08f69b81536c82e39fcc89731930fe5788cd661" +"checksum hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3a800d6aa50af4b5850b2b0f659625ce9504df908e9733b635720483be26174f" "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" "checksum ignore 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ad03ca67dc12474ecd91fdb94d758cbd20cb4e7a78ebe831df26a9b7511e1162" "checksum image 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)" = "52fb0666a1273dac46f9725aa4859bcd5595fc3554cf3495051b4de8db745e7d" @@ -3161,13 +3146,11 @@ dependencies = [ "checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" "checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" "checksum libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)" = "aab692d7759f5cd8c859e169db98ae5b52c924add2af5fbbca11d12fefb567c1" -"checksum libflate 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)" = "7346a83e8a2c3958d44d24225d905385dc31fc16e89dffb356c457b278914d20" "checksum line-wrap 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9" -"checksum linked-hash-map 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7860ec297f7008ff7a1e3382d7f7e1dcd69efc94751a2284bafc3d013c2aa939" -"checksum linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "70fb39025bc7cdd76305867c4eccf2f2dcf6e9a57f5b21a93e1c2d86cd03ec9e" +"checksum linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83" "checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" "checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" -"checksum lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4d06ff7ff06f729ce5f4e227876cb88d10bc59cd4ae1e09fbb2bde15c850dc21" +"checksum lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" "checksum lzw 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7d947cbb889ed21c2a84be6ffbaebf5b4e0f4340638cba0444907e38b56be084" "checksum mac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" "checksum maplit 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "08cbb6b4fef96b6d77bfc40ec491b1690c779e77b05cd9f07f787ed376fd4c43" @@ -3199,9 +3182,9 @@ dependencies = [ "checksum num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a23f0ed30a54abaa0c7e83b1d2d87ada7c3c23078d1d87815af3e3b6385fbba" "checksum onig 4.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a646989adad8a19f49be2090374712931c3a59835cb5277b4530f48b417f26e7" "checksum onig_sys 69.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388410bf5fa341f10e58e6db3975f4bea1ac30247dd79d37a9e5ced3cb4cc3b0" -"checksum openssl 0.10.19 (registry+https://github.com/rust-lang/crates.io-index)" = "84321fb9004c3bce5611188a644d6171f895fa2889d155927d528782edb21c5d" +"checksum openssl 0.10.20 (registry+https://github.com/rust-lang/crates.io-index)" = "5a0d6b781aac4ac1bd6cafe2a2f0ad8c16ae8e1dd5184822a16c50139f8838d9" "checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" -"checksum openssl-sys 0.9.42 (registry+https://github.com/rust-lang/crates.io-index)" = "cb534d752bf98cf363b473950659ac2546517f9c6be9723771614ab3f03bbc9e" +"checksum openssl-sys 0.9.43 (registry+https://github.com/rust-lang/crates.io-index)" = "33c86834957dd5b915623e94f2f4ab2c70dd8f6b70679824155d5ae21dbd495d" "checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" "checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" "checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" @@ -3243,7 +3226,7 @@ dependencies = [ "checksum regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "53ee8cfdddb2e0291adfb9f13d31d3bbe0a03c9a402c01b1e24188d86c35b24f" "checksum regex-syntax 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "8c2f35eedad5295fdf00a63d7d4b238135723f92b434ec06774dad15c7ab0861" "checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" -"checksum reqwest 0.9.11 (registry+https://github.com/rust-lang/crates.io-index)" = "e542d9f077c126af32536b6aacc75bb7325400eab8cd0743543be5d91660780d" +"checksum reqwest 0.9.12 (registry+https://github.com/rust-lang/crates.io-index)" = "962fa64e670e70b9d3a81c3688832eb59293ef490e0af5ad169763f62016ac5e" "checksum resolv-conf 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b263b4aa1b5de9ffc0054a2386f96992058bb6870aab516f8cdeb8a667d56dcb" "checksum rust-stemmers 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05928c187b85b38f6b98db43057a24f0245163635a5ce6325a4f77a833d646aa" "checksum rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "adacaae16d02b6ec37fdc7acfcddf365978de76d1983d3ee22afc260e1ca9619" diff --git a/components/templates/src/global_fns/load_data.rs b/components/templates/src/global_fns/load_data.rs index 9e6449c1..e7b0dbf2 100644 --- a/components/templates/src/global_fns/load_data.rs +++ b/components/templates/src/global_fns/load_data.rs @@ -163,7 +163,9 @@ fn get_output_format_from_args( } else { "plain" }; - OutputFormat::from_str(from_extension) + + // Always default to Plain if we don't know what it is + OutputFormat::from_str(from_extension).or_else(|_| Ok(OutputFormat::Plain)) } /// A Tera function to load data from a file or from a URL From 97e796a724dbbdbac48969a8e469dd7c7744dcdb Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Fri, 22 Mar 2019 20:44:06 +0100 Subject: [PATCH 67/74] More tests for load_data --- .../templates/src/global_fns/load_data.rs | 44 +++++++++++++++++++ components/utils/test-files/test.css | 1 + 2 files changed, 45 insertions(+) create mode 100644 components/utils/test-files/test.css diff --git a/components/templates/src/global_fns/load_data.rs b/components/templates/src/global_fns/load_data.rs index e7b0dbf2..b8f053c4 100644 --- a/components/templates/src/global_fns/load_data.rs +++ b/components/templates/src/global_fns/load_data.rs @@ -155,6 +155,9 @@ fn get_output_format_from_args( ); if let Some(format) = format_arg { + if format == "plain" { + return Ok(OutputFormat::Plain); + } return OutputFormat::from_str(&format); } @@ -434,6 +437,47 @@ mod tests { ); } + #[test] + fn unknown_extension_defaults_to_plain() { + let static_fn = LoadData::new(PathBuf::from("../utils/test-files")); + let mut args = HashMap::new(); + args.insert("path".to_string(), to_value("test.css").unwrap()); + let result = static_fn.call(&args.clone()).unwrap(); + + assert_eq!( + result, + ".hello {}\n", + ); + } + + #[test] + fn can_override_known_extension_with_format() { + let static_fn = LoadData::new(PathBuf::from("../utils/test-files")); + let mut args = HashMap::new(); + args.insert("path".to_string(), to_value("test.csv").unwrap()); + args.insert("format".to_string(), to_value("plain").unwrap()); + let result = static_fn.call(&args.clone()).unwrap(); + + assert_eq!( + result, + "Number,Title\n1,Gutenberg\n2,Printing", + ); + } + + #[test] + fn will_use_format_on_unknown_extension() { + let static_fn = LoadData::new(PathBuf::from("../utils/test-files")); + let mut args = HashMap::new(); + args.insert("path".to_string(), to_value("test.css").unwrap()); + args.insert("format".to_string(), to_value("plain").unwrap()); + let result = static_fn.call(&args.clone()).unwrap(); + + assert_eq!( + result, + ".hello {}\n", + ); + } + #[test] fn can_load_csv() { let static_fn = LoadData::new(PathBuf::from("../utils/test-files")); diff --git a/components/utils/test-files/test.css b/components/utils/test-files/test.css new file mode 100644 index 00000000..3a461fe2 --- /dev/null +++ b/components/utils/test-files/test.css @@ -0,0 +1 @@ +.hello {} From 1815155c1d48460348be165a4044cbd936f529db Mon Sep 17 00:00:00 2001 From: Blake Smith Date: Sat, 23 Mar 2019 20:14:01 -0500 Subject: [PATCH 68/74] Allow default base-path command line option to be set for building and serving --- Cargo.lock | 1 + components/site/src/lib.rs | 2 +- .../getting-started/cli-usage.md | 9 +++++ src/cli.rs | 10 ++++++ src/cmd/build.rs | 11 ++++-- src/cmd/serve.rs | 35 +++++++++++-------- src/main.rs | 18 ++++++++-- 7 files changed, 66 insertions(+), 20 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a1c249b0..b94fc047 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,5 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. + [[package]] name = "MacTypes-sys" version = "2.1.0" diff --git a/components/site/src/lib.rs b/components/site/src/lib.rs index ea2467a4..57ba91d1 100644 --- a/components/site/src/lib.rs +++ b/components/site/src/lib.rs @@ -66,7 +66,7 @@ pub struct Site { impl Site { /// Parse a site at the given path. Defaults to the current dir - /// Passing in a path is only used in tests + /// Passing in a path is possible using the `base-path` command line build option pub fn new>(path: P, config_file: &str) -> Result { let path = path.as_ref(); let mut config = get_config(path, config_file); diff --git a/docs/content/documentation/getting-started/cli-usage.md b/docs/content/documentation/getting-started/cli-usage.md index 95267f53..4b247cad 100644 --- a/docs/content/documentation/getting-started/cli-usage.md +++ b/docs/content/documentation/getting-started/cli-usage.md @@ -36,6 +36,14 @@ $ zola build --base-url $DEPLOY_URL This is useful for example when you want to deploy previews of a site to a dynamic URL, such as Netlify deploy previews. +You can override the default `base_path` by passing a new directory to the `base-path` flag. If no `base-path` flag +is provided, zola defaults to your current working directory. This is useful if your zola project is located in +a different directory from where you're executing zola from. + +```bash +$ zola build --base-path /path/to/zola/site +``` + You can override the default output directory 'public' by passing a other value to the `output-dir` flag. ```bash @@ -67,6 +75,7 @@ $ zola serve --interface 0.0.0.0 $ zola serve --interface 0.0.0.0 --port 2000 $ zola serve --interface 0.0.0.0 --base-url 127.0.0.1 $ zola serve --interface 0.0.0.0 --port 2000 --output-dir www/public +$ zola serve --interface 0.0.0.0 --port 2000 --base-path mysite/ --output-dir mysite/www/public $ zola serve --watch-only ``` diff --git a/src/cli.rs b/src/cli.rs index 304d135b..500aa042 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -30,6 +30,11 @@ pub fn build_cli() -> App<'static, 'static> { .long("base-url") .takes_value(true) .help("Force the base URL to be that value (default to the one in config.toml)"), + Arg::with_name("base_path") + .short("b") + .long("base-path") + .takes_value(true) + .help("Force the base site path to a certain directory [default: the current working directory]"), Arg::with_name("output_dir") .short("o") .long("output-dir") @@ -56,6 +61,11 @@ pub fn build_cli() -> App<'static, 'static> { .default_value("public") .takes_value(true) .help("Outputs the generated site in the given path"), + Arg::with_name("base_path") + .short("b") + .long("base-path") + .takes_value(true) + .help("Force the base site path to a certain directory [default: the current working directory]"), Arg::with_name("base_url") .short("u") .long("base-url") diff --git a/src/cmd/build.rs b/src/cmd/build.rs index aca974e2..6bc8dc8d 100644 --- a/src/cmd/build.rs +++ b/src/cmd/build.rs @@ -1,12 +1,19 @@ use std::env; +use std::path::PathBuf; use errors::Result; use site::Site; use console; -pub fn build(config_file: &str, base_url: Option<&str>, output_dir: &str) -> Result<()> { - let mut site = Site::new(env::current_dir().unwrap(), config_file)?; +pub fn build( + config_file: &str, + base_path: Option<&str>, + base_url: Option<&str>, + output_dir: &str, +) -> Result<()> { + let bp = base_path.map(PathBuf::from).unwrap_or(env::current_dir().unwrap()); + let mut site = Site::new(bp, config_file)?; site.set_output_path(output_dir); if let Some(b) = base_url { site.set_base_url(b.to_string()); diff --git a/src/cmd/serve.rs b/src/cmd/serve.rs index 07544a06..50894c36 100644 --- a/src/cmd/serve.rs +++ b/src/cmd/serve.rs @@ -114,14 +114,15 @@ fn rebuild_done_handling(broadcaster: &Option, res: Result<()>, reload_p } } -fn create_new_site( +fn create_new_site>( interface: &str, port: u16, output_dir: &str, + base_path: P, base_url: &str, config_file: &str, ) -> Result<(Site, String)> { - let mut site = Site::new(env::current_dir().unwrap(), config_file)?; + let mut site = Site::new(base_path, config_file)?; let base_address = format!("{}:{}", base_url, port); let address = format!("{}:{}", interface, port); @@ -166,12 +167,15 @@ pub fn serve( interface: &str, port: u16, output_dir: &str, + base_path: Option<&str>, base_url: &str, config_file: &str, watch_only: bool, ) -> Result<()> { let start = Instant::now(); - let (mut site, address) = create_new_site(interface, port, output_dir, base_url, config_file)?; + let bp = base_path.map(PathBuf::from).unwrap_or(env::current_dir().unwrap()); + let (mut site, address) = + create_new_site(interface, port, output_dir, bp.clone(), base_url, config_file)?; console::report_elapsed_time(start); // Setup watchers @@ -180,28 +184,28 @@ pub fn serve( let (tx, rx) = channel(); let mut watcher = watcher(tx, Duration::from_secs(1)).unwrap(); watcher - .watch("content/", RecursiveMode::Recursive) + .watch(bp.join("content/"), RecursiveMode::Recursive) .map_err(|e| ZolaError::chain("Can't watch the `content` folder. Does it exist?", e))?; watcher - .watch(config_file, RecursiveMode::Recursive) + .watch(bp.join(config_file), RecursiveMode::Recursive) .map_err(|e| ZolaError::chain("Can't watch the `config` file. Does it exist?", e))?; - if Path::new("static").exists() { + if bp.join("static").exists() { watching_static = true; watcher - .watch("static/", RecursiveMode::Recursive) + .watch(bp.join("static/"), RecursiveMode::Recursive) .map_err(|e| ZolaError::chain("Can't watch the `static` folder.", e))?; } - if Path::new("templates").exists() { + if bp.join("templates").exists() { watching_templates = true; watcher - .watch("templates/", RecursiveMode::Recursive) + .watch(bp.join("templates/"), RecursiveMode::Recursive) .map_err(|e| ZolaError::chain("Can't watch the `templates` folder.", e))?; } // Sass support is optional so don't make it an error to no have a sass folder - let _ = watcher.watch("sass/", RecursiveMode::Recursive); + let _ = watcher.watch(bp.join("sass/"), RecursiveMode::Recursive); let ws_address = format!("{}:{}", interface, site.live_reload.unwrap()); let output_path = Path::new(output_dir).to_path_buf(); @@ -258,8 +262,6 @@ pub fn serve( None }; - let pwd = env::current_dir().unwrap(); - let mut watchers = vec!["content", "config.toml"]; if watching_static { watchers.push("static"); @@ -273,7 +275,7 @@ pub fn serve( println!( "Listening for changes in {}{}{{{}}}", - pwd.display(), + bp.display(), MAIN_SEPARATOR, watchers.join(", ") ); @@ -349,7 +351,8 @@ pub fn serve( if path.is_file() && is_temp_file(&path) { continue; } - let (change_kind, partial_path) = detect_change_kind(&pwd, &path); + let (change_kind, partial_path) = + detect_change_kind(&bp.canonicalize().unwrap(), &path); // We only care about changes in non-empty folders if path.is_dir() && is_folder_empty(&path) { @@ -381,6 +384,7 @@ pub fn serve( interface, port, output_dir, + bp.clone(), base_url, config_file, ) @@ -401,7 +405,7 @@ pub fn serve( ); let start = Instant::now(); - match detect_change_kind(&pwd, &path) { + match detect_change_kind(&bp.canonicalize().unwrap(), &path) { (ChangeKind::Content, _) => { console::info(&format!("-> Content changed {}", path.display())); // Force refresh @@ -420,6 +424,7 @@ pub fn serve( interface, port, output_dir, + bp.clone(), base_url, config_file, ) diff --git a/src/main.rs b/src/main.rs index 987e08bc..2ad43bac 100644 --- a/src/main.rs +++ b/src/main.rs @@ -46,7 +46,12 @@ fn main() { console::info("Building site..."); let start = Instant::now(); let output_dir = matches.value_of("output_dir").unwrap(); - match cmd::build(config_file, matches.value_of("base_url"), output_dir) { + match cmd::build( + config_file, + matches.value_of("base_path"), + matches.value_of("base_url"), + output_dir, + ) { Ok(()) => console::report_elapsed_time(start), Err(e) => { console::unravel_errors("Failed to build the site", &e); @@ -79,9 +84,18 @@ fn main() { } let watch_only = matches.is_present("watch_only"); let output_dir = matches.value_of("output_dir").unwrap(); + let base_path = matches.value_of("base_path"); let base_url = matches.value_of("base_url").unwrap(); console::info("Building site..."); - match cmd::serve(interface, port, output_dir, base_url, config_file, watch_only) { + match cmd::serve( + interface, + port, + output_dir, + base_path, + base_url, + config_file, + watch_only, + ) { Ok(()) => (), Err(e) => { console::unravel_errors("", &e); From 6822c081f6d26707f13e152a5e867d467591cee9 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Mon, 25 Mar 2019 10:00:11 +0100 Subject: [PATCH 69/74] Update changelog --- CHANGELOG.md | 1 + Cargo.lock | 81 ++++++++++++++++++++++++++-------------------------- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4dfaace1..1908ed2c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ rendering it and not anymore on the `page`/`section` variable - `load_data` now defaults to loading file as plain text, unless `format` is passed or the extension matches csv/toml/json - Sitemap entries get an additional `extra` field for pages only +- Add a `base-path` command line option to `build` and `serve` ## 0.5.1 (2018-12-14) diff --git a/Cargo.lock b/Cargo.lock index b94fc047..31ce1aec 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,5 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. - [[package]] name = "MacTypes-sys" version = "2.1.0" @@ -25,9 +24,9 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-signal 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -35,7 +34,7 @@ dependencies = [ "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "trust-dns-proto 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "trust-dns-resolver 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "uuid 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -51,9 +50,9 @@ dependencies = [ "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-current-thread 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -101,8 +100,8 @@ dependencies = [ "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-current-thread 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -899,12 +898,12 @@ dependencies = [ "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1339,7 +1338,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "nom" -version = "4.2.2" +version = "4.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1890,13 +1889,13 @@ dependencies = [ "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "uuid 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2383,7 +2382,7 @@ dependencies = [ [[package]] name = "tokio" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2391,14 +2390,14 @@ dependencies = [ "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-current-thread 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-sync 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-trace-core 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2417,16 +2416,16 @@ dependencies = [ [[package]] name = "tokio-current-thread" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-executor" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2440,7 +2439,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2466,7 +2465,7 @@ dependencies = [ "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-sync 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2481,7 +2480,7 @@ dependencies = [ "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", "signal-hook 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2511,7 +2510,7 @@ dependencies = [ [[package]] name = "tokio-threadpool" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2522,7 +2521,7 @@ dependencies = [ "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2533,7 +2532,7 @@ dependencies = [ "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2605,7 +2604,7 @@ dependencies = [ "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "socket2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2628,7 +2627,7 @@ dependencies = [ "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "socket2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2651,7 +2650,7 @@ dependencies = [ "lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "resolv-conf 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "trust-dns-proto 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2802,7 +2801,7 @@ dependencies = [ [[package]] name = "uuid" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2831,7 +2830,7 @@ name = "v_escape_derive" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "nom 4.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2842,7 +2841,7 @@ name = "v_escape_derive" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "nom 4.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.15.29 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3173,7 +3172,7 @@ dependencies = [ "checksum new_debug_unreachable 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f40f005c60db6e03bae699e414c58bf9aa7ea02a2d0b9bfbcf19286cc4c82b30" "checksum nix 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d37e713a259ff641624b6cb20e3b12b2952313ba36b6823c0f16e6cfd9e5de17" "checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" -"checksum nom 4.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "22293d25d3f33a8567cc8a1dc20f40c7eeb761ce83d0fcca059858580790cac3" +"checksum nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" "checksum notify 4.0.10 (registry+https://github.com/rust-lang/crates.io-index)" = "abb1581693e44d8a0ec347ef12289625063f52a1dddc3f3c9befd5fc59e88943" "checksum num-derive 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d9fe8fcafd1b86a37ce8a1cfa15ae504817e0c8c2e7ad42767371461ac1d316d" "checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" @@ -3278,17 +3277,17 @@ dependencies = [ "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" "checksum tiff 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1e4834f28a0330cb9f3f2c87d2649dca723cb33802e2bdcf18da32759fbec7ce" "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" -"checksum tokio 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "1021bb1f4150435ab8f222eb7ed37c60b2d57037def63ba43085a79f387512d7" +"checksum tokio 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "65641e515a437b308ab131a82ce3042ff9795bef5d6c5a9be4eb24195c417fd9" "checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" -"checksum tokio-current-thread 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c756b04680eea21902a46fca4e9f410a2332c04995af590e07ff262e2193a9a3" -"checksum tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "30c6dbf2d1ad1de300b393910e8a3aa272b724a400b6531da03eed99e329fbf0" +"checksum tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d16217cad7f1b840c5a97dfb3c43b0c871fef423a6e8d2118c604e843662a443" +"checksum tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "83ea44c6c0773cc034771693711c35c677b4b5a4b21b9e7071704c54de7d555e" "checksum tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "3fe6dc22b08d6993916647d108a1a7d15b9cd29c4f4496c62b92c45b5041b7af" "checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926" "checksum tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6af16bfac7e112bea8b0442542161bfc41cbfa4466b580bdda7d18cb88b911ce" "checksum tokio-signal 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "dd6dc5276ea05ce379a16de90083ec80836440d5ef8a6a39545a3207373b8296" "checksum tokio-sync 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "fda385df506bf7546e70872767f71e81640f1f251bdf2fd8eb81a0eaec5fe022" "checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" -"checksum tokio-threadpool 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "742e511f6ce2298aeb86fc9ea0d8df81c2388c6ebae3dc8a7316e8c9df0df801" +"checksum tokio-threadpool 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "ec5759cf26cf9659555f36c431b515e3d05f66831741c85b4b5d5dfb9cf1323c" "checksum tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "2910970404ba6fa78c5539126a9ae2045d62e3713041e447f695f41405a120c6" "checksum tokio-trace-core 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "350c9edade9830dc185ae48ba45667a445ab59f6167ef6d0254ec9d2430d9dd3" "checksum tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "66268575b80f4a4a710ef83d087fdfeeabdce9b74c797535fbac18a2cb906e92" @@ -3318,7 +3317,7 @@ dependencies = [ "checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" "checksum utf-8 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)" = "05e42f7c18b8f902290b009cde6d651262f956c98bc51bca4cd1d511c9cd85c7" "checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737" -"checksum uuid 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0238db0c5b605dd1cf51de0f21766f97fba2645897024461d6a00c036819a768" +"checksum uuid 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "600ef8213e9f8a0ac1f876e470e90780ae0478eabce7f76aff41b0f4ef0fd5c0" "checksum v_escape 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c8b50688edb86f4c092a1a9fe8bda004b0faa3197100897653809e97e09a2814" "checksum v_escape 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8865501b78eef9193c1b45486acf18ba889e5662eba98854d6fc59d8ecf3542d" "checksum v_escape_derive 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7cd994c63b487fef7aad31e5394ec04b9e24de7b32ea5251c9fb499cd2cbf44c" From 50caf1c90c2ea055dc720440bce6cd158cec3b38 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Mon, 25 Mar 2019 23:15:51 +0100 Subject: [PATCH 70/74] Fix typo in docs Closes #636 --- CHANGELOG.md | 2 +- docs/content/documentation/templates/overview.md | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1908ed2c..d95f2220 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## 0.6.0 (unreleased) +## 0.6.0 (2019-03-25) ### Breaking - `earlier/later` and `lighter/heavier` are not set anymore on pages when rendering diff --git a/docs/content/documentation/templates/overview.md b/docs/content/documentation/templates/overview.md index be7992d2..5659f205 100644 --- a/docs/content/documentation/templates/overview.md +++ b/docs/content/documentation/templates/overview.md @@ -142,11 +142,11 @@ the value should be the same as the one in the front-matter, not the slugified v Gets the whole taxonomy of a specific kind. ```jinja2 -{% set categories = get_taxonomy_url(kind="categories") %} +{% set categories = get_taxonomy(kind="categories") %} ``` ### `load_data` -Loads data from a file or URL. Supported file types include *toml*, *json* and *csv*. +Loads data from a file or URL. Supported file types include *toml*, *json* and *csv*. Any other file type will be loaded as plain text. The `path` argument specifies the path to the data file relative to your base directory, where your `config.toml` is. @@ -214,8 +214,8 @@ By default, the response body will be returned with no parsing. This can be chan #### Data Caching -Data file loading and remote requests are cached in memory during build, so multiple requests aren't made to the same endpoint. -URLs are cached based on the URL, and data files are cached based on the files modified time. +Data file loading and remote requests are cached in memory during build, so multiple requests aren't made to the same endpoint. +URLs are cached based on the URL, and data files are cached based on the files modified time. The format is also taken into account when caching, so a request will be sent twice if it's loaded with 2 different formats. ### `trans` From 78c8f9cd59f379952869057f4fd8b673bf0ebfb6 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Mon, 25 Mar 2019 23:17:36 +0100 Subject: [PATCH 71/74] Add note about Powershell ISE Closes #530 --- docs/content/documentation/getting-started/installation.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/content/documentation/getting-started/installation.md b/docs/content/documentation/getting-started/installation.md index 353cae78..4dd5f6d1 100644 --- a/docs/content/documentation/getting-started/installation.md +++ b/docs/content/documentation/getting-started/installation.md @@ -44,6 +44,8 @@ And [Chocolatey](https://chocolatey.org/): $ choco install zola ``` +Zola does not work in PowerShell ISE. + ## From source To build it from source, you will need to have Git, [Rust (at least 1.31) and Cargo](https://www.rust-lang.org/) installed. You will also need additional dependencies to compile [libsass](https://github.com/sass/libsass): From 33d4cf14fde5a41c42ccc270d16612bbf7cd04ee Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Tue, 26 Mar 2019 12:32:48 +0100 Subject: [PATCH 72/74] Update table-of-contents.md --- docs/content/documentation/content/table-of-contents.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/content/documentation/content/table-of-contents.md b/docs/content/documentation/content/table-of-contents.md index 3325b0a4..e93c9c00 100644 --- a/docs/content/documentation/content/table-of-contents.md +++ b/docs/content/documentation/content/table-of-contents.md @@ -5,7 +5,7 @@ weight = 60 Each page/section will automatically generate a table of contents for itself based on the headers present. -It is available in the template through `section.toc` and `page.toc`. +It is available in the template through the `toc` variable. You can view the [template variables](./documentation/templates/pages-sections.md#table-of-contents) documentation for information on its structure. @@ -13,7 +13,7 @@ Here is an example of using that field to render a 2-level table of contents: ```jinja2
    -{% for h1 in page.toc %} +{% for h1 in toc %}
  • {{ h1.title }} {% if h1.children %} From 911396c57f93d2c07b360a480cb4af0b408b140e Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Tue, 26 Mar 2019 19:27:13 +0100 Subject: [PATCH 73/74] v0.6.1 --- CHANGELOG.md | 2 ++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d95f2220..2de6127e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Changelog +## 0.6.1 (unreleased) + ## 0.6.0 (2019-03-25) ### Breaking diff --git a/Cargo.lock b/Cargo.lock index 31ce1aec..f6813af5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3014,7 +3014,7 @@ dependencies = [ [[package]] name = "zola" -version = "0.6.0" +version = "0.6.1" dependencies = [ "actix-web 0.7.18 (registry+https://github.com/rust-lang/crates.io-index)", "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/Cargo.toml b/Cargo.toml index 9897ba3b..97edc3d1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zola" -version = "0.6.0" +version = "0.6.1" authors = ["Vincent Prouillet "] license = "MIT" readme = "README.md" From c2f682ede65bc1c5db220a85777b2e441a48f6ef Mon Sep 17 00:00:00 2001 From: sebastien Date: Tue, 2 Apr 2019 18:31:50 +0200 Subject: [PATCH 74/74] specify proper sitemap schema --- components/templates/src/builtins/sitemap.xml | 2 +- components/templates/src/builtins/split_sitemap_index.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/components/templates/src/builtins/sitemap.xml b/components/templates/src/builtins/sitemap.xml index 6d55d37b..2154a5b6 100644 --- a/components/templates/src/builtins/sitemap.xml +++ b/components/templates/src/builtins/sitemap.xml @@ -1,4 +1,4 @@ - + {% for sitemap_entry in entries %} {{ sitemap_entry.permalink | safe }} diff --git a/components/templates/src/builtins/split_sitemap_index.xml b/components/templates/src/builtins/split_sitemap_index.xml index 1b883e4f..171665cc 100644 --- a/components/templates/src/builtins/split_sitemap_index.xml +++ b/components/templates/src/builtins/split_sitemap_index.xml @@ -1,4 +1,4 @@ - + {% for sitemap in sitemaps %} {{ sitemap }}