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 ca210d2..3205eb8 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 c21e58b..368901a 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("")); - } - } - } 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() + let fixed_link = match fix_link(&link, context) { + Ok(fixed_link) => fixed_link, + Err(err) => { + error = Some(err); + return Event::Html(Borrowed("")) } - } 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 | 38 ++++++++++++++++++-------- components/rendering/tests/markdown.rs | 27 ++++++++++++++++++ 2 files changed, 53 insertions(+), 12 deletions(-) diff --git a/components/rendering/src/markdown.rs b/components/rendering/src/markdown.rs index 368901a..926d0c9 100644 --- a/components/rendering/src/markdown.rs +++ b/components/rendering/src/markdown.rs @@ -82,21 +82,35 @@ fn fix_link(link: &str, context: &RenderContext) -> Result { Ok(result) } +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::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, + Event::Start(tag) => start_tag(temp_header, tag), + Event::End(tag) => end_tag(temp_header, tag), + _ => false, } - true } pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result { @@ -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 926d0c9..6b79077 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 6b79077..dc409ce 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 4838b6a..6149e4f 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 91bc573..9c2d8b2 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 45a6626..fef7f3a 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 a1a24ea..95267f5 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 0d998f5..df0e952 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 8e556df..57c8284 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 f270890..6b74f9c 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 a7fbb4c..2308cbc 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 f347bc7..b1cab79 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 cba0002..9023a73 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 24ba393..310b265 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 5dd1aaa..d788972 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 20c0f98..b446fa0 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 0a6635a..98be3c6 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 bfb19b8..22579a8 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 ee990de..587edd8 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 0000000..5dfaaf8 --- /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 0000000..0c3f8fb --- /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 0000000..3b8116f --- /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 0000000..0c3f8fb --- /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 | 180 +++++++++--------- 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, 167 insertions(+), 143 deletions(-) create mode 100644 components/utils/src/vec.rs diff --git a/components/rendering/src/markdown.rs b/components/rendering/src/markdown.rs index dc409ce..f01eb29 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 context::RenderContext; 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 context::RenderContext; -use table_of_contents::{make_table_of_contents, Header, TempHeader}; +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, - } - true -} +/// get only text in a slice of events +fn get_text(parser_slice: &[Event]) -> String { + let mut title = String::new(); -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, + for event in parser_slice.iter() { + if let Event::Text(text) = event { + title += text; + } } - true + + title } -/// 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, +fn get_header_indexes(events: &[Event]) -> Vec { + let mut header_indexes = vec![]; + + 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 + + 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, parser); + 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 5cc115e..777d5f2 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 6149e4f..a85829d 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 25581e8..8e462cc 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 0000000..eac02dc --- /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 a85829d..aaa108f 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 2acba61..0ce7b32 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 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 ByjuVO literal 21844 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%0AsXB;S9%Xn~Z_ zi;#STUbKWSqcFQv1UV0jH{xCqVB}`qYH=D$ldvT`)GVFwVc-R!MqCyKUqJFx8?sqS z$nijk&D_%@lMu@%(eu%*BCG~NoQ=V&Aj#uZhU6P@vPnuX@Pey^uU+eyD&aOx+4&#J z92Sv-!SA2x7ECFE_8Tq#J(PXm74h7;`ClfjWe*WqA_Df*9C(3r+I`>MgfYO-ob0)r{it><hQbJ7_WwMktO&EbLLa&$!6M62ZAoJRbsoZ6+tz8 zh1w>JoR*15z7}q-S5?n26ZL2Mn<8oE3kg+?!Hx^0Rc0t8U$B?cymO~h{gM1+^5vxt z{wO_QXIwrbU?Mq$;TOKcweR4d(Nr|}W6^b8KKXznnm&!c3gwVEw|;Ho90<_4O5yKP z2&S_itvUI5KSbd)5JioW?wfdxnPDs*)?zX-3VL&z&6yl1`-X&eH0YbJUVow=Ga0+# zI+vB|5a-pV|EnF2#}cRj?93^{^BpFU^TiQGt&kTQTszVXkE7|rC0hQmQ^F5+KGxd^ z89vE|NY^cfgaveN{zQ8-I@#w|V99LQIKGMw)GObxJx@xt?StqlvsqKI14Yyf<{JnC z{q+o$K6r-ea0R|{eR-As$8SsdQC0sQuJgZJz8NQlVox_X$NaGGjUs*(x8mMSwtB#{ z8V?nZe;u`{Gg-R6vb)_8;94b>g7rkpL$(|FQ;PqP4}TSV3hFuU@SCokxT1tm#kl^B zyndjSde(OB_)IQdf==)=r;`X$qTasp*=>_8QH~ycIT~4!|)H*54c~3N- zdEE?+MYFL3bvBU8EmG3CB4!zf-bEz5OFKBN@ZF@ zmGWLr5}Qr~DS7=6o-s%_cfy>;stuT=dn;3on3P6bxF>5yJKnQ=hS*+fN!GqA73;tu zKc4U1X-;O(^6i5c2g$9Dq)DpX!r#~`Ur)bby|q%z2zisgtCEXcQ3FC$pT>@d z$vBDCYHKjWJ0k=oWwi~ZoP0}MnDTB{kCL_<-2YL>@ z;y(gUAy$$=;Hg!aK6jWhkak&(^k2B$MpHK^Mm;^A@ez)Gl%e~TJV1Z?4PSm0awO+K zy%R9~I0?V?1I!~)ThqDx8vtRr$83%1h|vy8}SL zChOvT>w%#7JAln031KZUwRB6yWGM#51_y&BIcu$_P*W)Jb)2- z6P@bVZ%c|NJg)jimNpCSM5=dLsCtnJ=OwJ~^Civ&wJF%at(x^Jnn5wiGit zPhMqICl)>21vgnVE1!N~t}l=Bjk6pcj%^BZ>U1G>y;)!)sdvi&N;Ubo?0l;LN+*Xb zp`a}{?6;B@0P#8g!RosTVdI7vjy~kI?S?hiTq12>-kYNI@3+>2ovG5S4TUCa71PSa z^Yf#)x!<>>_nrMn7Je%Ry(VJ`@uMoDr%t|omvt$|B~`NS@4Iqc>q^dnne+=9jZaY$ zb|99@IuAn*9qt^pQ)=V;a_PiL9y{%UXmO$Sr+iAI-r53xigF6>h|74RwIwp9sVhG* z_cGOzieP=x_1l;~E`8;^)vMl%I6qH->Q?NLF8&Lg0}GQ8jlY+%JAHH zD1=^iA-)ok@4;;&GBW>)&H3zjNq^s0N&jAwp8SDl&3ZQ?sb76GM*S>LV`ro;P*Z&P$@pJ~;>Ah+47oro~^nTjLlD1yq^k?(P zGVcEUk;%E1UcX;+?T?@iPI22<1*SVW6hLp95d|juC<#>DxTgR?1Uaw1^Zx=y;x8$H zV%%^##$X6JaClkHQy`EVexPVbnia_lH%@35-o{XCi|&eONX?OCwL;4PKzeOc(k!tk z0lBCbCMb0`7>a;cBoxUBr#o~0Oq#XXi@zcVhCx=7bw9{<_@;$+d%*6_SMFft+d1Z% z`>7qBF>U#~?fIC8w_MNmJ}^Yb#79N^IT<5Q`o8L~3{9|+vsek=P1rE)W$>{fQ#~QS zynm8nMz!THXzMxdp8cRm6WJP_a?wcDh(qV%|2xV|raNKN#&Pt1Nmr{4V;_V(0rrBG z-;yV5hLso-)a~TJpYr*@_2GR^vD7~}BPRy<<6^iaUvl^Jj>f--ZMSy2*#^iqrJRDX zlVfddekoC#)w|WNs^s>XV@ff z@~Zdlzj<>1>S}jQ_{m_Ja4u^~!i_O{3l?Lx`^H_-fM%=NfEqQTIY^EIBYCP-kkAwZ z4b^S9S&%BxH_@~UrpQ#*iTHP=!l^>Rpi3#{#TomS|L^fcaL9&BXM=V)i7JaHcn!de zabAJ+mjDU-@N*WGQ+KF~pnNHFQXB_Ru?x68^LWFVc(9QrM!>FJZ}u%!SRE|BxngJR zeEMC74J>cdQ?hTOCDv}7U!>#~7u+dyW(roDD$@{C2OO#Bkp<{@!CZpc9KVR)8`#uw zxJ$o&e%?PShj5)t+uvKuK-&m^8^@M}1Zyd9zXsu!f!MRQwA%r`W~aE;F+R4Hl7lXT zk0oywVz4D)(VMijhcAPVvV6>XzGf}bacX-;em$|zfBl8S_U-+Q!=K;s#7x++XW5x% zyx6m_QZD1E3*q1tugG@?XNvari}VOiEw0|_Id=ZDmn zR3A&A)il_4LPZE@U`Zb{*hd;dkO}-+3?#q3S|ZahaASVe8jFsFC3H;N^-0r(NT9JA0D`&lJbLf6` zchDCapSkm95YvxPRpp2nr8dg9pD)&z)#bo-_1keHu=$7?J^s0H2Kx%C3@T$0~cABm@QBP$@4tyx;0I&4Gve$PN^6DCQ`QqyQaBUs=M%q0_%J6plCPx#;Y9DRHHY78U&t>R*FTTRiwSU-=2ISmxBT*WtH=V^ z{iW*m-dXxb%tU}i)_cPf#~Pl${dKqKrd-JnMZkC=%&))LcpXik_QkT50|?= L@3r;x$g}?e(AF4+ diff --git a/sublime_themes/dracula.tmTheme b/sublime_themes/dracula.tmTheme new file mode 100755 index 0000000..0a1630a --- /dev/null +++ b/sublime_themes/dracula.tmTheme @@ -0,0 +1,938 @@ + + + + + + + + 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 f01eb29..6279e73 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 6149e4f..6f189ed 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 | 101 ++++++++++++++++++--- 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, 175 insertions(+), 87 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index df0e952..6f7a003 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 ad0f929..a8090aa 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 57c8284..4c02086 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 b7a4ebc..3c7443a 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 1bce6bf..d6bd40c 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 eacf916..c065109 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 0d0a32d..5c2c2da 100755 --- a/components/errors/src/lib.rs +++ b/components/errors/src/lib.rs @@ -1,26 +1,101 @@ -#![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; + +#[derive(Debug)] +pub enum ErrorKind { + Msg(String), + Tera(tera::Error), + 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), + } + } +} - links { - Tera(tera::Error, tera::ErrorKind); +impl Error { + /// Creates generic error + pub fn msg(value: impl ToString) -> Self { + Self { kind: ErrorKind::Msg(value.to_string()), source: None } } - foreign_links { - Io(::std::io::Error); - Toml(toml::de::Error); - Image(image::ImageError); - Syntect(syntect::LoadingError); + /// 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] diff --git a/components/front_matter/src/lib.rs b/components/front_matter/src/lib.rs index 986399c..c0ca8b7 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 e195184..4ebdbea 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 5736e17..9a80014 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 041b9ac..cb2d940 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 ad02385..da2c1c1 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 6b74f9c..c44265c 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 804b487..6836b20 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 6f189ed..ebd7494 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 2308cbc..9b59e56 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 c3001f4..b84e15b 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 310b265..ffb390b 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 c9723fb..a75e2ff 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 ec08d3f..fdbccbd 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 8f6c09b..723f0b1 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 7672aac..43408ef 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 4d1ba19..2d50ca9 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 9c2d8b2..e3c7e58 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 9b59e56..bffc3fe 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 bffc3fe..5c3a98f 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 edcdbc6..290c2c3 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 6279e73..01e31af 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 6836b20..e45838e 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 b1cab79..7c4a55c 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 a75e2ff..c9c48ca 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 2b0ee29..b2f4c41 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 0000000..8d430af --- /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 e3c7e58..7a60d66 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 6f7a003..9f58670 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 c065109..828b26e 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 0851e01..785fc0b 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 5008c80..3404952 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 b311bfa..0a3525c 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 cbabe50..65dacc9 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 723f0b1..8f6c09b 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 5d4883d..9861a40 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 6ca934d..ecf273f 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 | 377 ++++++++++-------- components/templates/src/lib.rs | 2 +- components/utils/Cargo.toml | 2 +- components/utils/src/templates.rs | 4 +- 21 files changed, 432 insertions(+), 338 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9f58670..b176634 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 828b26e..11b0863 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 1de7545..3b80d83 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 785fc0b..2a88794 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 1391189..289d3e3 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 9a80014..cc5407c 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 cb2d940..5405689 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 da2c1c1..6f47cbe 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 c44265c..6d949d3 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 21815e1..b0eca64 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 01e31af..7e7611f 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 5c3a98f..1406063 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 b84e15b..4f95aac 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 901c0f6..a8911af 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 e6ad349..4fec8a9 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 ffb390b..533173b 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,58 +68,96 @@ 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()); +#[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!( +static DEFAULT_OP: &'static str = "fill"; +static DEFAULT_FMT: &'static str = "auto"; +const DEFAULT_Q: u8 = 75; + +impl TeraFn for ResizeImage { + fn call(&self, args: &HashMap) -> Result { + let path = required_arg!( String, - args.get("kind"), - "`get_taxonomy` requires a `kind` argument with a string value" + args.get("path"), + "`resize_image` requires a `path` 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()); - } - }; + let width = optional_arg!( + u32, + args.get("width"), + "`resize_image`: `width` must be a non-negative integer" + ); + let height = optional_arg!( + u32, + args.get("height"), + "`resize_image`: `height` must be a non-negative integer" + ); + let op = optional_arg!(String, args.get("op"), "`resize_image`: `op` must be a string") + .unwrap_or_else(|| DEFAULT_OP.to_string()); - Ok(to_value(container).unwrap()) - }) -} + let format = + optional_arg!(String, args.get("format"), "`resize_image`: `format` must be a string") + .unwrap_or_else(|| DEFAULT_FMT.to_string()); -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()); + let quality = + optional_arg!(u8, args.get("quality"), "`resize_image`: `quality` must be a number") + .unwrap_or(DEFAULT_Q); + if quality == 0 || quality > 100 { + return Err("`resize_image`: `quality` must be in range 1-100".to_string().into()); + } + + let mut imageproc = self.imageproc.lock().unwrap(); + if !imageproc.source_exists(&path) { + return Err(format!("`resize_image`: Cannot find path: {}", path).into()); } - taxonomies.insert(taxonomy.kind.name.clone(), items); + + let imageop = imageproc::ImageOp::from_args(path, &op, width, height, &format, quality) + .map_err(|e| format!("`resize_image`: {}", e))?; + let url = imageproc.insert(imageop); + + to_value(url).map_err(|err| err.into()) } +} - Box::new(move |args| -> Result { +#[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"), @@ -173,7 +168,7 @@ pub fn make_get_taxonomy_url(all_taxonomies: &[Taxonomy]) -> GlobalFn { args.get("name"), "`get_taxonomy_url` requires a `name` argument with a string value" ); - let container = match taxonomies.get(&kind) { + let container = match self.taxonomies.get(&kind) { Some(c) => c, None => { return Err(format!( @@ -189,64 +184,130 @@ pub fn make_get_taxonomy_url(all_taxonomies: &[Taxonomy]) -> GlobalFn { } 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; - Box::new(move |args| -> Result { +#[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"), - "`resize_image` requires a `path` argument with a string value" - ); - let width = optional_arg!( - u32, - args.get("width"), - "`resize_image`: `width` must be a non-negative integer" + "`get_page` requires a `path` argument with a string value" ); - let height = optional_arg!( - u32, - args.get("height"), - "`resize_image`: `height` must be a non-negative integer" + 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 op = optional_arg!(String, args.get("op"), "`resize_image`: `op` must be a string") - .unwrap_or_else(|| DEFAULT_OP.to_string()); - let format = - optional_arg!(String, args.get("format"), "`resize_image`: `format` must be a string") - .unwrap_or_else(|| DEFAULT_FMT.to_string()); + let metadata_only = args + .get("metadata_only") + .map_or(false, |c| from_value::(c.clone()).unwrap_or(false)); - let quality = - optional_arg!(u8, args.get("quality"), "`resize_image`: `quality` must be a number") - .unwrap_or(DEFAULT_Q); - if quality == 0 || quality > 100 { - return Err("`resize_image`: `quality` must be in range 1-100".to_string().into()); - } + let container = if metadata_only { &self.sections_basic } else { &self.sections }; - let mut imageproc = imageproc.lock().unwrap(); - if !imageproc.source_exists(&path) { - return Err(format!("`resize_image`: Cannot find path: {}", path).into()); + match container.get(&path) { + Some(p) => Ok(p.clone()), + None => Err(format!("Section `{}` not found.", path).into()), } + } +} - let imageop = imageproc::ImageOp::from_args(path, &op, width, height, &format, quality) - .map_err(|e| format!("`resize_image`: {}", e))?; - let url = imageproc.insert(imageop); - to_value(url).map_err(|err| err.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 c9c48ca..9f54ca8 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 e6c558d..9759871 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 b2f4c41..3b36698 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 43408ef..2deba22 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 b176634..46c0ca1 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 9023a73..ad85bdc 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 dbceae8..da722a4 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 | 126 +++++++++-------- components/site/tests/site_i18n.rs | 21 +-- components/templates/src/global_fns/mod.rs | 95 ++++++------- src/console.rs | 13 +- 7 files changed, 325 insertions(+), 275 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 46c0ca1..fa0d547 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 1f59ba5..7ef87a1 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 1406063..bc84def 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 7c4a55c..3a13fb9 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(); - - 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 - }; + { + 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( + "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 ad85bdc..6ccb790 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 533173b..bb7344b 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 2d50ca9..5151cf8 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 7e7611f..3c6f20b 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) - } -} - -/// 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); - } + Header::new(0) } - - (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 cc5407c..89796d4 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 2645084..e5bd679 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 a8911af..133feb8 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 c47ef5d..b263482 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 | 100 ++++++++++-------- 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, 137 insertions(+), 109 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fa0d547..61483e5 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 = [ + "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)", + "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-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)", + "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 4c02086..1f37192 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 7111fa5..94311b5 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 89796d4..420e414 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 5405689..2a7c4df 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 3404952..e8f311b 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 5552ee9..ad295e8 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 6d949d3..0756b53 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 bc84def..8a8e0b7 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 3a13fb9..7e025e7 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 6ccb790..f9b2a98 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 bb7344b..2398386 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 0a3525c..c21ed77 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 ad295e8..793e70f 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 7ef87a1..9ba83cb 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 2a7c4df..9994b57 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 5c2c2da..c8ada64 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 5151cf8..719f3ad 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 7a60d66..cbf56d5 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 8a8e0b7..9445757 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 7e025e7..c85033a 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 c17d53f..3012c36 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 4fec8a9..48b7176 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 0000000..f2f309c --- /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 ddf07ff..6f7f4dc 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 61483e5..705e048 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 0c507c1..c65badb 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 | 154 ++++++++++-------- 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, 326 insertions(+), 207 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 705e048..c2303b1 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 c8ada64..e9a271f 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 c0ca8b7..204582c 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 4ebdbea..91d1ec3 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 420e414..c344d50 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 9994b57..3da005e 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 793e70f..c724a2e 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 6f47cbe..fd7f57f 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 0756b53..a82c3e5 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 9ba83cb..ca4250b 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 3c6f20b..9bbb26a 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)); - } + 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("
"));
+                        // 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")); + 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)) } - // 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::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)) - } - 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::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::Link(Owned(fixed_link), title)) - } - Event::Html(ref markup) if markup.contains("") => { - has_summary = true; - Event::Html(Borrowed(CONTINUE_READING)) + 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, - } - }).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 c85033a..9286b43 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 f9b2a98..2f81c7c 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 4fec8a9..bc89c1b 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 2398386..cc34740 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 9f54ca8..05f782b 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 fdbccbd..f9eb4ea 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 778de4a..346769c 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 2deba22..07544a0 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 719f3ad..0241cf3 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 cbf56d5..becfe36 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 c344d50..8383e5b 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 3da005e..84166e8 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 e8f311b..83388d6 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 c21ed77..c1402d4 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 275de86..d0e0f3e 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 c2303b1..9ac0072 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 621e8a8..6bd69be 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 83388d6..f530484 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 6bd69be..621e8a8 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 4bf7c69..0ef0488 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 d046687..8e455bd 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 ef376f6..f9c3472 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 6f7f4dc..03c3600 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 777cd7b..fd58a41 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 0ef0488..4bf7c69 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 060104f..c30709b 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 ca4250b..a93ef7f 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 621e8a8..f35c0c2 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 9d40f75..643a10d 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 0000000..ac36e06 --- /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 9ac0072..f9a19bb 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 65dacc9..e83a972 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 bfb7f63..a824bf1 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 0000000..6348823 --- /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: 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 z 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�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

1h#dL<^2Y1WV4)&4?D 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%0DJ7$!eRvo@jYb^(Q7G%y^JfBIEzAt(E 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%0D4BxX~zoJ9Wdd} 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 z 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%0AP1YC8#`JBOVre7;Of^@Q1-8ZxP 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

{ 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

a;tpf?1$0@@V6D9ah{cG<9^aoLBrX=t` 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 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 0ada728..97ca289 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 c1402d4..3a8440c 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 f9a19bb..b3c4c49 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" -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" +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)", - "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 94311b5..8d58ebe 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 8383e5b..679764d 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 84166e8..ebc9ca1 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 fd7f57f..2fc9203 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 20844d8..c6cfd67 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 a93ef7f..32f8e58 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 643a10d..634664d 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 becfe36..0e700a2 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 634664d..60d9afc 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 48b7176..5bc506f 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 60d9afc..1d3c27e 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 | 49 +++++++++++++++---- components/templates/src/builtins/sitemap.xml | 22 ++------- .../src/builtins/split_sitemap_index.xml | 7 +++ components/templates/src/lib.rs | 3 +- 6 files changed, 55 insertions(+), 29 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 d046687..8e455bd 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 32f8e58..41b4fc4 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 1d3c27e..d8bada6 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); - - let sitemap = &render_template("sitemap.xml", &self.tera, context, &self.config.theme)?; - - create_file(&self.output_path.join("sitemap.xml"), sitemap)?; + // 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); + } + // 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 6eba3d7..3e92454 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 0000000..1b883e4 --- /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 05f782b..eec3b1f 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 0e700a2..15da4c0 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 d8bada6..f0a4d5c 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 3e92454..6d55d37 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 86f510c..13119c8 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 15da4c0..b04cb34 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 7d329b1..451ba12 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 f0a4d5c..f64dbd2 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 b04cb34..8bb9f93 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 b3c4c49..7153ac4 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 b0eca64..ef38a2c 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 9bbb26a..5994f7d 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 8bb9f93..f95ed95 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 5994f7d..6c34a58 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 f64dbd2..bd41dae 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 5bc506f..9e6449c 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 eec3b1f..a1b6113 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 bf9aad7..02349c8 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 f95ed95..4dfaace 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 bd41dae..ea2467a 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 0000000..c38ed96 --- /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 13119c8..74f0f5a 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 7153ac4..dc6b44a 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 ef38a2c..a4a6408 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 4bf7c69..6a47daf 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 dc6b44a..a1c249b 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 9e6449c..e7b0dbf 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 e7b0dbf..b8f053c 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 0000000..3a461fe --- /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 a1c249b..b94fc04 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 ea2467a..57ba91d 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 95267f5..4b247ca 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 304d135..500aa04 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 aca974e..6bc8dc8 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 07544a0..50894c3 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 987e08b..2ad43ba 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 4dfaace..1908ed2 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 b94fc04..31ce1ae 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 1908ed2..d95f222 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 be7992d..5659f20 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 353cae7..4dd5f6d 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 3325b0a..e93c9c0 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 d95f222..2de6127 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 31ce1ae..f6813af 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 9897ba3..97edc3d 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 6d55d37..2154a5b 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 1b883e4..171665c 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 }}

CiPWyGvkB(Tb-gqTZBJF8Zx0FPb{X+M;vMPeI)i(lhPDDOha)MC<%05L&tP z{0M*mXRkMm2!LoR_JEM6sLj+`CbBJER70zly1fYc8Yruvf_%gk3URC?ucM~u)cWQl zMyI#l`S988^Uu!E=eE{?5vqT>hw7c_c5vIDlG zOX*)!%57vLF?jX#tNCGkzdSR0_vMo%x;$bHxI*`=qWT+8X2Bxsv*v&2V;*U}phDcQ zNa4aU#LSQKB>O8{?I`D)S^A%So}>Vo5`sNtl+Gh^1iZd9ea@_5cl zC|M=%gdtGnNTfwXY_wOPV;w1T{L$BPwL$zfC2G0a@BCWZUGJMkN|F0f+jT6xj+Tjj zu3&a$1;Rp3{HsbY6@7osl3KRQ()W$n2E5;B54dN}Z{M(9VsmDO!NDBWzgv1#6V2+^ z%r(h1k%DGU<-hwniT_^d;r`lqxSz%f!$||KnQk71=J3@87tSAFXdES$`2aP=C)ZhLHD&% z-ft^SH|G)MZsKgd(F{LYElK8BbY-ic!!UIw{!#}BpH?vYM=Iu(vzK8;Y8LqqEL z{iwm4>7;vB{6IY8mWVX88~t*Tf!BKX^VYl1S?~TtjxCfA6mH1?sFAXaCcb`G3SWlU zCeKJ22NTQQ%8wO)I9WDGNzl$%*y(2Inb9`Bk+i{n?HuIuG}*;(JwM~fLcngZHJD!; zZ8+hc4m|necF&58mY>XQ8SjlYY~W9x_R5CZ$)^iEI2#V1R?E&gKRnu;!E^P2*J$x< zQH%QdLfNh_UDZp)FZK<`^rW$oinux=HYYSUaqLWXw@G$?p}2Z033$@AkEY%b;PYHr zp3MZyC@WfIDEf-}G~D%!Bca{p1Qkp(80)PgK|I1Ieotv}b4DGIWu!)(cIC@#<{ZKU za7xDx!A921$T5@4iOR26kWHYyI&(Q$~LxvNn19mbu9 zs`rp@qklwig$#iLAp{Je1|n2YJVV2uX2V(B;Zzb&&FDej0s0Q`Vi5Nks6GSq8KBRA z+6>TVp!y8ZXQ2BG;yw`$L+d0Wg#lgr?}=Ss><$EfDWlq$2u4q*FGBo*f%ovzBht`I zW@thU$4g0jF9+Qq9EQGkdtC%b#4$0(nYvgOunoj@U7JV!k|eM)!1vZmO^>j-cYmi25Fy;9#tD=o6C#$ATd~ z3t?4%amzaqR99-s25P1p(91b?HaZ8GIaZ59vOuhS<;9nHO1|&uxJQjbx(giKx&-ocwG{P zVdY2EK}ZTu39lzFJ$oh4CCPH|5O#CH|Wy1#^;kH_S)C_~ZTEGODFL5QK zxcmV-hA0F83^uQm@&#kjp!te9w7h|*ZcI5FiyKql`Ofz+-Ndd2bsp~{%CiBk4xr_K zW-s)$bB225yD#DuZl0#uL({%B#w~aN#2MNHTA-j)O~|SX!1D{5-B{qUG;*7I+}WJN`?+H6OT7*THYkg zBW9KP1?k+qVS5k>yeD+*g2x!Nm+Q&~W9^&5yP? zjwV=Ts9$HOY?<`&k+C}U+1j3a!H$H<9c;!pPaO9+6L`O6!P}dK=Cmg`*udq#=2V?8 zHC1LjK<*@6C%P zeD|56xk~q+prMtXE_gWG!z1^Uhg?;_zYxZ$^ zqzTeHhQYyP`kMRY-u4G=Ck<^pV|xVDEI8b^QXa0x8>v`~3kl5QJX(l{2(l~Z!}a@9 zCwQGwpk$CjMhC|ouJ8v^@M-b3HiOJ6(U{4YwCjXojI`^uia1-sBK@#6SzoY}6PK*( z6V~-Z*7Z+X*Wa^$t{=#X3iv^hqs#!w_`1AMlC+Fj4v`lN^eB&*H{yCcw}xBWvzxAS zCLx2o9ro*4>^`?_|82V_3;&_zIzn> zwM;)Ii30KCfPg=rLcmIDx&IuC%*NSY$c!mSaQ5jN@qeC~P~G|Tvc|tyWED&mCHTUK z1bOB@Bjo8KgqTU)?;b6GD20|MvL(q+@%aDnWBF4be!7SLC-SF05t2T|<3)l&v1;ku$3ad?6$`w3 zbo|{Cs-;ikxc`@8)zZ07$GPd4k@okCRZE{nI{61BR7;=6asQuVRZHhScAAxAM!`QG zqgwjZBjEokR4x4+i_F5=|5~V8`ZRKi|E);1^l2P_@c({v)e^GO-&ce@U4)S16|Dby z3Dwf4dHnx%v1;klJoNv*glg&2JpR8uR<(4GMt@ftm3xAUzmao9*jd{CF~Y*n7V4Eg z%}e2L7U`8f%>)1M%G9>g-(Rylsb;O~tJd{giHa*JB$mueH}Jw;KO-+4{~JwPS(H`Y zY^pGSqrm@dCqR1n@oWOHs`pxTuk{e)8&A4L5txc=1x8A93Z|6tTWsi#swW?m@d9l$u z62v)Di=^Q-Z%5SNo@(mByKW&hNneUzmnBr?3K*S_?99T2$-grSv}Vl%{-x6P$xOtT zUSkCYf5~EC&J_bA+s`A34U5^GD*}y>-r`2R_D2lnK%7{ zO2C&UW0g{flKtkz?T&<>bp2h=TC3(vT+gdMe^4~xX2QDEF6cbt-g;-dcFS=;`0$;x z7tYVtY61mB&W=VrO0L7H0A<3TX=FUoOgS%Jqhz&dgPZcd#}X=PT%G&j``5M+SyVea zE)lWUZSD~cN2dAb)URuuRS|(p$`7L~hzV-AvZ_wTNAFYO}RxN`}hE z`<9uUAkuarSBc`-;4H@0QsI ziulC0vLz&YOV6uMDQhUl54U^0+tc2j@3nG7AUFFx$&~K+(<2Q$WHs<~LB|b$FNn9i z&*TVSg*~TQuu1Xt6e+%#CYze$7)xJdlaOnMpq;u`Q~Lcf4HOARHe@#CD>@to*(Q~Fb+shgIOsWag>@_r#@-;ncF&V&U@g7F;`rDjLf%-cS7 zq4c%Jh*HRW-WCwXre+V*>Yw|Bmj`3K92;hohva?3%y<(0undWEJ=8)HwdK_O6MsY& zV@ZS59l4b|77a%G@dpb2m2Re!rC~+I#pm7aoQi;_O@fG%K!%wb->fQeVV0)XH{m!N z!*N-OFEgd3NbGoAGUDs)dhCtH;73@6l|2 zC5wE+-ofFnZ;@__Q)s2C^BNDA(^VjpnXd81HBDaWQ%z_;UNqmM=i=8AaFVofIXxKz z)%?&bIFOCLOtHDxQcuRZp0a?&C~RD(+G9pvBMfN1!&e`!IrYM;<}e zia1f1HfIGNe{90+ltHiB*z=mcSv0GkF>m|>l?4Xo$VMad?*vHvj7;%fvnT)T39r>!o5SC#7u}xs z+HIU!g|{2}efhU7JlLZJk`>c`wHY5tZj7(VA~J8PfAquVEx&sw2z#8O-MYQ$@62Am!y?uF!Gpd4v7&m?E9^$`+ zVZR-4@~8AwjilAkJG5^i_w~#U*!{>a8ZYVFGUXBOVm9!%rU9?3^4Iz{1CJI+-PngJw*&_T-U^xY9OrGD)-2N~~Z0!ZDA!Y1izisJ(=Ol zzO6~vy4yo}n(W`YJ>JVlZtDe`c{?@F#?K@lk(#Y#-{zTa4l-|#;*8lq`j%Qs*3FSA zzT?MOjpqnothwh~t(Pik1ttOq{g+Z{1yd(ix6mCbzKk!ahD-v<8jQ&j%~hkS5Tu^% zdqEgagoyz4J)vcNW5JiqX$2U6Z9~)^fvBAUQ9DH``ql`L?KD-qCm+{bL<*_K*Hk~z zVW-iPQ<(4={+4>oU@Y=$0$9-HKP1FOYYMq%{5_SO0HLWBxkqy8f8{my^cqtZ3Kh;xo(R;*Lnl~To3u9 zg3>)J$=6N(dXw1mCInAk_r0)7ScwG7V)!#Z zPal1+5wr<#6#OBq@ATR&`a*92Yw~Xj%%&fpPK>~^Vb+cGp2-@*H)1$M8TeN1Z4wpZ z+WzRl?WL}5BrAo@D9oN)H=cZE*DDY<bT$F!;h4V~h>h7>vzjF9u_? z_{PRuHiwOk!5@r`0UKY~@ZXCoBO)`hGOMe5TAJz^RYgR9Wk$Ss@#4jc_g=i{gtZ=Y zV3m9U{lgb|0>1rT3%jn6a(;cS7z+i?6y+{!NBfYkUq$zpOG+Vg{ z6Rnd;Kt5qFx;P(*!VZ`-`OPyHQ+)WR{R@OM`FNv|z2?+UQwCH=#iNhU2lx+pPu*cr zEZc#cj+)1RJBRA74Xwl6As?(;G|BtLa(sT#EbnJjx@ZFy;k$+ZlsN%;N-;d4{p#UA zz!vZg(m0toupZ(I9^rHK4%;KuVQ|lqYnhmsRR{74>z^Xiz3z3o| z4&8t{E+}k6a$_GZ6kriQ(I$=sB-slZpTGnNCi8@x!tgBy%TZ!wPIMq^!{bGqGF8OzU_k$-S@`%y$~W z>kLPKY?$bmYvYYhFmDNH_+haKwLC+&)_RKtX+asmho{3@Yc>L{W;6N&t1X<%)>er!^C!mvb@C_{0~wk_It5Ly0nPBMyH2= zD0PBd@dp2n;fJ=sLJ5uuOvH1SE~z3j-}r;9R5CvU z#RPls#Q7#UoqQ6}c! z4NR=m!^I}M{SCS6BK2tTLZZl}dR+WOp^kXJAY)y`i!K-6s$rv4Y`qw|c*i9DB>O(M z)_Vm9xrwI$F*h&e>gd>m+hCds)LuJr3E>idtpWSey8tCRBV)y!C%IhdKojiu9>W#i5xWVx2C0m) zX1PGHW4Vw?ZdgR`SENa%qi_>+6t1kJAQ{hXxs;6Ph8(}HlTX~1lWzwEXP-a9HtBA( zBX`A)98{LL|rEJ5&O=*)T44O=4qF2(guV?|Kd1#AD*+RnRO-52$lb3mM z1uK7njG4YkMqUttPYQqz)s+SdBf=q9MdIh}GgL`J(&r^!19Kn$9Y01syZCtmKdK?; z3eC=n13MU?kPxubvTr-w;6>BDwtEMbPs~t-3~%bP-Gx#zULcFWW{}SiD)M+ZF+!?5 zAfL!$7kQE}R+a`f2bJNFNsNdV5UOOqapr$Ovy5ZX45L>@=eRkBf5@hx4NwA*4^|mX z^1)|0UNy~fNleO-M_b5VTQ0c(wRILIGIDTCpL1$bu7gCucOt;U7TKrLJzgT^ra}D<^ZBV&|SFT_EbjX($eOYP0MVhAzgdc*|i`tH_HvLYUN=ThH**67Y2e~MI zD7y|?z%@-ujw+gzBC;{N+Etf-k|%!yLx15^MRJT@Nm_@V6!H~~WY~z(GZ@e|{uc5l zKnRAMzUs03`DL8;Ec2?Y1ZHLPxOViqTvLUmM4A#SCfxzkQR8XaL8`JLpQ73e^sZu% z&*|r}uuG;SQzg<2-yn8j7rTJ^FLyEQx?L!s{Gp3ewoB$L-Y4G08Gs)w+i8EUd7Ta> za24(l$gXvKs!oG>hwCo=ie?neUjdC6to~RDezNT%OIO!;DpJlx1)MNgi8Rivgp4%* zRkTX8eCYY36tOJBwk~S+lKMo#hKc=1RVFOMsEX&fyvXu=`^vJ?hE&ZWyO4x%d+wwmlc0;#wuqcqyfvUEy!5&n4H72P4SEGq7*ePW0lX`D2sM` zo}=4kwmzwa=hUH79uc~%uE*9E1d{EYiPjZ9y3tFWW!Utbh;H^V^#(6q?d{=)NhBD# zMp?#T?(|&zz|p}{9MbOjrK9-Awq0bw!Acg1 zu*rAJ9-E5uFVGv!V+GjAB4K2tJ)%{kUyA<}Zo1*$0?4EI%|?Wz*fb_-WL6}hPcu@; zr%;q>k_;#Z@vCW*{xEHSETmw3J@Fl_1#D`abNrg;Qgs6>y1>+Iz&_FE4CEP1_PjRx zVk77*<3EW8fc|0KzJBGE+c)Kc|G3Z@C6&RKN_mT&6>8vt zgm@J#AoR=9UZ+LTyTlaa+sH@Q7e&2K>DafI9r6LCEnK=VjdbLH1LZjMGpY}=?a&8{ z7OZ9T3)elUAGT)XLs?OL=MMf`u<^!2l0uSzZ-yU|5>;b{0EP*MGf4NyHUm^kE+Jb; zAxm?BVL*x)NZ^~=Ykj8q@^!Tp6wFg4#0_9*mr%CFG9?2_Bvc2>+CP7Z+AoM92S4m) zWG=-#D10b~mWwfef1Y@C(KHu8XztUL)6$&VSUW-0F=)!fLz8?4Qit5o z2iODpsn8!Qp`*)w<(1PcpVvNFc>sTR5DbQAwzMhYs4R$ovc(SFm+PSQeZ^@LA(`4R ziIv0;Ky>u*3lR#YbFf0e(%&T?ZUb*}WMQG0e!58ag-~}C*e1Uoe zzk4;JLWa}|tOg+}65$`v5c^V5!izW_Se~u3m<8owFQ89?y_tRy8i7g97H|Ho&M#gj zH8-D7CY~dI<1(-0qBY5wQQ#PqTpK6P9pmG(_CsoMUTJYAl0n6DCdKK!M6S) z<%jbmxddcKlNA4$V#6eoK1*{kmpqPYf7lQ3G*O9vI3nA1S*@rBrzxVHA{C)Bg|YW} zn#XsEvYY(gmH@!Bhq!wr8D=Du(ySXy0J%+n!Zky#-PqXl$B;HB@p=R z5v4zWdJ_>hBKQDq9MCm1kffi>cH2gUbr88UKpR~&rsFpOA^-{G8q|kYtn(nSETh?? zhUKd=H&?S%9zo}$6|5e2>C5oN?8Q7GK@N6~EFMYfH)rsi1hOb%@bWz4Qar0ODPGR`3(t!!5)=gNQ(}^kUu9$k8d97Y_~qmK zswxxnks7ntZc|tz0SD4#-RZUI(6MhEvR?bGkc=u-V}kBB1fv^MG@%p0jSkp*LULtf z^LZEyl6dXLg-<|=P%2a5zfQieG1jY4^bWY#?Yg}dCD>R-SvH(>j*(Bq>8eP=!V5_t zbBvotKB6(e-02<=FHu!sju}*6g%!Pt`#3Da8pxM2p1g=)6*Izl2{W%VQ`m}!m&bVp z9s=Dum*;r}D1Y;o!&Pdye9P|ou$O6)V}4el|24+^{0}Z~w|3hPtF}iP zVc(MDVP_Tp(I4rz@*^$aXJ|wLV+GaKZdj|6m+6<}JAYPJU#&IWu5ix-S;9d#H)^It zXAt5@2b|aA-%?E-+5n6j`b`DIyD$XXtW*_@W)oeDcqI+^K+i_l}G^{VU!4PO2CNF${;~{jo%#?<&IXzw_QqPQBtxj zNM*du7E!#T!k4OjCFod|KM6WqrwJWvf%F}pk*GS^kTC<1xLyAWF zB|*sY0uq*IwSr1|5dng4;!;IhzDS6~!)>Mq3o|2MAGAY6M5Jh(hap8M{Vt3sL6%6# z+d@&qAz(X2UTJ_Q(WoRBcuSxaULt!kw@XJMN=lVVWujKtt+{pFBKF!1B1BP;=f3X7fI07q_4~noN>2L@ukL)-F&lKa!=e zL{GnQoWBZINw8VePS@>jU{mMnCG68eGV!as{MppHsW#SNdA5ZwsP(6D$s0}33GI^lGE zDThNvb3KnH>MqP0dyNQtq=0%+lH?LP`;(OHIYkPh=aE^m#40Q5G*~NLRO_;o+h)J| z4o{$945<^0%piH%zkS77xrR&+a(|$LyXZ@fRUrx1g9Cvsw6G1WQ}Y3A%U@x$i&`u7 zg7d^#jTTVw7I9kPhZxL7&sifMQi<$>yVwIwgm4#Lsx`wU#}359OFlZExxux0kg%_v zyU-v|GB+nS&)jH=yFNS547Tl@W~G()jrW`pnn#eZtJY+ z3+F`AuXTbz7{h|DxFm8H)O@3;YKxR{$dzPy?#*my+x$VlS0# zn%XqsRyfuyH__ElX+M+FeDn{VJJofC$L1-5|oy>e^epY=6Vo@A~7?`dyd& zNnoGH^xov8KK1!H?crYA#*G+#?3{?q!A`;vH<5GXgg0iHPYZn6Fcn}+WH)V4L9t?D z6Gy}30%34$#j#;g;!TSeNog#HfRgmpHaiDXi{K_{sYhT_I@@tj^CunNIzgAf(*b>- z9$vzdc_2W!jQa81=zpBPOw*(h+)G^G!ZazqgbsK#iO>?~Ws;*Q+CKU^ftEAm&Wjvr z9F@HMJYn*_$j|qx3=UESJz&*FS&(&+Ne1V7tuASg<*#|2phF}MT<(xhvULS4O|VD2 z#@#u2E%16Q2}@2B{>N(T^neL0o_K7Aq~!snu_nME=6Dw{+2VB!Sej)JISeQGjqpRw>=$BjX5I%;5p!I^l&BCh(i6OcQFi!B`d$$8%Bw;@BD62O7n* z0QBq%Jr%%Vp?|sg9&8M`3mKjRAbsHpoMt>N{mvccNrssgi041doNKt1A+G!si;xsp zL8*bwoG6KoYUH>`ROD0n0`$HjaTz5O>XeUTc{)1Qz_21xQXy;w>a_12Pc8=BoMU7v zm5R9!MXXc2qd?wWj3P>L5D_~%{PUnEG_B(kCpk?-Gk*(mucJN_J?$~=f=vdd$&&43 zbPxE7dWbpJL6P!9VsWjx0-0``3^m{xUF>02NboX$eW#9)P#zl<^{TYWOXP48G6yn& z2-Oi*K^3`}WZame4U3?=a%dO?>mEI&_}AFr5{u(^k6-ZxCkJbx7Pf{@7^6eOxX&zXt>7PJl#ob5F%%Pmy-JTVfFw`dIWJLvc%gnC`^*D%dHOLLdG z16P#s)f^iaPemv5pNih_9RZvlEkk??&wsxFeVu=iKR*8gS;l;a&vxH&TK@cttSz5V z9|MhM6uu7)oF<=V70FS6z!Q{j`O?BEffgk>8tDcE7@73QMN*rzVEF0+={pgejQvC6 zD)+Yb)uj%zs;EXD5o;Vt6PLB9Qn8c~T{`hRqR;Xae-!fEa}(2ilCZRA)1?x#qJL>j zQ{Np(aVU^S`GWaG41+b}F5Vyq)qJwQ6N?_EeB^WUFG#K`=Uk%tjS9G|LYBaJ;j+R9 z_ngxuidUYejS}1uH8X7s&EgmNBFj62g?ylRZSw7tyQ_5(B{RkjJ8o6mCu`6n~I+mN7V- z2bM$ng{O1C?t|e$syz}fjwYgNctHyzV0j3eL%vZTir;H1>`QqCvh)S8snJj3*G-eh z*cU21?Zxo)^~IB7mASBe0X1e6 zSV*dag)j?z>CLNcXCBO<^$Wa9B(P7rPOL`OGzh9-B1F@3fI2irZ)!F&IjhASOJ`ty zoss9)8EJlj)X{12YB7x`^{OtlX}g+9o8`M6svxASOAcO!XF99ArX!UFG<7c2P_b2A z0Sc}ylkc`y=ikRjV*U%rR}X&206S2TN0*_61s8u=wK1j-*fQ@hkZP?ubuK2S0r0~@ z!e*({WS-D;WIM+kJH$aVt>}$5F}pjB2CVkP{K(ZZXpZoy1*74T;5X!3u9p=czY-Za zP3wj&mWPMcTQrCbdW$qcW)FB4t)o0We|nxLNtha%3^1w%i@<~aJU)%NvrK$+L8W+` zO)h^_!s&SiomxhUx=SF^1gKFHNyXtnDigDg3@bXh(6Qht=`~NI+8V($7)Dm`*X0wm zhGh>$#<13*q8Ry3-V*j zu1$jh(S-acFTuf!a!RJ9&Ov`6zZRfq79}ael=A>*cS$KBAW3;G+jbUVB$Oh* z=Pl!si5@C8s-Ss-oY5lU4s~APgVnHGF3dIhMO)-)Of~}aXhOqS!}XUO&U4s#FZw0L zs$qGyZu9Kz7CHRFvq;}OP2EhUnR^8u*)-Yy3K+Gkqn(V4UZn2 zS&LFq6Q1k9Hloc@qGSzEMc}YLlP{@GmgkSXLL>0lJ=nwBM1{QoO3DQiRhos-;ongu zP;il|Po-qi&rv&a8K@K*#8rPkL{!1Q$OD07fIv_ke8ca;7bXKnDk4SjD&HD)l1>4oo4W98nGo@S_5P)FnW*N>ex%5UvAQqOd>@`RLZJ3AbXz}I!Fihv^qvbJ%|r{6f14eFAyd z0XZsQSrAnnmb?zH)6_imo5R=X@+(qOJdLOb+Ea3@S*eUICHx1<18%ob)j>WZ_-}hX z|27UkA!a2PHLa9#+Ch1WzQo-Aq97eYjuAyf-^?=2sGLr>CT!i{pX@KW$VP}z4s&&6 zXk|Ix0qzG0)j++BPVs*`q8ZGskYXAt17l|3cA0!eRL-)zH*{M;zqnk@b4YqTEhp7? zkh4G+R3_G3s@8lB`>*t>OT;9yhSw<@D(`CCEMZru7yG-p}Qwojx5M(2`mnJ#F-9b#t=mY z`Fs^wI!U>{!xCV)CdV@sFknkYy@=6p*B~FNEB%U#QV0f#pp8XkL9Bo}mWw>yWU;5n z#@vkbmnsIjxJ&K=7%b`p*}8V=*7cg(Y}#(vZ8E2Kx()5pZ75|I zqz8=MFbzW;e-XpWqF(a?qDi1RvKM6T`Me3t$f6)EVXHmOGG3Ryw?u}VG03h{laerFmdKT>YjR;11YdqefD0ZGe-&($Cz#wtvp0ITowZkC9mMPv z68VHB=;8S;+tPO_s`2~)jx45ppPU^a-;4~&+KeCge<;j!+!~NukQbI|LCZ(~O+4h- zr4hTxI?i7vB@&&npk6e0?HX@{A9f)61%lbGbQXtX#DNEfZSo~YxS{#zG0H~;%fvGx zJWYiw=_jJv7kQk&BBM|WFO(mkvYp7b_MKu!r&jL{o#Yz_Brs=egVi6Jbh{zKy2+yg#Y$$PdC?U|8MT~pUoJth*0ZPd< zgL{D}%{PR+fN>g{W1A%&`A9S<_6{OXN04R6e{#Zd5|d&DN-ro8vfxLQjjPa-S*aCu zy(s>XAQhD|X|y7ZE@>fWSv)I{ArYk#0ZF1FsYnT=#ERvi=1@uGwh8G*d8rO+}j zl`zJOB!q|}1u;>niXbXhFGwAvn^2ySQk;#`e8k7u@0gddObYlBI9jwC;FW3A{RZX) ze;!rg5&zgXCkK-8L_!q5Nj~_rW+^rfn2Y!X<_MNC5rv^5A=8*vn7-8|_LO#=6$phd zdi#?;gk7S@?Q%tKmnm}Z5b@#;U9Rp3@!}2>FYZwB;tq-zcN*axDqh?n;>8^*UfiMb z#2qS6++i!<9a=~hn>%+1O7E~T@+HN)f4W2XB?hm8uHF%#-+?j;`kkI#cUWJgbX0>> z#(52t!EU7Kh=e6S&PoWKM_CaU%l2LRDU6OJ$5-z=1eJF{f< z5@g@hk58KLw; zG;djCDyb_#xn3jmDCK&Day?499;IB5Qm!WqG9II0kNkYS1LH>M*b}tr@pwB?igh{4 z(p(SKo+2S0VmZv~mD~psIwn`LEfHuA8!LuDVFCs9}SD z6bbY54cP3%XBR&gVcB!=Ak_RkCENM=mRkceIwUyd(9ns#HY&s{OqXJm9YQWZpyc2O zDgz*SCIAU>LWBq+WFciJe@XBH!c;{L>0M-q$R={~FH~@l!X{BTMP7aunL-resO!n` zj)+ts<(ZriMLXi1jtV4*E9f8qYf<1c`vy-)zYC#?Cn&{0izJe3uS>$4(=RC&4a;*pfL#p# zF}#bEcs?qT-f*eOje6&3dHGGH9B6Bq^mR2{M#qk2;@LrQLDNXYG$j%(kwS8$DOprj zOQ3)%dC5gP7?xViHS&NmN|}fdqZRYWDOx!X8In}2)DkV>T=C4lEv-qmjEfBRlrBna zROE~l&_*icWAkaZc^j9{kp&okd_p=`NG}Vv$xXT-R^z?MJSeE`(SYpa+T7FawG~t< z5vRGTTZQG^TT?QIQdm9ggxhg3sz$63C4F}9V)QdjD*k=6=n{7jjIxHOD2AG*SKk(9Y@vRvZ2NJ2ueVjc#6TFow;U7+#s zwc@%IoK*X%+X<52xo#+~Czmgye?t&NKU~*=xxN6XAoD~NT-Tq_Yrh_^myq-V#kk#! z@VG|aWQR{LwlA;AcQ(>8^$nvzFw(1n@$vRTrxz?h zg&=GDFg^=3oJ{l+jdr_#z{A+mTMp6lou*#9eu<@C7k#Vt7LjyF7@+`d|PsA)D5kh$`SjDq5ix|uBjEzoxttvf#5<(c;ZRrxzU($)VK=fxnWVYb@qploe3n0a+1i5!9Oj z`A|G_SOIt3A~~jil%N?-`ytqdYk2OJ#@NMB$|nMX7;Jrkxjc~_I5vdIh@!8-9@z0b zr>>RLJJ069$mTC~xEmFp&i+Dm4Y&qgrUvFRqMjv}x;FStWptV%_1DQsjSk^s_{(|p z#=XpFpPs#a>#a4pfS;1VGzI{{$nxX>u6Sk@|H<<;y4uWt@1So`TfE0SqZo(fSutOD zfgovdznHV)FVw5iy<+6}#sa;hEpoT=rB^5~r@5<_SmL!y;@mGi6O6q*&DJ`!Jdhaw z3png#KCA z=U-TqPU~Km7>Y!xeZ(U z9`&DDKu*3u<6P4MJ_AG{J1$G+;|U6K2lfl}j5N8AMGO-16L!~%jK8+uWLK%M_Q7tB z^1=d=7x}>3NSg9+(~vZT*RV3_a4sv6qs@1vbAr*uBpBM3yjuFYsGcPmoAx*`KP$615iuXCyd*47_EF{)Y^IB3)>4fkC8&Qp)Osc&Oy7$HC`-0m>do9ZWGbZu_%gz(|nPomr&evl7gn^%3 z>a}m97z&-FCFjBZg2D7*;6sVYf6Hm!T2ykCk%m+xfQX71AW?w^%nfgCo5*U6rMiSLs3`egZKJBU)lKZt|%H>t`iA96uXoax(x?e_YFtdOV7J z;3?5BqYE?wkB8)gB=;(sk3-Cekk}9EufFg60A7(N!E{O_7Vh z=gEk&uUA0eTm$iAmF4lC4xgoo+{@viMb}||lX*?E_$o$O3j_3%#1Az%IV}(&+cDSR zk=sdzuL(5ErZmm)=RBfV5(eyp20iGo<&q~PI*5uG+YdUI9GL|re`{0nVc%NZbB%;x zcMc7b&l4Cz-0ceev*2c00UP8VnuqER|Bn6aHCZfR(3+qx9XtvtdXag!?1rzq&Ppg2 zF{bXsV?yn=Ff*$Ub}QDymA`;Utst1E?^pX zag!w2t-&aNdW2H~prN-&fh02s0 zRaVd|;}`2b zwR)g`t4S^H=PgdtIybDLG~`{1YCmMGoer=ObsvloUQudbf4>HjDt{^k_zak7 z!2UQeLOz*uf6$`_$I=^2YHU2)c(1FCG%hv6C&}E5RSgSsv(|L6Sim8(OK+VneRg`G z!cqVUWG2H~<(s!EQ@4sS=DNecT=`_?7DtJ@>aXliV39t(2!viU<4;#XkY5*HKF@oc zxsxYP&XvMhlAN36z(Wo?&ue}^`^FeuQvZxN;RH-Ce~2dlML@d0d^iOy&#`Z&5SqrY zQy9r|+7|IH;~4qu9<7!ql3*;MXaRt--<~%=1Na9haY3PvKO`gdSVTsBaf(FdPtKNa z&Q^*#Y=TBaYYHVlB$}C>EpAI%ZL#O&JxRYDNhdOF5K$_3Q)-zHiB(Kn&NW&^S45A# zx}Cw++LMt?4}avqsCa2-CMn_hh&5MnpG2=FW_KupUJ(zJN{jIxjr!Qh8wEW_qAJ}6 z>e%_6iS))7x4lfSVJYHrFssg;EcGAc*sw|=a7Jq~w2p=ct)mCSgYdsK2_GH!w|X$N zZWjAb8;pwE!Uz~jBOH*zY_d2idpxZte&di1ft4^@u zIFLD5Tf(w~P4~8gSe_yu?2=7L&%nQWhkO8}@O=vYoy3nD_+cG5C_wt438YT2q|Nb% zIY2WrGk~z~{C)U-t@vna2M@>p(aYT5pFh$5^%iDFz9D@})G+fi6lQ zWno`@r{xk*GOxb-qG`jKZRTawIBkZvs9JjxI)HzVvTu4Z8(k0HD?NiRxA&-dN6R;~ z{B14Y(ehm_U(@nSTE3~}>so$M%fFeGGxN^hEPqTK#?cZFns%3C2?Jo-_{r$MnOUZJ zBch`ytOVO_ftkBkW%g&PfC!mr9kO7l^ezs5-3GgD)U#KRSyNWsw~O!N1VQi6oJK81 zP9bea5~1zit}Ort98yJ{Ovg&Y3yBiJ;o($%OBb}BWZ$YVSaXCdRFIg(=_XX%r$zaJ3 zqo4F@H287&4DcMu2M=vVk@miLPZr8Rt(b(~JsNYJCNYD+&?|$!bK6FsQmNXq4yt9k z44a5}(JLPr&V$#jo=?2%#D8FSEHR5oQKe1ydSQh9gW^la*RhV@*!r)E= z2KnwLWa&tHn&mYTJPLuQrp%d;XuLSq}J_u6v>L1Dp+OwD&Mp!V2&wR zm11#DLB~S|bUb512N(B-h>ucMe1J(zNX1I%`u5Q9$EBx?%d^_J5SfzFBidow z#ksy@X&eVGpKdL>Tvqyj|D3*_FyS*F3O;OHTOwI@Yhhs}4_7CD?~^e_to6B=ma5x~ z1jsBZLaA?(l)M30Syix7)M$g=E>Q2(h@Twm5WPmX_y8hfEoB)@mhn#>oSMi8I@dHh zUNt6he3{bl<5A^>x$#rQa%r|Q#~&Y0XoaJb?-8fHUUeDtvX%_O-ZCS? zXu&uDL*k-eu^C+S5AV^?{B^t4&hJg6?j>7cd)wvJWcy<*aT5Twj*pEM<5Z3<{h5@( ze?%_ei|&CCE1V7|LhEj5mBZPv6uuoEEhZ2RGHGv*|Od)uotJv{g1R) z(U5W=Ce%8fHq_zP^$LVZ_AX4f=}GHe2p=Js!48-mPX4%p6;VT()=*_AKg_E-x#}L_5GkyuHBjb^1`}2`4GQ$AJ)uB;KbTNnC>G|Fp({KbQmz zJ%f`Gkjnah07;_YL=)tJ(D;ALxdBPB>?*p+p|eaL?o232Nk`=Vb1>x^-hRe zqcJNi-wZ2LR#==X9x!3R=rfQG0j#z9i(~9tcQPP{ElZTIU@bdh40U39@<6VIYTM31 zhfQB~{)}PO;XIB?7L3U9tv7!%vq_#eR)C>GBYInZJZV~x4<{}N+%Jv9m2R_Q1b%0x zF5(Xl%TK;fF#7TF@nYcsP|ozE5Gg(&Q*jqYx zE_!tO#hTlduQ~F^rKkeV33RNc2elW-!6^9^otpoGGCShckl-x+tNBJLc{B{@DS$$b>ye9f);{~oQAFhOG*L8fudKz z)bUvsC4+t~um~sg-lvvv&XO$dBh8Ror&%04tzZHES87y$V%0F(We>6(Z<}RF<1DSd zCN&=`k=jrEjn%}j$yn$#;JId}z37v%w|#iXA>S>#y+#r?j9ByxEoYTFA|bWQi~I%V znhg114O@~QW`INw zn8%P9opy6AX<|&IO$?ZcP7OEx`qXf@iK#)Xb8K?skzTh=Z~k5odL?pyM=QCGye5Iy z!GJ(YmT2>&*Xa2n;9bS|fldRsyjX|Vut@Ml>zg%I!^~ba|E(zt;G=TErI;9neX{(i zLZLie21_Q;@l0g_c6eun~Vqgn!yYpy4T+_cwo5fvP<~)6}~^x#6&IGU*5O z9T}gVvZ{D_Y1Ite*D1h%y{rQVt3a>m5a%wU`@Xe|x-U#~P+Ff}+mb(#?7buy1c&Bki~yi#o`YqgiT zOq*8sHz;+#WyBFMi8NX*#*mm!!A3$d0{RyfKo2W`(t(N~nwhzO4q^*137T+xW3At0 zG87p_(=4pwTebX=y=vtjF;yOEUHv;|UAM{RNdEYd&IxK6%xf3iHn36e+p`(=oUyIHs_$Tbb#HQ;%uoTV3yF4TTm(MNzGn)yUvu4%P(6Hh zmuwnrHmm{lHp9AqyXXcXOx*4gxkHnMD+`H=E~Jqn2^S2B!^whv0uuk;@m8#^w4`SXnPIYsf6WYrH@zczHl#GweDI= zcaIYR=0yuDaKL(@rruru8}1wvTi6o_YsF?SeqharbH z=JL&Zn6>UfzBGqZQ;hYb&i@FevdK4e3K)0GHO zmWbtvxlEF3bpsdoycF?6`a`B0yI#xJj$-~;a z{Y1X+$tVKy{69-+TNl&*f%fj-%h3;IRTM#gQ08W>qQSH2?+mlDAIMM{fA;&dUj36C z@BZx^?<%x;GMZZ;Rjz#6pRb==dUg5rH?G4<+`Wb?n{}7PM_Q;%foxg0bSNxCjzmqW zpfXJlYNykxkmyW1s5Ag0haV6O=8Bc*0E=lJXV`sdOZ#_Zc4}CU0NZz(D!rJ<7)3*W zI20#KEq`NABKZE4E@2UAmfqu1FRd)O0likCFYx+Y{Sl24zc*>?XBBksNqw+lQnTEt zf7nm!6cf#3XpRK#zG8hQ5S3Z~IfH=xY`h6DIHJk0o*mBqmE;Hb`?Io(hoYryZX)CP z9I+je#Ff~P{>?1*=gp+Cf4nCvZOM>-Dgoj68`fOmWO;VH5}pcY!3(|UJbZQmn09ouIa@m6m z;I+sJ-NgMu7EJ4%`F>+(o)h>p_hlvzxG_Y2-q`lj(b&PdNZZB0p(Hi6zE;hD!#6Is znzExT>Opu_@t0WEONxNbk^it^w1>NI9An?Ihhq{r_s?cAYmbJxL(EP$GlFicLSJ13 zYJIO4a1#|?KUA<*KoJq`H$Ij~P|15BnB8@kx@U5TAKMi28mT2VPc1P3I2)jg7@&&m zv**3i>^XP-!o@4+qxmqEI3Hwx%9jwEo8Rx2`28%(R7KMXk$Afq8vC4XxA{kD$Dnh- zZII8DC9#mabiT8~M{p6vEo ziW^+a9;EvT_1g3{_0Km2qVKvboEYX!E$#C{BQqe3|nPwYIap(#4 zLjmzyE}GH_^?({&Kr7}?_IQWz( z&rMEMHl~TRu5Ok?Ttr~Qa){eGtf4$&oMF%mIlNMeV|-_Z0bFOrhHhn>bS6JG!%0gL zS*JW^1(l*cWi?y;qw259rA(f^!u<6-Jm=M`;j&xD^MFPO9*-b@m<0%KTBzMf20=+p zPwCDbE!(?|Vky87Yh8&oljVhe9O>3A@yPasvBJMT2EC+amECuAHK62yN$<-j)jL6U zm>-c*JYP&Ek;L)D6QRTlJl0s+IF6HJyU>!so#S8U@aO*-gAtg=8X&Pmk}#3a+w!N= z_~i%Xg6Bm)$!r0Ctpd5lr)c>wpoN*4VsT6f;kQ#mb|RkXIaPPriFHL6#aCm7MV6ZI6fpiMU9(kIxE=Bs3c&7VaLC z@8g>`RZZ?#cY_|=QE6jmavSWUiAk+A!B@FT)OA32@#~ip$jmsO@{Z$>MgqK9YbHK? z14E}~C(evr>*5Cw4GD^ehdTa8grp>v7jp4Kp)fHA%&JlWA_y&Z|AV&F9F9>#qtgl6 zoxrftY$Q$aQ-+!$Qvj5ThKxfZ>h3orgVyuNkm`BVK&Z-u5va+qa3M*s%g2!p3JWns zbpj24@LR`Ybg;`n2OrKbhC7CYqG1jFt|7xCMOp)-PZZg%ZJ{!$W4>U zyan>eEsQr64f{b=Cg=9+R?BYZ&~Lqv4mJtp(e<3bsrMcJbyO8$T==2RD0DwIHf#A- zfWpB{G0kNNBQj_1e4jhjz)IGvXJ&x8DoL6)VSxw53ZTUb;t}O|F zwAu31?3MzJ$DS$NEYM3dZiN%!{?NJ^T2r`*yZgeCdk2bOM?QXUE@lCtU@tj#JxM2L zR5cw<2ia6#{5lS{06jNbK4OIxb10(m zz0wa@a8?Vs$m6K#Fe<^g*ct7l0AQCRP|z?mSFoyO3_#aivS%s_m2wn}t}=-V(CHA( zN0X^fnY;6E6qL%R?M;^89qIiUSGhdpHf|d}U36$j?l{NY84Y*ppJM(V6C#j*90#c0 zsr4|+(!F=E}V3xnr>jd(}NZV45rXSYhcJ&pD z)H~dycsz$KD;Db~#UV!tu-CtD%;mt)w?xOW{e$<7Q_9D*SvO^vb-QJz*=^cxJ4Ogo z5z(KVTWvMNlZ82V2Ceikal-L`b63ya_{_EQV^X1+i~gd1p!sRJeR3mQ{C=!$$-WJ` zD~-4Shwe@o!YOHG!~0=RYlHOheHeg1|=)(-y3_g^pBEPtbe;w>1vSv z^`k5k*dJ8ErgC!!1DR)>4YxKL>by|yN@Dlcz0E-G7Y-fl%4UFlVd!9gpV|ztuMHjS z;%0z7KRDRiM3{Ra&%lYNd5+OB3sb7RhatMlQ6kkd2$WA z6YmH=&e91I$T-F?b_}0?UnszZw!I_AS7CqxsI537UR9XWQNloGPk~ zs+clUPTlV;XUBbij>o-;U~*`b+erAi%!2PU8$~eZ6$^PaD&g$x>|A&Xb93Rz*;C=k z@<~jV4<5R86pWc6p09$Z=H3p=rK!rxbD>qXDzkI_<5E4PGlZtyUhH9DAMA_nTJcQ6 zK=V8D$O}6SFUTGtF>J{LGN<7C<9yx@*8R*-Y)c2DEa+)}CVl9NV9yOspe z`o^td_Y6jXkyr%kLB=y3FS-;b8#?nCn)UmxdrWumbOJJ@p9i!rC#}sphrTvvWhnij zh*@@%l$f^X*=y@;e%Ij5ldERep~f3BHca5Wt~LKkO7lC0-~9R9y}dWg-d@Q)_NO*- z?62j<#;IX{V&hY}$9`SSU(JpD;zlBWJ~#4u?07s%*+sh2vO>zoO@g_;IiYk+8w`tw_2GThNj%alZOX!WrHDpW#|wW zHyGj@Lx=d(21ER*!68l#%3~ehAc(hV{O;LgPK6u<&toRJ!-{hiM~ejs%3_WxO?#sK znR=MCGuo^3ZDCSNWjIQ(6sNuHdL5!nDvAAdMkcKmnfwow%Tzq)PS5rFw7{K44}`EW zo9GjN>ML!tp!+h;7zpA$eDoqe4y8fkpSfrQ6#myXO zyV++RCHuScdGv51@q{}vS2CGCL8PYz8_-n(Y7ZVrZM0yR`azA@>)MOb-N&+5sUAw%_g_YRo!+FSE*$f3PS%ri@vz^wh@&!0?_ zI-;4&&XL${zE35+v7(dXzg4g$>>?9? z#p%fdR(npjpPKLbMpT$MOb!5zu}vS73toz5Do`?U!J4U5tQB&^tpFV02>jE2nS>&u zPoK3;fkK@lR*!4CqWs|qpKZ4p z242qz8+Oxo2umGDz>B&;NK~&Fge07QOhuJ0EEFzWymUUibn(jh@cfmtSI=F%@=9@G zAtV+ra~sJKhensjx6-Efpt2tB$F9aS}KnR)4cRL(CjAmGVs8U33E= ziz0gjm}uEKUqRE*oOln6YRAgeGnMkO;~00UsxR%L|00%5vP>~^c+l}u2J9DqlA|#0 zA4=u_PO1DS1~wIo zP`+ucREk4u=Rak>4S@?hEiJ#GTE3{|U)1uiY59+88nzD`_#mt%PQ6o0 zcd{1(J(`nVIItO>_TvVBc*P;7nzXTzWifJm8GlrcLt&S88M}01C|x@Du-c`5UEJTV zi{uct+{Zpgv^S%Z@=@Wm`3{WY*X_>N!QoA;6Pq%z`cfS^>|~@m z_59*y4N5;RfFpUihkvJO<{tRtrg!mI_hzHJq{ZzKxnPX1=O<5pmP>C}_RrzHa^(eB z>ZcaM;;T05oVt=?W~W;P z#|Xl&?MZ|KJ;^r}j{mH{vF`8ydi83g0&Y7a9@W`lHtu8;pZrJ@Zrv>wtb4`WfdY(^ zDMR1_{nhdQuRy*VNctw8nus(5*<&2&i2pCjxQfu*6E7Ek<&gy~yS`v+ms5IS$H-II_rQ5x&!^7TWof!c5@@Z(E@+v@pMc6F!gIkhMPi?InsDkRHC2r?)9^Lw5XdY~`qt)uQq30T{ALc}qzyV3DNXbq^KJ$M7t zQ3Fu7+X&(RUb_jrFO|AE{g8ZrE`Z%|sZ$TDFgI_9ZP?|6xIKlB zz+1!5p4Sfj9<&$Y9UP5t4Wr9S=nbtZnUqf5nu9b^n=dT7%TC)eUh~OO-}Rkdy;Gtf z^qFPvNm|_wmOu6Bi(vB_o=)`F_oTHmJPq=HO>Jj*YUJNcZD)8&_utx+M9j3EVe6Cs zo6;74Cyaxn8Oxs?VoU$sfW12_zFQe0)%|vAJHw-f|B>3x@TmKLrnWOYs{3C`JMUB5 z88+GdhAD_Zf(K}lC*+abM?!M=Irh0&L3%pnbpQC?By>`rG`zP~i7MRJTT~f)bm(&$ zl1G~PeDMbjs|C4eB57cDnq1N{M@@Jn31kv~&*7zTBB{$GFVOs6p#NK$Khirh=68N) z&w7XUvBa4r+@~_tvvnd@=vKh{nQGP_okV8@ziXnf6sr8a0jP4jiQ%LNO;BW8*|D== zZtDN-$;+DdM9)Z6H<=|WOt3$ix90aSf)-Bi7Q-rirz+WTF@?|s%_wMpRY7(O_!ZVK|{$+kN` zwVzyPlaFtHlkeI5Cf}RC$-+9D{J`cn`M%9>^8IN|ejusI*;8rOx@gY{!oL*HF4nMW zso)21PM(|%56*^%W>D+t$qi|n;Q=TqZcZ*his&E88P}y=Xc5}2E z+{E^(Zs6J8TFG;|z?=Fx^)=^wtbJyG>DAWdw?2EY!rlWp zY8eb~@Zwmo)^#`*o)?@(Iq(b?shYFYY1W;7?y>q!V3XRq_GvBuNt420yUb|}!9cWt z!F@GA+qWqLK9oAQ^$S9!n=;Cosj+WWpUoT-gj@U3pZ_R^mMBk7-Mu$gLC^1LiRH!? z5#2Y!96c?2kTiXNem;{L2*qsHQTz$`3Dd&MMYgzZ9am#1^ zcKw2TvDsaY7L#KcI|O{S#5^uHqH~hN&iN~^7p<~!0_wJZJ`M2H@GZ|O6YB+z(8yA& z$HZZApk#AjXq7V@{po8}GzCWFrpt)JBP8t=NK!$Kyg4!<#kf}OmJ7Zq8WA#fcGG>! z3ER#}*z9z=q1&!CdvzytRs(eA?&7`$zCGLZF$j*^4DBHB7Lbk{kERJdu{6g8$%QpL zs4a!TlGj;(VZP=I+>IgZ_Nq;{1`Tuq*y}pjl)DT%i3DHkn39ABC+UJjU^fl^zWbwY zvOtd^`v%yXFmTIGxahQskzqG`Ok!j68d-iwA{b4B5B2^P9 z2ev>W(-5g8+h2+@BIUM&DBX#YA_XXq>h?qm7Op6Ny%sg-W2hJsFb2nEd~UWP1&(=6 zBX8lQQti3TfD5Y8u)Lj&ghjts9j7f~3R@(8f*5Kil%9jR<9NYBi_n#LlcwBu-C3nc z>36?ow?)OQCpn?lhgIEL{ZMj`oI6cxjsr$l+=WgfR>UXtLge*MAMh7!p1ut|liqE+ zqGr#3@w=cWTnIYxl7*J*<5lSVm%zqrfJFnncHs4VQlN$c$~&T;+>zLSdccGwJ8g$1 zX)hP(741Q%&Cd(aA6@haV^g8t>(T@g{{kNPpgGExNV?%U&RY&ociwW^tZ&i806fDq z4NOR1bc{dw#-CWP+yJ9>F?y4FLDTG^PW4THXnw(EzcCiKpgbcupjJ%yqkQHG8O&)Zdio+X0?>}aT1KJVBIVwRm=aG?VN)Y9Q4de~bwgawd{2*j#H0-UIAp0TjVC zDgd!E7*__V-?dlxG9`oRN6-k2_-j6nj>v!+hs`~QPd(Zaphsl8(KJ+kTCu(MFel}2 zZZoe2#>I|^v9T493Zk(Uld&LP&Srr2vdU=Vzp5NJ_Pfky^&d69x!&b-|ITE8E(Tro zfom~pv%4sTFEkuG=y{GwTv7>#L;D?bdM6Dlotq` zqR%NOA}3)?SgE5e_!PCuTF!reVdzpzb!yk?*6=%}+l0p04{BSqP^&8KH^KTE5?3VB zhDti>PuQqZA~!?^KrKPa8YW9J=oPubvu21W&#f-(7#3EJH01Z1fiFL2{*(6%w#fxO zt(ll3A=jVXEKE9mooNz0Fy ztX)qy`ZJrs4MBM^?ozS8FAAtL1XL5hg0T#S>dKTTR!&O&ls1od3}wV*!Zh6UG#t{% zix<;ud!Jl=*AAA9^Gpv0|4;WObT9J}6=*}Z4gE8nLyW1MhaGT#t#@iY%%*b%1^FE1 z*5uLLE(SURzfnWr-b5hZaj-c0nGuVHv#WP{RI?vJ7lSGmJ2+2}IvuQU&jc2g#M8kN z6X@_e3RnLLJ{0)ALxbB#z|2wl{?|bF5?X z;nsV7SW1p_`pGRnB4HaV{yW=&eY9GRw-O;6~fR3<*w|Wt-7| z7VgkGv;jMamAy&x)~celBx862g$bS-oZ}+isJnfC-1PxyM{ZQ7^1BCdX*@1wQOEaY+WOIzI%bp`oCIT)5q4!=0?R7^+PqSGc<+(_J7!QAKeW|~Y%a3xQw z^(kQZ%P-}aJ-RyJ-d=4KK9@n%9CBxLNvSUZB&ttUC?}xX!7&=6iVL_Cc zNk^{6#bWv9sQfej<&71fJ~%eN{20s+8p!{StH6q<1~T?q!!&)wgNV?%&e# z-Pn)JA@lU5pI|ho?vG*^Bu8SGoo+nFxbb;cZ7zBz~@NiXs zLEoQbu=20X!V@ygp6%QE$gMw{q2~`JBb{^4J}zX#RPL_RODwC?n`wI(y9Hi~2)rql zo%;G>0t6qLq zv?CSlOwgJA?_wT)xmMD9iOee!-1DkA)!Of7nVz&7%}6iDK>Z6+4Ah@Z74J5G$Q2?p zTKNDUwI<8s)+EMVnmk$=#AQ$)@+Ae7ol!f(sNBuM02THwt~!Nzd6-O!^3B7RRS7Mt zuxc&cJ#jB=hh7+j$HM&>SOKKq!`Xed6)q)$d&HT3zUV#iX?{C*zaN(Ry?^U<=*`?6 z;_UcvhA|9#)?Fw+e&l2KV9LOMfUXB@1@2}Z>6g#WzohNX{-QxX@9&Xm#7=aNPnz|Y zGqQv$df47d=4O9Y;%0v(x707Qt-EHi|68-%X`sK<+M645Y4pX%Kx8CbrR%>^?S5^A;;-p9&PXvb7~_BxG+3_@=mz7=?L#8 zZVnIS*xo5K39p3d;pLHyVt#$c$25J3JpVn3JaM++I z51fx!7Dn)`m#sQzJc@Hx9WR{cd87d6e5E{9s?5=n=*eQC@xqC)@v#@9%ig!|G%)fH z>0JQ2Ay$qCMj1(D<{4hmTYE<1dt|S`Uz1;mYESMy@YCsH4nQP-)Jk_>i&_Puq_AB( zhKH$a-R^fiTP_!_EvoX6xmuvlz`;76Xc=5LkK{w9oNre^(pSm9ImoK^n<*zwBG0M?h~Or|29`2ir)Gt_@OkUW!waRXX5qj_)^>- zOn>)#bQSBr%Sk)>1h9?IN@8CXGm8hC=UXg77p3B+fMpa}A(Q0Vuk%z(a~&#m_F>%*0OScdQOo9IWI z43G?e$fIfWk#UdpgX`E+{_t>B)tv3hYM5vscCHKM??z)%e##!kru_%sO`CS*P{T|_ zDv`3;{Y2;<|5)gP&e{Fgiy>_J-g3g;C&C^S_Mor_g*_|;Cf8pd&F^T8>7!j53LGT9 zn%iP>?_io~@^>cc%CXh5wS=aICHg(=E*1NKb!o|2wTINLSEO!r%Ew9{hyLJKg{6nx zw~2mz>(qkb_Nod!IZk_Zyu#AM?$v>Qy{fux+glrgbwm*ZTXxOsWIHgsv8EB;6l~Ip z>pPe?WFyNLZR7^-i~DHU*H!tK4B~b0Z5wEX|3`_^!%Lzh-^vibn>=?|+QBG9U!1>x zbeMyvSN{8kNq&0ezdz@8G&V@<+8XN6{KLcmW#sm?EbeXnV=ZhO&Pk9j)3q-DIPbZa zrKoQM99f!ywWkj9e29kwLT9z>g~1wTLO*B)A)(jM#oH%v7{eflaA$H}*q9(|+v3{V z*wKSS(-f|{~)fzIy_*Y%>GLs=UTFor)gK6<~q6eJL<7}CE~Du&~~?1 zEuyM&4s}MII;ID4)2{Yi3RBfjJF*bH6l!OuVV#u+N{h@R6WbqBi0xd2kijTvmb$6W zN@1G&-luAG-^vy0O7GY=D;>LR9O*`z4D=w!Df@fa^pzwtk-)P_BoOoDkvso4l+Hh! z-1!0xo`IRfcurDmjp6je#J_oeD|#>fb(SG4U@co@u0EC2!I&JHrZ-OzTCbS;jq$9u zNXMT}?6?THwKKzFqK4;^$>1vtQKeBO9v7<>5LB(XTYb(>12t<~Jwv?!4 zGA{nGf{UjjTr`~^q<47v81kT&^B})41Wb}j^1U3H_#2YzMg~?GKNMkqRROb69sO2R zsfK75N7+=LN@QNPbG;OsQ~?fQp9-Q;PO1PO=~F@KNLI--jh}ooOnj+|=OVH~gB;AU zu-EqOh7;n&a043X#0XD9o%vt?a0F8gBnf)+xz`4rx)T!HRo*T4@u*1Q~H0xo#6WTZl?OG7R4h|{>s_{I~Qia68kbuKPpRx$f4@7W(!nDN;?qRGF^fba; zlAx#IN`;@35qV6abOdd|!|N)?$vP6PAS7H0TQbntlfi%^$XdVsFm1h1_5q41My7-x z(G`xmR_Ld+{9l%PJSlqIKO77_1d*vr(qJ8ka0=@%yH1$i@k>6N?c#XmQ_6d_MkBOr z!s+BcqRhGHlzy#$c%V}a$>;skp+Bm0=wmrZVVt=dS%nbY<;(FMRlGy8-fX+T-Pule zEu6>u&F2Zvm|ttx!gC(*+Y4>@|1vB%7ur|bH77jNSq*P=uCCy{uV=~S^w(@JaP8*# zJ3MvOtA~)ouhaf@rvaZ>!Nqpa2`_k^R(Q^7*u5r{up#P*x5M+E7tS}`nsc_(uGs;!5whFCZ**AVbth3I zV@T5$a$Ud6^Ixy!e>8*hh)x6FkmbCS{?hkvq}lT;Q_s!hHSDD?oH+xUWveV#WaRWJ zxlOY?bEL9=4!xvWsW^o@jsJz@qgfp$`V$+Pp|IZv&DZrw~O+B#{}x~2TML#Ow*9dNY;n%YliDC zo45H`AmQ~>$G~3pYBj@g+4&QEN@M0v=C!j6&4g}th~e>@Gas+sBzn}^h#*x>;9tOd zSS`#u%|@8nDKKOK6JQ_TX@+><6x4WLP92^B4ew2YJ-3r~q@V-!Pk!~y2P5=bRXnT- z3DhlrksbR0+NAeJm`1BmHCMyvJxPp&YUY1BW* zS#(yrI*5s`d7?t)jwktvg9#LneEA5pryLLb&wG>lU>!Aj{>S1p&>NkxAIiu-mDpY2 zm!95dgTTHCosQeC60WXK8zBzu;lui_JOy7IQwj)&H?X_Erge8LvAfiMQ?+Zi!LWIM zJ9UtFMYlE)=;SeCSM_8Wqy78WJ4X9AktDS-qJzUaT?JroJAuD-CepTqnstxiUo}Jl z=B7L5c+C2g?~;!HxHsjYL~1CN(zbjFK^Hl$lv-sw5S2gL;o!fMEEk0BR6#%iz*`65e9 ztWF)RsAz2r{o0b#vP0j2YS8Qvp!+fX^t(0|c<$n&;}K&k+Pl4Q*>zTk+Y3s6h}Ozf zF+5DZ4u|{6_x|t}`My<5Jjy{4L9qC+hG?CqsV4O3MO_BpllVM5xYJN^q9-9dzbohS z59NIR;hfJ$Q}lad1XTyC)xe~)xx^v};c=M|umgk)c5D_IL?RkdVZkI_XhDvf7 zhiu!n=XY|9uDZqDyB~wUiLo}iCp5?Wpx0;|83PF`fWD6%C%=xNYY#nXH(_-xaO|+=);;*}YJi@07Ho5Qf_ zJB#QZW7nak7MPdULiiaB$sM;&k9KuC#D${MTw8=%03Xee!Q?|1n)su?=9AXp8)-4b z3P3L)I!g}$kNMD9cQxwniLt4%7hLjCNctRD{<7_@q1{>tpq3Ad4J$3qg@M~%!zQ7` z@`=Kd#A_v;@|Nvp(JEkn2)m*sP~9Q+b3nEUj28ink49jSO6i_CY(q0758w3YbI3}p z`dpE?f{ONvbG${2aR>N;27D)K=3~&z$6fgNMAQ}oDP)J>l^Ty^tJfd<%2DUT z8S8u`N1c!6c=oZ3?eES}=X)~N`QD7rJ)ZHo_vL``{WkROH^hkAoJY1k)C2L!L-Dx@?=*toWDerZWJF4Zdz}0S3GlXX&L#tDdA=wQ0 zga)Zlt*e{y$V38@E$-u(gcIrQC)Lg>evUUv?jQkM_-s0G;XLfwVw4uU}# zfYb%uciXUr(4Wxd)8iYNpaVZre1#O9Ax1BS6(^wXwp6Ttu>9&;*uf?2wi8yJV8wCT zq1~<%?h+#3!X#YW*!l^=7I|oYS`_i7P9` zd*YOJQi0{`_ z25;_!yqzd-d~T38w0qHnbrmQ2+?JIYMM5ztzu{!v9@#EQ6ySJpFcDaEFoE+j_f!3k zYSJXWEWWGK>LTE$Y~{O4AqGVx0OneB$FLhr+I%x&lSi2f!C4&&p9u*2m{v)@Lsy=M8HxVkOxFQnT#yMnSYHxf%> z-Qm+WJgjF?ZB=b*4sW6Dn+;0d6XM&l zR)V!_kX$V}MVjXhO0&k8q{ZBgg?w_=IS%3;kTx%X1W>K5V`i|C3y>jvn$%qEwM+S- z#)F=3OYWEw8m_aJ!0AN5*#t^9FK@1&8ha1wHGQykss+WHf9Gwway(2@YE$1>FY3x; zXR!IppE%gn#N2Vlc>j-qQb#~`ew5<7*l02)t<|?`$sc|Bntl7tZI!@7EMs+ofuG_M zki`Gj=vtFpMdXKiwG79+>E|cUr+FNKJQVe{)+CPyx>1EtldD<@L8$Act_k`v&yOez zer=GFn(rI5A<=&_7h`K$8ur*(1bGBX}=KQMHi(~G77W!JlOi5o`NZ)YCT=Pu@DxZex2Ck*=0f@)D zumv0$@`Pe-LlSyB&DjQP-grokjo)!ap!W{1v-8|b26%Tlxp`$R-PV$V7rs!r;sZY+#aprn9rj>c?)NNk5RW8+QE0$Y>{(G1 zuD?bfooeNMho0+#`B5}w`CK+cCU!0fL!(MDP)~>UkgHxtJr^a6IVi}bNU&P@8_JM7 zmG)j|s|lO`>+j}d2iA7MRa?OQoKL*3YZng*OfFE#dHX9-r_`Z2aI)IZSVm4NseC(T zNfMy&>aA;mP!$FaPI%+%(strQqw@Q>L)f$5l>bDDo+X&k2PPvtENmB6u}DnPYMmvO zc?us6HA;zncdARx({!aTN1V+_hnM?Vq!95DQ98qRef)4L_1m$b5*fe`?AEc8dNFU` zW}f(QGL$6tB_16x*Lzp_nG^ItD-z332BpRn^U>ea@YsymylxnLTHj{l# zr5Px`G7fRsi5oZ%fCB6)dZ%>29o;Mhw#ZsXT4VBC;|$obpcprPjHvphw_Vea0lA1? zqpKtde%139SFK*>F&Z|02J%SP(_k!3GGd<8p^6a26IY?(tQ2%`)R%tmUY2Z7DO>A6 z|K?iCQXKOQc0A%|%-ylBF71KVxUaq(h!^P|MF!mU#0*Br)Ib+jLnQAH+FiMr*`SN0 z`4Aig4U2Yf`UwiOF%P;mWKs80FHGdy4{@M*C;Q*M8e-`t|AVGw@28! zvDaEa;zhB!#{t^!+GphdPrvV4 zaiN%+27Wi)i8W>d_Bbc*B;Y~8gRdEL6$g(#PBgXy4YNXc zZK!8#uQW^^2Iv{p+ZIJC&d1J0vS$y5SEo@&o-oWQje+|MM&_Hcx?Jg9L@>|16iBDN zZYpFFA;q1!#!tpB+YEhpnhKnX-kC%=PPDA>5BHKClj1niSZKU{o~}nzK<;Ra6~?kR zy=`l2!5LkDc$J!>zZiy_D&<00AZBKR-d-Md0+e3Dp2(^x+~(5whL}eu z`BDZ2A1V>ioZVKQae_9)fN@2t@0G5{r zxFb5Iw^rT3=mfd79R6RIQ#eJnf+=7>gn3?!Lx*;F>Iy7~%ziZ@x8d8~ky19J3bu1; zW+_1WTgz-$?5E$Vw>&OB{9&kxW)SYuI+FySh`^HP3bo1YVZG7-NMf5=y4E3`E22p7 zr#~5_+PM&X%!H`VDcxH2ipL@=W%s0)jCKufsz;oiNntK1T05S9= zGP~mt%)*KgHLRWj4y^|2&Oi2Rf6a&YqM4a9=H|-n7Vdz?CLr3i35lRuD*aB5Tu22+ zhns&3ENYUtivZe=DJ+$fGu)M%pB|{7dGVM9?juNYcO=Ir(jXo1#5>;0mALd z=qHLAe*p2l-1eieqSF6y`;kwmO4I0e14GJQp(*J9$%(uwVQD6v=PIW$i4aEO~WNU;&S$f6Rmm! z90`F-8C{Z=oZduDP%M|T*z7x3Pygs+Hz4QJ1$c3vHYVT(9x(BT$Bfn-y@=Lbw!siY zUm~>*KaFZ``kP$^Zaq<|H+P4fk+umlv3JZ`Fb5t4D~K)EUY*lsio5aATK!IZaYMm> zU5wO>Q)KrPL{_E*%^bs6RxgvpT7ID+><}CUlV61r|J(TW1p{fV_-s3pN-j@&5)QrTO#sLp_05=(@YzuElN9 zjmL18X4YwI#>Uj-wsktFR4?0hKrSO=}8P`hpSx!4IIr+#L9@qE&+hsdRwWW#E;7(DSZxNwA5!bZ%-gs_Fk0Vfugbk5Q@?J z2moFCB))@q6LA59vVd!h$3#i7+I^Tl|51L?vrHpc4e~I$oZL9s`x3Cm=GloYTXjM3 z+^iI{fTljpq8kx>Yd|+zS%mt>^O(X^svW@4JXy0rHoO?HcLn$A3O}ns5oxugO9^36zaT{x;1eWNgwIh!Ldvf2N65T@Lfvbz!r&^p9?8`m zy52@rbTc0k>w8cgQ7--t;}rv|P*7L=^_NpsPZ2#nZIiRd+~61VB3_bx#XmJpDG}sS zU+nwQ%?SU4RfutQX{W{loS$!#W#2X*VdI*Lj1yL4Zrs~5iZIp7t!|~~zRZychMk4? zj-s;>eVajN^9ICwN82UBnPYwmCUjos7CA>gEDH8?;KxIf2XYy@{SUOv^xDJG4c7|) z+z6y}KKVu*-E&k(P)Jw6(@A~`8;X38Cc8nlq9m>xRoN)Do8v=QGf`{C7$0^yBB$ar ztoa{Y^m^;18#&ktSMfvZ7Cl9twyRvk1GnY?*#zOYVf4KJhlV?!{#4@XM088M|3M8B zXULRRUhvQUHyb7eE8wqr0EytBBue{cX(oe-K*cW&A^zAJu`;_}1o1LE3X=%+k>L7p z^^rGv6Z@|R@Jj?g6GJAEO)&i{DF-U}zNPiRHqtVA{zPKnN6E#R3euP}1l9-5Tht#q z7=m8zt(4@DXmOJfvQBy4PPJZz*E15&)*^WdE-<~@j2lawS4s?L$BaI{qC3io>oAy7 z9b-tzT&G@b|J({BmpwR>>Qx=bYP8p6^I@f2e`-ks%v{mg~?M=Gj@BZ1v~RE)*|T z>8Fl%rZm%X?)#)jHy*9rP#5WhF#K%P3ycwznAev*sAqHPMY}vv{QXFVA=Xs1gcvX+{g80lz)JDV4Tr6a^kQ z|G$YupWTQGP=;UJI8-fc3@fw+YHv$~K#|YH3CHvc;}v;@63vC1Vg;|qeJf)lH%S#v z8_#9nVz#-0nfs-Qvi7ACz6D#i1EyIzN596qHsM0(U7>F-qjZGD(tmwn**|X}AH4qO zg6-_IAF>N`oH54*%qv(XK3&!RK+|IE_W$^bMC%n1fjvn5`iXg)UmwTpVd@S0Udb)i ziopHc{AqtmB4$O8W@A;ZD3wDeeU&-0hH5KGf+ons^_8ZqV}4iR+Q>fC>#muh*{%l5 z!L57AFsmp>?1pDWpzy_ljr^iLRKNV_;zg$-&-N>UjD3bL0CTwR?Tyc9C7k!-0J|MR zCV{;gSVuoN-!SbaW08KL7oW3$XZ7j>v*C)nLhB0kFQPa7t>)#HmVUM!Ni^Qg8nT~; zmWt@_zHeLpJLe_x0p1TafokTXq!fPFzlYyc@!flRxV5PGrM)kcmG{pX=@N89Nxzz1 z>iv*#-l-O}aM+_ODYB@D)t*{f@4H_YTrT$#x==yHJ?m;0vB z9FDc@`TicU^BVYNWF`_uTZ%(Qfphyus}QFl5axXJr_nAn(8DYh_ZG*p$Yo{@dX?{M zuiJ_x6$G@!=j1o(HZN$Qnjt^Jl@pv~!m;wDXA3mg0a1uFCl>bC^pezp6&V;*p= zwabcv_T0aJgbJ$nc$ojn*w_5xW{Icos%k0ArI0|<7spt4nz}G#&9Jptzkdnxx{&09 zK8T#X27+!In;GOB{H$!*)+64~z3CUn==;pjN`&|kPK2%A6)?5;)eil6UKR^ka3qwEzVbsE{<=X zk1oEvnUSoL-S$uTTvCCJfx{xlmi`TQ9|*ATTvGaaA^o?~61~NNd5cN_KqN{13-5dP5Yh^Y08SB!_OHa)^_Q{O9+7ro70lj5j}> z$vq#OfMyyJ0V9T-6?1$k=ESgy^?j?sjdKcRnDqm^~x9jd_H z?#h&&Y41NzARO}=(S7+}!I@Y1((zFSE7Citba4nB@AuFb2(87$_#Nx;G?)Qa*qaau zPf7L32SkG}?5XeQ=4Y8I#k;{acZ0#T5!@^PgMG&as8D5&LlsDmay_eHp@FOvY2cqC z!a&_&U5K3UoQBg%AQcLo%&)1$K^X)d!=yWv?0naAkm#vLZ@GBu13HNKY@OtBt<|09 zX}j&aD~MfcQs=GUBQeN#eh@`t&)7g-09^d*h|4BK>_JhPghPHh&Y$pEgxC?RwXOF-=nf*CnG=B2yvZC>+`&t;}K$fk6~$dV$~3D z!M*S^0XlLP_>6b|0^a9^H-{&2u*^YGL6Ss6Umq4K>@6|WzNPT&C@(rx0kU*eJ`?6- ztBsfjBQf*JIJBg;cJt)!B6Ugexa*kkETppPXGwHWqBGP$lvHlCkc6D{{-nRpQs*Db zu^(F`t7Z^YuNePS!|eBdXSzN2L?eRuU9Fre$OU;YGgIN^h>^;RtFXoor`1krJcwv*=2z9Zqp9?RJm8Dp&ML{in#*Li|*I*WN zT#;!!%bx`sEm55s&2_<#+FJ!NTw<==DhjEEclYkwfZ5=D()-0C&=JZ!wROxscC^_gqEN z@3F|JsW(W^m`>cU``EIG)L{X4A~PE{_M}8{aM{9nx&s}bLjoUui99aQz#V-3ET`$1 zZT@#4#CG-8_-XbJ0`K5aPg&liqt}3z%W*-)LUDpNDT|y)Ueh~vDyabliMqC=ki&p) zrv~z4n1)*7SK!K!Xg-R*$|vVbLY_#@d3W(PipYk$eqkc!B4NymtIc_*KpFGoTbg}m zO*g@};`I*RN_Qzy=DEB!%4(`sXvlb5C2ow*nQ z2Che;bnz4ls5Kw3D6|}lu2Jo~iKfIC)FRLu@qSO4`~!q4CKro73kDoYQ~~rN?b@H^1(t>FMWE- zYOJUCgTSsweo4iUjv#hdAt@9pL7H*1N@l;ZmlSWcpyZ41Cp8>g`Q{enLiLT)Tk7Zj zZSKO6a}i(=hQsiEy}rPh92cc>)w+Y=4)51p>8a#Z0f}+_1N+vC=d5d;C%(vvm}T4HX_POYBi%IKTr9 zw3H>Y#0YQRK%HAVd9iO6ZYFRBBO7M0m0{%>qzQnAv*G_ZM&)2sg;IsD8=`Wh3VLsF zbE5tK9|g5DQ-2%y z3kGo5HDwXrOK;r=`jKCmZSFgP9zMQHpzBbtAJ!)f*>itR_S|=+BqalqYlO< z>9|W4yxc+aCe?D%vrau5=`$&vykrd5vA~VCZD^VbG$*P2N%kb1Ho`;4j6-+WGTXrX z{qlB+iP(kp)L{B!LkZ*CMk+FDyE08CKLAbTH%W(|vIHzQHnRvC1XiQ^Ki4f&i!7f# zelMOc8AwvtQyzZdru21sS45YQW+p1RZ4@Bklvy=3n}S|NGw8MU%a=)w;(bk?&BWF; z02lVZaLirZiV-W|A8quCf~Z<-79=cpCv)B-PA?XM#}1Td`+FP+M9jCxWL0d*fP1dq z1Qpba;$UU;_d*0!nAn{#!_hGTyH`@fU&GQ%SE8(c17|WmG}2pYO>jB^&=z8Lhi$u@ zsvx=HtBgih2MV5`NwXQSbw-*IL}~Kp6DdSn9Qnc$TTL6%KZvaZfv9tPHq?d zofjCaeFir9Hd-yN8wz{%Vbw9XfDJ$=sWD3?SFvCRYEs2VCd>kZD84Iin8xhGLB?Cg zlD$cj4q0{4liM1UB^kQFo(MyK>!hCBUlxgJ|2Ai9i63OBX=_il zojQ(|Z0&?KMd^pBpBW=XSwpVTqWIC>pJ|&HceB27Cuqiir2158^A{ul=~ftjb$NVc z(9q3o^~ckmM4SGTIUwLH>7=gFc}#Ek++KpJ-H3bk#mVJPfGW>2vtl4n>~kXzuYFbQ z_p8myrtj86oeE&v)Qypb_b60nmOdOK(+cg>)Qr;I76ZC!092a;al@nMhWE?X^f2F* zCgFB>CsShfp)qjHIW7?R-Os@GYORwRtCo>}g?D^;IU25OiSR>(R^fc)ATVNrD9tx5 z-^E9q%?NxRy)2Ok+5d8Gzvi-bN2qa=oA(Z;^aRV?9-y{_C+Irry+43!20Mq`)Pn{K zRk8NxD=ET$Sm-R8Bp+knD1!wGG!0w`K^jA4yXLOaR<94S@Yz5-dTPhcvu9y*yLcv4 zW-T0Mc9gwLgTb@+?S%&+&yKZ&)Od-G>u;Np@lt?^IdR>i;C3mL>G4?Aqtknc={sM+ zAgnU=_h!pVDkqsj8zVK|dQwN~&)DAEao9SmGN;0=q9t-iJ?H;W_tHMRdn>;@Upb{e z?Jc7q8Lg)^{FVcH4J@77UXPhG!DCo%7B`-P`Ex;4Hp-+?IrSc7> z5e>KuBgp+0Y-dEK@)IClImQz_&PyygoZr;^cHcp$q`$#A z6T2d0nlObuZmhfQ<*$bkApp%-0iqC^&Dt`;6iU&cK_5Sw3OH__uVo;j2D;sI^syl_ zW|YilXbJ=7WH0Mw(kuW&J0lf$VWR|;?yS*rdNEQSowO-O8;{i4&g=xcKPp({yV?AP-@GTCo(qGN7?xjGUY4!#hDdZ!^6Hi z-cR80adz<7^Uo7)*)FKYv?<1y31j<_^O2KV?*m)vOajE0%;Ej#uNgDF0;MyB3|hxC zg{Pn~Rue9(uy{|F4QA886;s_T!~)4vC%~5VXMLRTV9ldYNyITYiEt=P`)8ei4*hNP@D(e&xB;c0Y8fRYF(^@5CTlSfSX_e6eW6 zYU*77ZrJq+0)H#HTg?wPo4a!oOBRPCARuWP z6sslr%S|!hV&XvedQUL9O$^}CfWx*qGyWpXSLm71`$%({p;)Al>$B8hVEt0t{Brqk z6*lkQ!qM}pzK3MBazt@YB*f9g=APIpv4{%kpSvbb2t}n~Jk-dRRKlgafz7LOb+RL7 zZC~;u*Rk|#4?%Y?cpJxP8|*B_0$hP>oImQzlS06;@$YjCaSlmhZlDxXuzd59Ku`Jz z>%et&5{Ta`@-C@H`RU(lk0b8@LI|TV6%?+Au2RM;3GxtFWCYC22$Jyx1E`&I*Et7i zK~Yz>L_P@{xi4)f2cv{fVMw}%&o+D9g0bWHTs=hqq7#Mn;ot^ruM?2k437zKrd+Kr zlbo}YF}#l{xRgXKWl)6Sex*0^qcUnl$j7tsB+>nW%1jh;3G~PV4z=tPV!5kJyjd35lbuk9(d?df9{i>(ma&$18)!eB$7vUtSvi z@SN!~_2dI8CGK|DR(B0HpNCS#_VL)}4$3AQ4;(?B+aX90M~ZDVmWdZJwCkQn^6Gfo zrcdbQdmD4dlRwwMJQP!0BbUj&7vRi?V9+F=zMVzg2sU|-_QqUzWdw|bXcJ|AOS75U z@<`oHh6s0}3p)S}`R1#b8oFbv2DgZs>sQpYRS=+rFlA87YyoUXs0Y*4#%K zf%o>(KHpg-^eU6?gKD*oiNrU`U;!@q1hiJA$y}9SSAfIxg0JGEMMTZd8Le4w-kdHe z8gpy!PAM1Kqi9R3h$)NipT8qayzsq@()_bEz}hWnF51gXK$ULef4|=)#E<)qRj=A$ zC;mcM9JcALdt~4cKQz1x#hwq4=_rfuMG;tT@_zI+OGsK2JoRZD zBTcTxQ~>Db8l*AF`_|kOg_lhRTpOe%QPVq$kMZ?iaQ3lc2K^bk@Tt5$C!cC%o+wC{ zdF$wHEQ7D}rqKD(RS)s{ubIO@W;6g6bv$5R=44;nZFg{WQVt?21&#{8OLU{-LT+{t zeenCD2i}*>qH#SwYjV#dUdwRj_V4m1VDq9jLuU9h>HP8Q z)!o^Vodhes#x}!UJ1$$HXfJ+8R$k*QTtRs1?pH;zj4osTj@*ihZED&KQfIkGKaG3; zVKQv{^c0NoDam_bLRuEyD+s+QJmt7lrOl{ar}(oyU(K1H(ZZK0DUv^%1I9#u^@;x2 z?2-e1XPC~Qq_ZOqZ%JbZ%Zdvldd`<2IR-9HGUqoOt{ydyxXf5Aq+_&qvO+)Z@RUj( z26nz7xj?ZOMZ&%%4`XzFZFk-x*Z>iTJF3J_hCE0*+O%28?Cg~vm(-t|XW2StXUSlG z6%NsJ9sOD`G@-F{`m#qt)}v!E&Pc2^_T>QxEBzWfAw6=s7lfe`P=ZLj}5b9%8>VMBgEDcP5DiK*SW<#y>KyHrP;e9AG1#xbj`<2k8>8#4Mv(p}d; zxofUpCQYDk9ax^dqC174U*q*cJ z>d)Iwv#rXLyxYy0St7ba?0CHv(2iQ$T+>z!EVTcLKmG$NRmuIlIw-CqS zJZnUjKz@Brl_8TIHbQ~n(z&uF%N-7oWYfr}GlA+cLSJgz?r=0bcXEThCN2l6G^{e8 zFKkNmHdGTAQH|> zPKl4&VvfGLW@(s0RlYL{$>4^2=jzi}(KhuHDrlQTZ*h{?za0Ej1ti{N?mr8+$ZPq` z?>&%#kTjd;od}u8o zO-%jy$n&L8OWQ7QnkPEpz?hT3=Oc9C7oFsI8Q&?(A;)o+@8S6D6t>;38Vj`Od+A`u zznpW9@502g?U<-=wK_ru&rPB+E6q%Yg?B$b3D}mqYz$ptyhOq#(Z#g3y~eJIdVg;> z=CX4ghoFbfSc&A6jlm;W7Mh$8V93dh5FOirWY@>PKyo3D6Q)sT#zMUXtOa4u=Yx1t zBuf8z*dt~i_aO_b;AbhNL--di&~5NmZPXYp8#$)K5&z|;r7|F9TYnB>H$-CY=n3EI z>%tS+hi2ZAaISxese2?HLLV%r@$z=CyZDtN&97_mji)cVjQ|Y$5?jo0@;HjuKcIok z-+Jcc(eZ_vRS-^6;uDh%ARyOWcJA_&U&#I_yl%&2L0r*VH;iiG-Ul^r7cDD(3nJL< zTqP%f7z9RZH`x0QmeL;N)ioc5&gArj0VBO@`7~|#Sp6vx8-cvJtM80pbVl%3Mz8@R z*eWs)v}>D+ny8Y+fFqm9fPQpmml}lhN>}1N$U-DkSP4VLXww5&^A_-yp=GWh^TLdn zN$f;OXliZ7{zfyHNhsB*0I0E(E40TtbDZmTku@4+?$&_Hx&sd|=39_0aC~`2g1n)M z*FhfAW2TWpIP0<|r{C;EEC8x73@oVkC$AJQKFlm02u1 z&Pqr~p%@Hk$JN06jpQW^oqukZ)*K@HQz(B%Lb(@9w8x2R-wd4Z;=L0wq=;|vIAcZc zp3X!dhS}7fLATEhD=#vx3z6r+x=O(*ruf*;@m4o8M~;cT2=*A@JI8_I2|Tcl3tvaE z1c4XaxC-V|$3GkUHFZEtT7f_ecM7rZmE8Rv@vVGRP;Ke3UoWBfv);QtDoMikXA<-O z0xiYLmvZ9DRg}e>1Dpv6KBu4dON6S6lV3w%zr+c(e~_d9NNq8Y{F?F~1ASCIeGpL9 z2MPF(G<}f1|47>h+53;we2|3yNW%xI|BrNhkh}j#^9LD=8Q1?95P0!plqBSIi?Pa= zd})%rBpuipt#*m5j>OnvTj<0O(BiGFJNbH286DEiH6t4V8t8 zWJ6h6@EyYF8tS70mA^B2wXryP_2HwUSf+1R>7zx~(npIt1J+^`@1UozQ1|YS&zePZ zH7m|Q%d%tICn2;SKT3w9(!jfz*c-79$J8)6&AiRSQ3n;Vw#DE4gN3ly84@LTSL3j_ zfvgP@0+4#O4zn{prH9}E7h&Yn;iczO^_Ch>T){9=T4<9T4Jpw=8u`OR-T7@>|8GhL zuGaVK`lp4Bf6`N0w%tkHP+R3JBLNV2a=PUgO$*~&C=1j(U6Uv)DHeG-^$ z1$r~^eV7jd_4by^2OMSTNo6Rm)1?;Dfh7711SUt*M*>qVwuZal8%dbJS(kB; z6wS@?<$#yZNyJkTR&;2HkqwtG`P_;QScmm`AxP-D5*aj1@L?8FE}m6srp^LblTK*f z==?~}B7Uy|Tpm??OdnNL8`cZk_+NE3KN`-@i>!`qJvbOVs?0YK^VP*w>M1PdELd-Q z5Vc8tF?4=}+F0~}(wiVnThO||fgi(rPj1z+9mQoE-0xMKKKHmtjM2k?ALMFW9|WZs zG`yVc7q|vZKi^*twAJ1j=K}MWo=e0&3G4G|3~RfVfwKkG-gBrPW|kL`@Q!AWJL@YR zJLmMI5tNZH*R4jKep{%I$MXc2CeZnBAy7U?%dMhlnt1Qg8*3gS9f@5=gB5%>F9^Y% z-%Ku>|z59Z%%DI#}93IlO287maCEN6mg(cY7)|2ku;xT?;5#C>=g0Q(X&`>yRZx=E;ETpcr8D zNdAu7upSJ4Lh7!1JO6TN`{msinE6;g+tJPBNpq0aIKc4Mw-xooW!wG@EQLqq{<8LM z2wZd2KZrDiwX2HgK-4C?0Z&Gli69rKs=nKP;p%x_+lKP??)*;~f1XHD&&OIX{@uDj zk5JOBoR3A6g!Q|By(z?z9zAKu{He`{J}8vP9Xh6R**22znYn4Rwo z3F3_rT1n0k=Aij3`x}e$L`rtYG#r;pYf>F`HMFoif2qTDWC(m1{4)ZfedZ;Bh#m`^ops}N*Cnryze zQ5b!j{V;a_#BfmVm@!~0&Yv?9?k`~@=hHrwk^CZVT2?fJf zKJ;TnC_XqB+mrk=XtCk@0#23JR^HPF_HF&4I zz!03IrPTNC`d`BvE$P1ZhlUTfR9<8V=F8coj~J}zRh_IsuV|G? zSSUnV65~APLIfXkPRwTfwpB3JmZR`2XOhcXWtcAI2uj!6gtln~=1=E{GS8MXNlZNc zn9n)l=m^=hb?SzP+EI@>`asy#yD|BG!?HlV6k+uZLMas##)gx5l4{RJQKTPf4zotE z9jjpEL5wh+&3El@3z#mL|U+cbqKgd%^)(VJ1e zCb^UoIN|GL-WV7I8j;>L=?5_KP%;(H64WOu&k`pW%Uu{_e3=VZ<~37Snk@1H;v?Op zld*j5vYYx31y;9zXL=neGq6W5Ke;AmaJnyPQ0gI*Qo7~0>|^k=Ykrc1r;zA}gMnt# zxBvGv!Vq9rwfmzKwuC)9TK|*OiHm-%-j_n$H5ihpKAcJqp!(oZkS>X(cJ|8eI8~=I zPL|nS){oSk7Oq7eSK=PFpufk*cfX3*4I}N0fhOpEqB=nH+nChq+ZPT9$eL@M1tuv*x67}{>fO#|P>$SP zL5S1NMf1fsNKU?H9@D7p|Gc1^EaHV_7s>@^Sp784=hb zvwtewOVVrcoS@T6c$+kbMns{ZjN2~A*e|Z`@xRq^=z>=DbH;7atXj_5lfzL>j6Ukb zCx%QbVGOXc&e>*T#b`vXi34qKM~UJG0A@tdHGl-KldL!Xi=! zoHDJ9s~wY0wNPHM`I?=cC!}zLDbVUU7F`*{zhID6@yf`mN|bSnvEcp+4l~w!sFPdb zCnS85hY<4Dz{e;I4qrQB|M83xbBjjxc<5o^H;P+C%=s^S$*&JCcC9{|MgKLM75G{> z7%N?1iFJ^Tjt2W`SG`mmi~7$Uem)tc)1Or`Selch{BoO zw#ijKzwUL6s|&l;Dv`-P1%EZRB)V^L?p3H<`OIqG&DDl^9YV~MhtZ;r1$#sN%(`#B zG}(A!mKi>6hOPQ=$Z1ib`QBMh+xS&5rKxvyZ-P+vpB8W81b1=syPTQ9{Ie8vEqQkT z0_&B<_$`x}PKZO9O_JiV7mXQ^v3r3-0tu8TSC#5ZA=&4Bl16C2>CDnsY~qN{(ZM1l z+Qkv>&0vyPv}VC|r@(74hzpEEp@y3^QTcCwvP}9JL;{wiyx8&i>&@Bnamr3e7@EESMw4lxW=v;q=!fu1sK*51O+H}%K3QQ#5k5Qw(}enElJMO0#F^6&aRTxefdC0^PTaMI zGxi)iPYfI?m)*mGcc=GZJsHFD0U6Qeaf4r9c4U6o-$%rd^&l+Ro#y8(e)*%3{3`_SWL&8f{uq*}Xe1mm!N&4N z=J?@}F8Q1_2D2v1qe8TP-+L{&4nr*NQ6k3&ZkV?XYorStB?^GFVmj0e4*I}`e^7$+ zlUbdvHr7m7t%cfnpDJvcL-^i9;JVLXo{6u27k1rC=xDg?48dC2kBE4rP+!4}5|Ga& zixmp-dyB3od#51G^j0ZmRk(T#YS%>y#fuWW+;zGgwazzrYn)awY9p`oeHzfBKGz@$ z(91604JEszwfGJ&;qLdFoD=kIgmE~~2?1kYQ7A6R8b*YBU9qwxZa7(NrJY*4u%SNO za*uvKlK-I zrBF1l@}Hl0$z}|lTRsBuFKjCn5sRn6yzDu=S)YLK?Ph5JtB^ zrm4Dcg2D!@+q~&L&8pr<3!y5p(Z<*DZah7rij9Y`&~(fzGS{C;;o+U5c*3Dz`F(Vs zjK)01yG!j8`2%s)`G3l14|GcN?JOgv72I=xt>I^N;19_I#Qq_SWp8}ha@-w?EDezt zF#EkxK@{+p+cI3i?eNC;dYw%9Z17AaFfcn+&Vfr|IaVrZdrxsI7E^4(iJggU+sQ;7+qP}nwr$&XzJBjo_eXbE*Qry_Q?+-m-luz?D)BAsQQT{lfBD}K z(JBk3d85*_Dj}*pViO!@Mt_G?9$LA~>zZUzu;%XpW8Cy2*A=dT;f+od&D62>9wS)Q z=}!9)J_(iW822vPte5w?I(wm}Xh|eQ#h5j?P3z~1`xCOWsj~z&1Bzlitn6}^{Lb|p zNgerQd-wOz94W&||75~0H@I()SWQa+>Yz>$kv^3}!z$$`a2jkV){*f6$1*RP z(2nij8Buhm&UT+UYKqaI;VA`e1f$LjHa(^cJ}vuhHr65O(cx*O)0M1~T{4gSmSx?bxPb!YpFcaFehFp{MZUUpe>}Y$%=(i9 z;z7zhz7lse4rs{)+p#Uuq&@i^BV-1GT?g(=vJfEzKnFoOtxM@wV{2FKyu=4u=-+fWl~yx?PW*nn zPJDIpdc;@hvTG?owI@RAdYlPm)4f8PZR~`ja&=i*vfY5en~#=Ok- zY25e^ORx>gFIk(vBB={Sie5}fR zlfzr=6ZygsZ2fA(P_`m&vAB&BfJ@MWIoFL1Hp~ZciOlyVfyZ8+L+#<>Np|%%*o=pLmAF|q%z_R{fZVBfou14vU1?IGM%Tx%9&?*?6!`+`O870# z16*8y1!_$yZ?~m3!Xs`h%TZr;CGNs6t%aCA6=Cp{>2Y8;N$?994FSYmz#FI*q8t9I zahK8sl8Ps^=X_cQ)87z&(oLf;6z91dJ@!pYMIjh*>I^RFjk;|jv6x$#+euh(y||Y5 zU5FeukOFS2IE*8e@ODCvi`viVT3~^me+|KryX|5_8970~o}JV&FP}~zabk_oLDicT z2YV^qU?u~^hM*}l!#m%FfGN0w%vv&RTn|0E0j9bbjz{8;LXG0(ie~@XB;ZfKNJH+M zjLo3Rf`>DTZ|GO)uw5fm!JK}~D}wV{KUF&6jHm}&H}N{^W!9gg1?ZR3W_+bUKwr(R zXz-*e1*|Py0}%dBqi8fMWUBaTc>Hm0AW$(^!uJ5vSj1XQLU~ zB@RT@r5oy*AeDHzGz(x`yHt(fZt*HF&0QiG&$6oJ8ja;w8N@N@%Qnsy(nXvY7}O5jSnYqV`Y{}HN}fbXvAPo(=^+z-^_#&4=~v$if5eHn&8EdVYbf+ zHA@Qyml2w$Dd^tEoj+tOF_(Uu4>DrUtVq(u9!@RdcR?9Wlp{%LHeA!S3K)bhLc?xe zX763nstA}XN|Q17)OAmcvC8P0%4<#$)^lVoxPM@_KN3^i=6QaX`P$2{=^(mK_t8(= z;fDA4IxrV42b|SoKcyawYG!53r~8`+lFe?__1U#?7zc8lORk_TXP7vK^gWE@wJ<|k zqRO3;_G0ffY*WQGZN0W=^J-|P`FmVRgzgTa@=briM4 z5biM9$dW0K*1&fb?u{f!Pt_fn51tqi<|P!ufzNZYq(&LEkzl;6EAof!S(8 zv6ArJ0P7D8v6z~&CyxzF5tbXxqlG`cU3xf`u&xieV|4#akJas^q7iB2qLi2KWG=Y6 zX73S^J`VFW?!+G1ii-*e^9wKpgNQDfn%|1t~O)U^jwD$?CO=7O_v zqj8g&BZpL>qB&hBtSKit$S9#}BMq?Nu`r(BF`A4kRN*g2Nh!-s(qe55d%<6GbhmA_ zTbU9GvDhxAtcM!O&He+Vy^t z0f09fV4DSs6zN(u3b`p6-z5*C=zI$+82sT@7syQt%^SxVD#OkshpRev)(+z^2mhoof4slKWAs>} zl?qoj)Hs45k5=+@&~{dzTKB`##=gf0udAQ(h|+%<{8-M$L7|<)91b4jki(RHd;$;5?#TkuCtIK@%#wvtW^97K5(B49PApdc8oKD1fW}2-(`b$S1Rti1&DZrG< z?CI582>Md!t^RgUVYngw=X^(P{649@N^MLOcx~anTL^*^vE%*u9lo4}JEP+~xe*RG z;Pm70UX^JsrNrTw3^`U9`(KFo@VJ6W2TX2Tj4L??Ec=484o+Bhr`4K-Y#n71% zhbHL~+oNp!Lr^GwHbI+ogB!qkIBin5nD-61-=CQx7&&z2taBVF+quRJSZr%5UXQ;; z$N%4c3jT-7*3`1jOo>mKsc)nU4r zoO&0{p49*eU`hZq^!*n9bChhD4xlP3pOD!Z<nJ$LA5ZT-;1CQ^uW9Fs=nbe*-(Zq1DtF2+asrn# zs_6Pl*-WQ8HYt_(OS+ae#D|+J9M(AE26F$PMVUI{KHS!zq z)z=U)fl_1FcJW!urV5oec57EWGn@IVQVTeHr4J`XQ)v8{%&diJ5rZt zxx#AXV$!jRWFn)bcQa?yO)`IJWB+vh*^`G@weuuY^lNcEVx(4HnWpcf4de(BCSa zBR96$6E9~~!O(BXnO4$rT6T}A^U3rWHQSwOgdfxTVE1Joeb)} z1GMQ~!wAsGaV+*`IK?hl;fBDK+YO)_8(1qpv?zABLxwN~DZF&`cH|fNUNTJk zCuxjcx|6VL+SaKv)wVM)a9li0u%lZ?28Re zsHymXFj(+p)M`Z(a#-TPu4+;HzBfbi#6rqwa#4J97H(=Uk=%omif5)PJhw|T`Y6Bw zk}{rTeWaK}ELidHZ?F6KQ6;R$TFZ8VDq)%CBdFDvZ5u(i`a=(~iQBs_bu_;3Iv#-x z&}n)6Dc>6D8X$ZT-RZio})60+9el(lvK+ zvZ)%cW7+5c@zDmY!D@`FeOcnN={lxjOA{q=R}*!7=W|{JzoXpee>Irv&lDfQwkWfv z;H}(o_p|L{zB$D=X4^_(H^Uwy&X;f2C}1G%+L~wbpcT>mSr0~-`K0qFBJ`;S5GU&= zAuMPb8%>w*4~O=i7YAI;=!Sse6}G{ezhkPOeJrIJ7s@qjx0?f1te6_U==wC{1VVX= zyAoXdg@nivfjaCec{ep?E~j6i+vYcN2TOFANZIi=d{~40)+*Uz$fsEB-~X&_K3Cz# zcsf-9bp71z4X#}}md}=rAG%WUAqdtawoFG%I(<=gcUc$`!at!ob z*f-~omD%R(%LU}S=; z;pSGCQX12e%Ac>OZ`1@FH!8lp5e{xugU^#u&qfexe>do(Y$LGa{^$p-75WbC&~a&kXb9EsgTBFv@AoJ zafe$!SGKsNLh>3YRg6ODhoCDFSx?HD#DrzZr7MCoU7{hsxBL}FN~0rK0;3V5uaLrA zOLgXXt$SE*G(Mw0RO4GTKC80ny3GF}l{>+o7Rcl*GpW1aekY^xrRhj>huZ@3%?KG` ztN9I9aqjXksP+bktR7pV7ShP=R(K8`D}z|j#$a{E&$G`l)`q^(1a_mDCSjK@FL*P( zhgWc4mD5cN&iM`#?b*&f{I=LC#hJf)SjQXxq6@|T-1is12$Os~Gy{Vd%P;kRS!`8Z zpT1T&BJuxWZ4A8U`=`z?!fNd{^sYz~rVYHi;HAFl0Lv%g{OHIp;3Io&9Iyy?(#Vo2;9!cUBh*fFS#{p}+j*JF#ZoEI{>kJMc&QW6+TNLwb6`v1 zUvl%%f~)!K9=`Ff_Jjk2F1%onmACPO zob&q#3GqI;p;#_rP*xT!kZs>I)CJ)5Z9-;2#ywRLa@aU=ngipW!&_$!nPxqvtIwnH zG02_(WBMe{E}oAe_>+SY+Bj^7aSWi&K6!k8nVZC%}-2QX@$wjXjDykvwQ4G8ho zqMB%BPUe2pK?}&SyuY``MOWH=)Ol|Jv>|$KLB5HSs&GVGYgYtUD;{s&Cl&L&l6?!P0 zxbhkB=f{3cTf73hEPqRmf2SmUV`+TpTE1pq-G9i9V!!G7X^b|m(Y9+3ht^=mEtc%& zp4Ob_q-%5(v<-DC&E%52Z8~bOO_V<6UDBe`9R+Vj$+@{vz-+jJ-C^Fi0@|114Gt%8 z*PfGa#xO9aq!L`LbNod9R&G}0*`rB_zMw_Wd1^;Sw>{=ONdF&zG|h;P3WpIf;Mu3hh*HFQ7Ug11&Npu2$4vkCNNshcW2h*`jV=pF%tbk?(Yit zlpFcT>PEW=cwbv`PNgG{@OL;}yapXHT)G`$;`Nr_lHub|ZWN*9dPg!r)%2U^8z@z6 zopbB0{7LjZ(nra<0lj|nazBeGr@sSoU4!G?p(oJYo81XrMF$>P7}I5&59aNw28#j)`*!}${uJh~UqK-PZVCLz{aypvMfY zU`E81W6Pysi}UZWPv4za-{#14^E|w)_aK|5Me>QV`XSJaR|Bg`^Uv}I*GYC!=t$sL z2{K>xMt>ZoS9^Yj3qxs+H&r>=tvP7l=xXTivmH3CMpYUO@9ir`L1|ZT))VN%%nMgj zL@W&LGFOKU4M48^Qw$QO1P$#(m;k4K_z7~p?#N<}QZ4k}r4r-27ms_kcs%8w)9>l6 zbdVu?qu|^Gaf`+kskKD$O&kJLQxHT7Nsm7ey}uZUYQaD+;E5Etc>|!B5po85;a%K= zNCx)EZd3b1<5%qWRzfd1>42_+M3>xhrRO4{eeo@mt{%X!?-=J@CRNN77BG$3+uYYENz3 zXN^q;0OT2EN&9M-NcbFiTIZGx+v)(i4$~KAVqpfgv`bIOeo(2*3|VWYN{UTeC2NhJ zsHRqB&{+dyy!iTE2_uY3E!~+=*Gz)ajjKP7>-fuLFhiRDGmDt zM=LB>hGC$nKRTP>rRzK?B%$pb305w3r;Gy%fRn#<wJt_XSPUw;H$ZTenG~F@dEI>cJm={wO>lw z36$i)1d;icdW69;DO+)^-{Q{9r0CjC0DV|1haYsF`xicPR#07QGHDnf*E7pCO*2l> zn1!Dd%S2K?MXS0HbvgWZe#9sSg^itGY8H6*uag{3k~uX^dK}_|BoZ{WCa&vT(hpd62hM%jEPQ%)*bquyiY`tMmS45CgEdH$eP->vb7`Od z)n^ryJrKRw>byAkNDO>!-P`z`3ZP0Nmty{b?G=w+jZsB2fw}8ZtCmJRp+h%C7jybL zxA?~#E}Q&E_@LB%Ve^1%c;H;&-k#R3WUMs(q>KS?;A-k%^T@Yb+J{g1;`2fE_12G8RugmJ4>I{>@NhNw_n zN8`9OTLtAx3*=n8R=#)WXek)Hs^uwF$k2)7?uiEn6#Dm%KvX^WnhGIfusO6DGDP(7 zOpWpGA8kh;4$em8YCIffY8!$245LQZSY&30*2AN!j^ql5?_HOKWe2y(mBvFzFgLs1 z&5py4!-}9A_~mQQ={X75h=6XD8*6yeIgQJW3j%)UyUVjDXYz+=cKeSPL~5pAFODeH z0i0YBf4>DNjysYo+-0=nOVwQ}mvc)<1bo%>UKzZw9b( zutTZ%n}OqsN7nd9LTmEota8@+i`)(hWad$N=sSxNDAolZ+X!-OumD!!;^>fNHOkQ~ z-aswWkgP|rdQct7dF6Ffj1io|f36zLv7r!C;-ak76w4%b*F{QcD45<(WlDO_;Lvzm zi!5=5Ha`^+^9~-JDE#oB+A0Oyc96^9~`HPSX$18)u!xz~Lp~8NYg=4cIwi)yR*EJhSgs z^!-v? zRLtOeE1ruiwXu6yz$9(~Id+W5l~3{eEdH6d{?$?eYbr=v4KQj#O{0bsvMuYq`g2fk zd-e#2g}E0BccGekedF@8OyGKomh6vFEi4?Xy06z0f=^pc;sB0%USFBBO6D*-7L<0}O89n#GQX8~|`5kI+IDf(B4KrM4 z5NJ`{40BapvBT!5GG|nsFM*$YBxqAV`wqA5Yrn#Hs} z_iM)NnP$m%!|}d(y$d_LphcJ6YU`42q3mK!R&{#BGAd4~+as05;>I*eib-OlN#mSz zc|bG#whYok5biE|rLQPbkrHCjgbA9FG@Dw;&_)y}PZr1ycgerUzrTL63P+h6%G?*Z zS8AA2w*nHA(KG~&8SM~Gm|HimNE)5~EGyJ^9`$}vwpOa5u4(iRspK?bSlK|X5r1)A zbT4t+D_Ll2-?laL=+@ivq|KaJbU0L6_=RG;Dwi?J+4xD7CB`NPO&^q_?H4dPn7kBv zI(z6S|C!XP-;Lp}-Xf*nA3iU_N3wEc_qk^O7$#rNwa{pd&jvZ#GYUl$IiFjSLr_vl0~xh_pbgBPV-BzGndp?MIxGNBzp)8@ z7@-06`k+y_h})t$WgWdhO}&ggLN$MKK#R~;v9YRfW-q6XY0?YzG{xs0Z@k*tfC;NI~yK0aLwB+8xq|)Qp2fO%tE7B6R zk4V_8N5cS)@a)5g>mboz*U2QLTXADL2T6D-WfZ`#eZKEAx6=t z)7$IUfGnaE0f*2T6G+!&Ap7i!4Gu?^dMuu^^C%_Hp#fz+3 zu<^j{j0AIEl3_w3elmfRcB*;^S|aUCMO1>H8y_d2qHQX0wT0p}r9UnnKdFIW(X?7z zU#Lequ|x1`g_uEbVjp~P`PJAJ8mx2+?`EHW#5(R)D@*=c&PBKbL}=4$xrVhimMMQU zb;%-~tfbjRAI;VwS1s?J;X@yw(BL%2pG%D?&A8)8ZM}_=)}nFVa3ES;wcN&BJ{z7H z_v}dJb$O~#<5gx8@EdjCD<>m4qTg3J1vj+x-pWXpV7%;wF_(5AcFJdC_+QPYYKvxi zGSVgXX;p-i1C=3oEdTWM$3Q2$6vo?%Z+jC1M7SO3^jI5GMM!flRq(ELa4mCE@a{z@6A!ft2XEcVTtt2EJ$E)o;CX@_O)UGB5kRUWD6j z#}KJWV|~*?J>pENt+b>0y%Ze!Yf%X4NkmurJ&%v$v~%?XkAtCpJw0XNa`UrRads@T zy=EVV(cz^_G?vP>sB{~EbgdROS}vqt585IJ!z2?SeHVQqr$J~{H?9_T&`uWItw$Ox zW%`i~GpI$`CIPLI!HSX^r%l$eZT2Faa-54UL2_9GYyGzk`QE>momXI|k__ZAizKJ6 zy7;|{w|v6#sy(PGfQn)S?W=Ha;+;O>p_=+sS8?w9Y!qT5;w~5vO@Xg%&fer^i2|@(oh0Y_BJ=Bw;>>`95NSYY02_*EWpp^W2ea_(q1erQVYwpaE|){$ z?)Bay0%J3>66OK0l_$*Hzg2(v(}kyyI%(e0wK%?ZeNM|=dZJaM+;#rsaFnBSriKEW z$T+%G)FU6?ud>%s*G);j4C>}3ISqv1LyLre7wvaV_YQuy#hqD9K)>8AV~>Ac<3~G9 z!@dJ+aA?_!2{!Z)p-Y|cSn(su4_N~r4d388w9ue0d(K0^!pY45WqO#K-tWe|o44n% zeEv+z1)+Xl7JW^^YDs3hhwJ!`)I=)}v}rUJ1{Y8aYzb;Nv!)R$t5to=1G@Sf79L5N zgS=1Bz&8q`q~M)@Rmq~k%KsD)qt3uU8{7Up6h%JA@n_lx8CsnR0MKNT7L+7EhL?h^ zbt4oF5;H&n|GF6e-1rZkO%-w_22Ck)S#TpRxbS$p5m8cE!r7AqrA>xOWkoIWSMKu1 zaZvBwX7i-7unf;3YWqZSY=zs|p1!Eh;Bt9KMMOu&-@*>3Vv|ShN5uR2W3d}QfnSPZ@E<$M$iItv&26fPwikhJ@$u-Dpu-cm5|^C!VnpCQ41 ze!t=C?CwKh5dB1`m_PWflo|u#fN|4{8ese;>Glt^)$7O5)nsx#Ijk>93;wOR&-4rXPLLR;V>i{ZIq#SJS7K$ z1Q5GI#M!o@WBf21NjBa%SK}UrPSz<m_`ETgN=pw*s< znNzvd>mv{%+M(;C`l1g@&*HOJB`aHH@+0CGiVtBV_M~X#mN~uaO$k{4un6heSb3oxJ1Vbeleed%wogh%L6of z5-cG>QBPpz++eWbK%H2yk$&lE>D>fQ2|mB z@)ZCdf@(ugDHZJS7tb^hZmWT4MFG5x**GRzbv#k6zPyNy4y~&4OQ`U_!m0DV+rL1= zM(C~eBSk|^U(Cw6-xKxDXhBqSlXS|(5ul$4((;xVV|1zRuKVxZtoau}OPrv>@=%5m z)Nw25B3fveIH2-uSa~2Y@iJ?Yl&4z*TBV9iBq0np8yIk{>$)zWw|TR4h59yS;PcH%#tnrNqZ%+tLnnu2Vv;P0-H(iVSU5Ur&?+q%*jjo>9cWp=!7np5 zxQ9D_xcA#5MT@F7cy9w;Ju5Z4iz8Ck@xl_bi;hkv*_2PJ=ol-^u>q9?1-@7ut$utn zQbrHQ=ynXui?JJ62`xL_>jyzql3(!L!Xm0C1}0`r;_Kn4LTwGq_8`DAzW%0BO(QLx z(j$mc5zt#s=Z;>4+?tO$qCx|s7XTuZ}Y$67*d5qr0|PBn9ifM(42_} zvD(pw$?}K;8E?OIrS<@yk0CyF4;38U<|*Q%H2Vll^dqII*toHrLUhT<4MOFU3(nRu zAoq#u7%oZt98a>7HDo~1Vg%f0Oco2RJ$jU;_-eNh#L`@Q)DTv@*`Dw3V_D&1Ii zf|IU!5_neBrxsKVg~FbtR7LL=?Fo#CSpB=|7$ySHBNcTZ7sJffrPv_$x=LMd)fShAg&{Y|w9D+I*Pn`S9;ConOs6 z*@*X{&9Q-PqCESVKt&(&(Ig#0JmMTiB-B=~Cml_s@$%r#LwWg)MbV_zvFVy1?3H=v zVi|O_V8SC}s#9-`s)OpOYi?sA5k){bQcx7mW4n9n{VF)XZzD8!);F9r#Y_k4?-Z+& zY+)g;p4o!RS5}R~3evz&r-?=s2la(O+`Wf3qU5Hk+?pzZcND|9+A}p#>&UUX%#(j) zE6j%H@7<@|T#O4UoJa7gg4%3ai%ajemFI`1_HXj-rA?4tAv>2jk@d8hxWc&cjuHsvn*SFG@1C?-81K(Rty6$<#+nlExvz*9`7O?P=Zp=ew zUimKlk&SPf3gx+i=Y6v0pWSj~lTa2o&ayq^w1as7<1`a+=o9nHy=mc)wy8_HnFrX( z$R%a9?`-$VTj<5y=r^|>bb_NQ_jU!;rJ3~b#pfHFhJX6F)@29DVcN6GQT(om&07zE^P#PRo5WJ@+JDLIfNO764FR_F%0zF9|Ii39uMe z+R8W7p`?AB?(#l~>FGiwh-D_x8HlZ3PLoLlR1i8uQ=rRyx0sDQ5Qer4x@@}&3qHJ{ z;2-=IN*gCt@-m+bCF`)P8qCM3$tod|DVe;E9kletM+ zWJp1xwv$)YVUC~OcyzB8dlm9$AB(qOeul$}MuMUvz!ab&2+g8?4@{1RC(xlo0Mp3= z;B~Yzck8xraJjX#wCT3Ex!>5;+BzPrLOY?beSCno!Qgt^-z+5r5`*`MMI#XCU_y2z zERgA<-_{*9rJ!(JZxykND9);5_#;vAdftaD&^}?UDeFo=5JU^+)UM9tg{`7dnP^WA z&DKfP8X_{zv<^;K&Yq8mb(+j;m$Qli+Am$a^Ox5A5S-91{(yEs$J^!gm1Q|g5Q)Jt zuDmrGz0Rs(+TtTn1`4ZtPAk8(l0n0!1RWSK$`w0rfd4rWm_FoSY1xg0X`j(;!uk6aBf$jI){(C>MqyI25AhX~z zgf&-GCtCDUeIrp87g}sF_wpy@RyiX-uUp;xo%bkAzQ5SFv+tKB+XFqM_NRb&X1}@< zt~LdYPE+(7aVy3B9{dzc`!z;dO*!AKXiGuaHo20v4$b6*b{)Sso$?f1I#D+VKYzQ- zNNtHmW5{zVr%T{F+wD|%dW<3{fLYm@qZ8EoL^&~CFBUw^3HRTc!NQE}(Y8xKZv8tk zeCWNkc8aZ~MSSeFci*Y3vLuI{+7;+KcNaBSABISnmy|?v;=>$DdK3gX<|UVd1rgU> z$_5J0IBxtBO$7S-m4Apd7q?$Ur;5)!HWMMQ-m=gemd@3&lFqb|BY6}z0A->U9ETB! zL;qdq`;YqIPi52aF%*S!chQtt?KpkJssT>HjQs)okomE}qY^hyZ@iTy30~rtmspa7 zS_ATjK`rM`@AB=(cliNj)~EdAf!QIm#(&+-d;X1$%d9qI#xBmPjS7VU5UPVyT@igr ze<~Z~T%Jcc-b#DXdij>G0hq$91?((u$b9W0_bwIOX-mIjhO7i6i~2GUFrcs{^ZGc- z-;CNzU`faJ2_>j@pgUXI*t=%rRtdjgIM^Hr$Fg} z1>@?=W@#1&*9ulyWTk{Gn1>(d8}j6xPj;oCO(E zNIAJ-uNYMSA+qZiLdEod3Ku&X#hdHs;p9E8YNzwX7`0~~DByD5-3x@R>_3Uc(0sT` z1d&W`RrZU;9x&X?0ku@`gcyyh$ME^6Y$Z|S!HYprWYJP;zJnvu)WnR=M$p8j{>ez= zZsx2i>pcqR=eLYeyJQpPz0+u3jv>(lKCmXXeYd|KcQRu%!KY)pc3*wqqQ#k~&u;Tb zQ;S_jSaNO7x=Z=N$@Ylt9;E{gQZt4A7%~^s+hzgdaAflV@MH+r)m-;$>kiq=>a=WK zHs}z>Y-S@c@ss>wW;@PW-ciW1JCl6ryQ&HZmZ8=!p;Ajt4c}pdh}zGYo)|>N%(ThO zq@+*Uhu%b3oJ9@7F~tm5eJhVmVpve4n$V_tQYNO&9ea3rR`To(iN5hQLW{D2Y$++A zzjg|YIrho`5LBYcTci_c@p@|Hjxy5vz>vkWr?n=6?>-IRcvRqck$V^B9)TZGk)=8C8|=4SN0sErsI1aD zN_tR1qj8_!V8U44+%GHf=dvMTI&-WjeLu;Av{>UP2-WR0>SpusorL zf=UlIKY@DK{+M;ET3)!znnTw z^H}Py^6*?)8vUR}n5e$P*BAyY(>(>msv(A`AOq%+sVUiZ*fUEjU(&k#ra`V#X^WXA z{y2U)9am_#8V&u>B6u2bmp*9S9;^BeyU>sWV7M$iZ*3wW`8Z59yzp>v98zC3j(Ld+ zBTV@#MeTJ#x|E}pLl-rOEM3J_O|%>~UpaZZjftE2IcTxVPZ=*EMEU(!?ONa9-N(h8 z0V6@YkS0AnYWa(qn*GzHK`9S2f3vjS*D;w%_+cHbpq@@;CyUBGDZGFx&FWMIkw?WB zpxEh=y5lM(^#k?i<~>;j4K+eXMp*jcfeI5PwgT?h>W;*`%D_q$Iwm4!MwQJ9FrLI^1Oe*UEu~wfZV{SHzg{>1FsrT*svyc4A{IeS8|+DA}8Cn zK;ejC`otxhZ-WsT1ncMQUS&%7n1P z!qve;_8*0*eS@oC8h^(uMD^8%-73w6vV`Ge9L7RUzlAlF^vAY`$GQ_cmA)!@0PYjTpP3Q_?8ah!HF`68vzJy>;3U;;JOk%Qy2$gWIBT5sna)y~^fFSA6=gMz zS@ewCkJk9d@mybLP0H29E=VEEZ%}`DUs^nBJe{DY;BwlgJCfalv&*7RSf2?M%STT_ zo4f0)#E9ilGkW8BdNGjWKT~F^lrub-*?pHcf>#%DU00Q zjMu?v^1$>Jyu(#j$kY4yYK5BdjR{K~*HN0IsbI2|(m8+Md5~?D93ovzSn-#~dMS10 zqrZpZH;ukergcXp4>Q`G^_Vr|qnrsVaMvJLx8S>IUOc5U%yL~nwd2G_pL>eL(nI9& zW8GFYma_7E+YNCVj&6_;0@h%p4Bj)1=4V4UEqmD?XYizn;yIj2(FiP=%Yr=esSmh!;r;k$cM&p)tqfy=d*u+P51 zWF!K*uMzLvJ!)tqtb-HZPpI9=Pn@W2Ubp^Rg!jPkY8)P|k0zkuH7-!_{ZAm|(bC$c z*ZSz~?H`N;05yb!=s!P@5Vmr(R;vYH`~8E%BZ1mwpyw{jZo69qpu!c139!1cyET2* zh5FWhXT{s*0U{^^5%?K_R673?IDvu}P_P9;c@6_PO~Vt=X#f@1_&@+|Xj^%ktK}Te zWnc`?*I0C48$bb&{si>wePd^D4us+bLT!DG@91{v_TOSb+j4XOiRcmlnO^|~B%r${ zpgBJW5J(Z|mk@Zwa}x+u3@rlnUE7PBz~80of42;Ugry5y)4tpSBYXoMCI{vw5$He; z0T`0=xA6`8lO>0@%S}-KDgc;>|9H4w0SP_r?B)U2z%Q@B^O`TP=zuFqmM2}P>dR%jkFya$AH`q)9sUla0Ir>cQwY^@p19SlAk-cfRT`VxRjz--UY~YwC09_RW zle-BF^#q6sWR8ssoI)2n2xH3^%Q+ovKo1wdw>X?VgsuGDnq7{jiz4&A>-*VQPWmaUPdg-*qjTg@;=P<|g;GnGpHqn5r1BF7{EMy7Jg)?4|;3ON~pf1rcEF0Oq&>fcsOWq zIyRxD&xSV9a=6zB`H_}MNu0==5d~3-#&b+ebpXR{JxFRb?5vuMJaj@GxA8 zxgIPj>b(4iBQ6xm{eK%m^jSlA>h*ExCz7$0krC!O#^{z>*~fd{2aI=kQC26X0HQg3 zra7&vtGqfOP}z-JwiUL`sf+ug@Iz;quBE~iN5x8#3Mm-2MA?!mCSB;e%{<*oX*6rI zYB8?Y$0u8Gejb|d9>QODTV_QQ6P-^M0f$)d_27;;W>=E>4qcuID~B5iEg{`js7C>) zP=cjy)($S_Wi33~Y29@+jKcmofC5aW3BH)pBdPE~%JS7=X56I(srq}YL32|z#sBhg zjq&m=oomI)$8yZ8Q=G?_jO9xzqw$z(%(_$U*(y)97OFv0o?As-qY`ppRuXR9dF+IJ z+fmrcesoklrGDE%bnPXw*mv}_SF9h{xV|x0;lV6)qD#^}HPH*kp`8Mt(HO1Pzv|3( zjGHn;I<>dW;ivgSSc-B4ry8bW0Wr}sTz459xOP-zN=KXMBQiM+YveqpRH}BcC0Y2K zPvRh65Ih{uXiLg3PWt2&{jR2lWyKdmNISmp9@iyW+w;li03E;lrBK_!Vi~NPwAeGr zU$2CI9O#=qpWzYxw{#kSvg|9Prk*z+K`=*TTd_w8U6PN&lxsYBp=>9ahp|DVW>5PWD~I0a3te-J?aFl+}DZ2MY*PiKE5nawXKTjPvD`dCQb6Ymu* ziTj8dahe+U5i<$1^ggA^_YD3z64f-J{lj`*F|r_~27%1QnPo zN_JyIa~gI@5=e$!l6lsY7fUl!mg@q|YT)I8GT4fj2YC&(#pHEEZ8}N)aTT^@I`u90 z073~v%|Y9J)GU=SXpa{PB~YmsXP0M-Z;DkLw8wH0gLMM-jEl>&^94KanlQIPN-R%a zE~3e6xdb}#`72g`Qle7E0B?D5eqniW=8By)CCq)#czjgvRB;+5|H=6!(V@douUOy# zS5Mr_N4ibWC@jO~YO+`^Tj@51{P%(u?t2SLL~o!0nS8^F-e}Hyw0;iUEO>7+_J9#D z+UXu>PLmd6X0~Xl#lV~fy8sYv=`EEpoiq|T&!1ZBRB^U{@KztS(){<~PA-CQa;i|i zyu7p^FQNtr#R3Mqu9$6k@vViTm0dShYVRrkf!zH-?tUP5KajikRqp+ivQ6 z2YM~Or;_kaC9p4gJ@WgLX>{j4pb?)+@Pae&DgBv@-L%c^=4^aaT0yM5EHI<#lt`g8 zQ@AJ^@=d3IM1stQb!f7Hi^_7m+N_Bhr835|Tk{LW(&Af|XSY~pqj&D*VrfQlXf}H1 z2Dwcqk4iJe>E)^UNz0Q*VRi$Q(@V3nN|gpE!`%1Shd3G~W}y@3v|*HZ<}WDy$?hL) zX6Lc{n^#Ji`&aYzArZH`>!p1!&-bB7JilajzAwmsYoG|`_SzpsC}r+3y+wN~Dsd!K zZrEGNMGPExW)6XnPko;-F?F8Zpxp|3CRchg6%&cIeo(=JHKb8?!%PlZRz%E~QbA3Y zG(V)ks#JS24cO#bPpZ(OZUc6VrNYcC&ZVoDVUaB_NQY)VmD&SsC9(ETD7~_1{*!4v zwQoItS|^Khlk-!M+iIQUneVYKJCa_D*YG%(mGsK88YCKYh*L0ZkZ8i(26i_ z;`lt3R;L!DQQcIDnXqj$)GZe=*q1n=EH4xmFI(A{q!Naj7v}@@t98v%2?IVL-&_*V zr;Jt48K914+0^{iIoWV!m}NY(fyPvS%ejHZG&Xa=ss?*zu-jf)u(PW1+y=hBv^Z(S z*CC$)XP1g|#ZqC>jx+JhrZsTKVf>;skZymi)~P^|u^Bd9s&Om1Y<0Dn?RLrZh>%gh$icT0&SV=X-s&GmB8*wh)r^iM2m z;Ly}UxO}CsIC)vx|DQ6CPE^FWQ(J_M-JIo4jpjA*hf?v9DBHeZTK6s)rQ6-`Pl@JD z;t(0;jcHsW9x*#FIy)M81ZKQ{2X@H!iE>D>P`1Nfkk>G(mzD}8JMS!-^B!xVcTHoy zH~a1n9uWQ_oKh{76;5eR!|1>SxAYpNISndb7qALM#)j{duwWz*S=I&6(2t9EM(hRN8sf*iLe3 z(>dP0cL#IE-N6geiuzW0v3SMMnb*wAYI1QygvSuJps3th-l9`NLBlw)ywfvtQ_H3K zc?Q<<#d*td(v~)~h`|z;lL}h3s4X39@!2>ob?v=kflhsE_rQX?dpz@Txh9mpa93|P zU&Im*xbXvS{D2!j;KpBn9NhS+WNuu%R+zNY1<{;)=;11A^&v;eGU6!DY_L2|&R2 zq<6Z4zfZwp*;apudB4b4?FZ}aAg{O2C-sIpMu17{64*6G?a-@#Ry~tT+pO^Pa9w#D zE4)x}-z15XhIVv_{8T?}rr`5|Bs1`m%mZEAgWcbQ)#$dFeFhbT1alMcGVe(CPBb1}TA_AGeYcXik&wRB8TFsc^;4cZ%gT z#|y_C%kmlEmr|=-R?h<813BSeO#opeeedRK%p~Te>(qGa0Mer0Ww)7`;(cnbGKtqLCW+=Je0r zoQ>GaTTI2%UV)p91~FvKZMmIV(@G2p^4{YE1j2Ps#kotOQqpwY6V19u z7rO4vWmYhQr9I+{#>t+vN!;Cl-n)C4bN3FJieaGU>^5_l(SUhS(G@MX94xExY6Kd` zVn*73R~xTJ2=g1}eUPhQCo+Y(4FM2?JX1>xAPX0y3uuQ^YmQ1853%C4%C?7CXLxj{#qKoW=mvdHDy;fs+ zvsS-RTXW+oV!yY!+3s{h+>DCZ1Sa<<4HQpHP`o66 zK|xC_ueW`uam(+z8_Qm6wcXjMVM7rpAJu_kEU$s*%u)S#v-&pMO|Nb<-ePu5Yj>sb zeoAU>qt>~xT=SP}jhnSrT@*)8=~`5aXj=Umsnriltv1`W#&W$@Uw7jh{aAZZW=%`q zZs=dF(O7P{n{KP&w(6eiTl7yYqG|PiM+~#5-gS{2y0uQ%VipOxHEsP}sja7_wm5fO z?zo@pc^$EfSzU{Ljanl}HFfr7jij7+nMP_M!AV?#k|5lyTA#V|t{P2h*c42d#pTKaENOCO4Var{oN z6_?`^xjp36wDCXF=R?zVH|^&G=GL_JzYYD_0Me2cW^I3hoSHU%>qv?O(DYV1wa%8U z1Q2A`wD$j`)}EAFLm8#99EdFOy-2J%DZi$@holwg`J@%7*74otP^ODtP@-FkB9u?4kwD^c&&0TGFZ!F*H)HauUp3Qg)*)^>_dQ{KFC_hRP zceGqgDWPd|NNV#rsZHNy48rG?NNeGUuHmF&n%3WcRL?_uKoLNUYfZPY4709g!9&#| znpQs~wR%EXp|DCm@ibz~+x7TUK_ua7uSw>9@Pa0bAyB)8!X3+x6sA=J-fr=;+8X&IJyX}shETf>=GtzLIs)6R1SuHd$)MAihF?@8;IUY?RmXxe;1YV)xerr!2$`} zS_{LnYg)@2`q^rx9Zn7ApL1|@3DTXNE%paz0*14Z)fEvwLG7p|1hv^ine6NJ=E^?eq50=a;u z#e&r0hmv|}v5yRYa%$R`G>m1vr2c0?}+aXG@h4JM3Mt+~A6 zLw)anOkp7h=?iNh`3eaVS*GlZQI}TeWU|-GY#jE1m9ucU!29)H*M?=LT*i4 zf7U=Nu>AoAfp0-8K~7B@|DV*xvoU_G75s-yeA!Ow|L&C0N#&m(sNT{RWN`)WGPZ)Mp0iKMi-8Aj8 zy@vO1NRXUN=)1eI35zpqeW=xlQ*J!SjRq5c$;CC${ET5FsD3q}{g?EdOe~;j@o%P% z{f4_yUw7*_tjC@g(6sos47)HzrL_u5kzU7Y7p5txf#L6@co;E8p<>$TVI&sOwE7Dc zx`d9q)@#-}pcdE!@O?=hPt_&F3u_?xdlDqi#AOn;k&S6}az>FvDx_)o9~k5TMn1iN zO;izCYpGdwO>6(iFwVigz1Ldy>m6^iYcbAh5lyTA#G;Q4Q1|uGN6fBi?UxNQ9y7{p zfVEwR{n;&*_?>`84(a zTVDTt7sN{l@G@I0*aeZGISprUrst(|&8BmO^U9&-d*I<8o%$$VTPRtb`oN5P59NDA zD1|T@i-pCdvRxPrn$>W^<7%NaC*2a5(N`AaH5}tEEG=H1FD=I^H5}uXix>ib-js`T zQ_ICtX})9?@FvP`I6XC8SS-w{l^RY@3Hgl&?-xqN$$k#rhxs3b(%D9^!P&yxrKQ59 zqFvacFt=e=;OQ`F^bE5i$ZK=HNBmPUFWCV+4-wt z@E$`igS^JtmH>F$+Gt)wKX)EADUxH$OBYpX#URIqxeb(y85XQ4m*zBRc`g;_ir1Ev z`V3kgA;0mW$}03JLNW#-R9_C2^x;x(XI^ z8o0;Y{Gw8sfqU@G1|1`!VOgp1gc)ng$#p)i;!dsh_ zmPL}ayB0ajZGi299B9=5+l7<>tHttUVWGJEnWgzf%d5qt5(Zi>fqHJ3MNvOw7+aoy*%Z}|Hn?0aiq|EaOaqYSH;gj|{{#)tl?AJD4s#ng@Y15)^=y#O z5EqSJIyJdGGgX{hoSB{x*I7ecv{)$vk6*G4L%)<1hF-Wp953fvkmPIA1>!vSo?U6Q zTLJr{nX5>`hM60agYSEb!d?fY7WIY2`H~br-KZ~QneTCbl*NeZY2?9aTdEIpoAe?y zB)pwogl08fD@7yMTV5+g^FF}j{e#KFUxb)cAluOuG8N=tKk92rI{1aj5gXm?4Q&SFZFOz-N(Z>(a&7t;y8{!d|b7; zK*fHyhS68n0gLtE_OPJ2gZ*Fue}7UeP~ePzcw!9xzYeYEh~tmsPGl>!{AwXT{Yw5* z)jOZOOT^^I<>YI3bJ4&*rNZ3qu4~}EsA(J1Cq{?i%W35%awMD2!)x({bH+InrE@3M zt7Rx@jss0Btj{{U=y-K|j?&o5p)Nq)+IPIzP8PR}K)wWjap;vsRuE`@=pllpWTufu`Q_9pz!61TkWIuwOUp(u-jiDW_{ ziYSG5;fA|)tKDfBW^Rr5uj0Ias^Tt9P9{Ko-tj{^}KY1>_**K*DiyrX06M zq+iwbiBnHZPDr}KxB|Rnxk^8gzYNED3O_y{&W)rBCH6>rFor8x<@#yI2UbPLrir&$ zIV!UWjO}564P!I-hGTgj4ljG_ZI1SUe|IPp82>pA zKztL=L$1~7RNQ8T?+{wO;YuMYl)E4*&q)l9Ud$s6ZAdkh9uiZ+d3n?I> zw7kDJ9I1`m^~{}*-qnf)fBC3JstKqA+xA+NJanTF^Yvy624qhvA|WAU{m$9FK$658 zj>S8+0xRPUy@tTYCAsX21s0{ndNt1pB7{v_?nQsk1q<^NHAlv}? zxwt!6Y$FmI2HjTTM52Jz0~E*VI2dC(PBnoKDFdmhTYgZZZsD`C>)!5;u6H+@qZ@9+ ztKIT$c*d!q{}YM+2aX=td9yL5!dHmv*|D))M%(!JNsW7d5Am6LJC}+6PGqiNz%5Xo zZDlsvAb5LjBl9-B50wfeZ)a9J?TyUa#pXul3MjlVo@LY9a2bSe4_yawAYaK;gUV*v z`jTn5kO}1R&QLb%b~^1&F38}#I+md?hDi2St8NODpUND0>4v-6abZV)28&@Zda)`F?FjtCn$mVc#UmP= zr*f|MY`35~3;$x`2Ku^F(aziNw^%8o1*OrhQAU82$A$7B7loq zdgo58cMoZBDa#K5aN;QZHHiwiy(f#eS@^j2q*o|ec>cCn-FsxnEvu52aMbfw!+p(r zWacWb`bkt0p%y7pGgp6Jkr6*64zahvH$De{6v_+#I0w$cxaMN53gH<+9T&svhZST9 z?Hx=a2^G;Q(1GrGt?4&)Q%6E@78D}Y-1h0|VUerxy)M_e0T2h`dbtGSngZ#;q*-(P z`0><9{gQc72W^7_H3XgheHEt=Cp)(^OUm$K`s_&$;C2% zxx7ebr^%a(WO|xRmLNAN&ycCvBAJ>z3;$k)f3Ly6kCM5<8>IZ!9Mp4>Ocvn#3MnsL zB*pS1nJ$w{Wl}1Wr7|fmkSVCSQd?PVb-Fh}r{cU^&8dzE35pHZuh*DFkaYO&I;t}- zI2BO0JI?jxs){3hh44$a({9Q{xT7(DjA`n3djx;qV2z-2d|<~g(K~>OmU(eGGw}}2 z{Z2Zq2|JehoNm=*wzETBziDLiZ$9c_k8dq{E^Cy5n5`=aQCFCp$Vk;p7s{zg$mnqt(8pc1@XoZK@dh zw=`ntkj&H-8AAUjN*Os^A}Fozx=6Ir&Qz(j~{UAMK;*+JWk>fHFNiP!WZq)b3X zu(DYgq85X8_drx-dT{Q{#xuMM6KN*y$RtM3TMKc0Az zHLfMu3^m^8CNk82BDLm_!>I5-kua(GVighMQ{kGIt=D{)v{y;fMf*Pi7+`q&*|-Tl zEuyP|Sj|V2YGR@a{W}*`#C(37QSSTW7ORz!e074Qa}$I;sP8QtgI1gEnmR4tuQn`H z^n|V=xr%ujgRc1FQi3IN)FZMG73IQ*HC#l+`BdG%$-8NME=0iV!GiZTL1y<3G&)H}}I)6tgv zMXjV3n&ynMyY}Kqsd)UH2>=7~Vq7(#3}>wa=v#Mv&$rveNkr~s6Ini@`=_ioVjRih zHh5ICujWW#zzdpiE!>h`{Iw8nocv;g)P;?C`$k)Fd`a1V#Q6CTjr>?4^MP*Gd_PY| zwo~)i4ob^dGcvidE_f~Ygh6cNX)y6HtW8x4Teg8zG zGvcf_PzXe@_op`cyVl%_55XB{czZ*jHvJ3MP5%YX+0k)?dj1wJmgi@e7K<5Dn3^iV z=j_a-Irv)4kc+ePlW)M+TlniFjg+}OfAQ1B$;IV=@>^Ff&d-)Xh{eOB#iX>FVK`>MH&N^E z?f%+-6dbtE!n#DaYr{%wFX~!D_x81DV%fDAI-g#2MxBf5Iv7sbP?$)n+&D?Z#gWgl zzpvQ-eo0CHBPIP0mGnPQ(!Z>v|FNw?@iAeHU&((WhU@2bxNg_GwRC!t*v^DFtzc4R z*m}YC5y68q3M201tHZDBtJCD(7U2O0dt^SaBN-w;>G* zR{EPZN`EuNiW%x*1^1F+O?ugF*Yi!!@9wxs8*0MeB;4{DkUeu|gi6&{3Z*y3a+wK# zFel~InnZhsR&;(LVF2PQ?8DnCbx=du5+W1!df2(q;jGglC(WIDXh)rjS`NKGU>4>2 zt0ZNzadj&_)N>+7Rlzt`k)ym$*?z*@JSeX>J8e8O(C(;Jd_=^vm~pfo^*I~z=CR6k zXTmuK`?2HBttz>mb4J6nnV@mVWhcgeoou>$$q{wo2p3QnmJk(9|6D@Tacf|92u4!S z2s}p-7o_6lF<)ZDR(jwwey}cH1I?Hi#<%4)qY9qXRsh)&<6eNcHh;1Duu^TXGvIDT ze1j18yyANLS8iu3m9g6mZ_VqDRja}?9z@G#L0(!rclLa4qO!SAt>i~QZfI10oCf|l zk*Zz?$uJ?}{VQ!Mh2Y0>q?9d$ONb(QxbN0iSqsGD{UCbUm3E$5k(9Tn{;U zO1pagqtL*Gr~#aMgtkIJpVLEsBWVY8vY=)q?(MGI!YkF8Ig+119-~Q2ZktrO^Er$M@%EmE&xL-_udKLPEqCw%C2T7+7Hv2L%`a}kzWuh}IHuTggK zlz6j=-)r#Ccl(2mlgo*JZ0%;vYvN$_RsO}OcQDx0QjK)Pj=T5J@5yaIg{h0Zj&l0h z3(C6*5LtNf;Tb|phyJQm&3Dv_B_Ao8Io3$>`15iNpjKBC; zx=z|R-A>1&=lDO@^Ez$=ihw|On{2lIE`C$rn4DgH8k}9~B&bh+F9;_`6Jsv`|8G-H zlo)4~DeUjOdN(K3lQ^q|;-{kGWokwwg-)loMP^!Er!h>XanT}E)Q_s4YTvIw1!aeA z%f1km#RZ9Q_8T%t^t=yuR9bFmT;WuvnBrx9dUbh=j`cE z-o3lMIzvo4>Y}ZflZcrg-$Qv;JMm5MrSIRv(~BXO%cTWKR;Iwe zY*7En+E5-kYfqd*28lk~fTi7I<|<_W(i*a-70858e3r~Swt@!EH9Xu7fM;i5exI{_2YoGjeyr>gj_XL|8Ipz|BI6Te@gm)DCz&Hr2mhS{;#%%>Lr!b z8h1W_dKV^L1GcHb*CPEK6F!l*kJ8|k@bpwLj~9bJs5OAI%T{+Q#)f>d6tj!LWjhPyRI z!&Ei|5r_Vb2$ktpLv$b>9;enqF%sxWr8yy(N~`^5t=V%gd7x8MTl|E;LwSo*gU}v1 zK00!ooEjZDMffQX^eB}`M8|K{O*DKbve>Mdl%N>x!$QsLB+}Bq)wlf3=#V=WpMt3)MQ?6GJR;Q2IiOzR+5I~W$PhH8Vu`ZRh;}s z)uoLqUD@&Wm3Kgs##uwx7qOZW^CdN^qz2Sr+wM!dv%mb*fdf`6X*?vK7LGH2DR6i# z41bp2gfRf45vODsuDc3{|FNeG$YeDnBXhf*kirXNTt#=({~TBxT@})=NrChO3Z(5@ z3WSm#w#Qdo&}p3~&K(w8JjkT8%oGlf&D+bV!YZHH(>q#_exW?Mpy=1AWDCgx$M zS*VGT)K>6B37FAY2n%|uRi`z7`wFFlzpSMHn35*_B0w6VOo)JUpvfannZ^+xKc6F6 z6d&(U(W-?;e2oH&q%UIjVP^bDg6q(L4h;Q!T)8wNZ}5mFzCSgOdkjEm2grz}Qa zCpP}oyn)K{$;w!*xw&3{Lx)b503HkpcC!H9aWIOv^-MUUxXQr(zB0xwj8wsd%+*i} zssx+~C~eM`L+wC%R1a<+hy}X{4x|PIbs&C#TcpEUJ@9w#`f5WNQ}*^Irl}wmt<2Bc zpfZ)=yeM}p`G{)JEFaN7q;LlA-69`sltOu$SVh9Y5AEzuk^Mt|&9Xedf4>6oV~GIE zAUj#yNyd3LDmmSouZKZT$KlhJ6kg_W~CH5+L zQ1YQ0lVMx%LPQ#WC&_hEdHwYGU64D`XRN&n`vB9%>U&cb?yoS7MB)JKImlbv1X*G* z%$XoyFb%JRE=4z8(;P6c9BHy;&*icmbT+2GskMzp9u)0vs{zR^nhZjbg$?NxW17A6J61+WSSE1Vn;;b#;|ly0YTZ`U@^pXD7Nrn}Rc(k8-Fm6(aNs*+VlXe1;1Crxk7_QP&Zo{Bo99-A@n zK$OJP192HwwOzY@9rzFJMu>2N$ay(xJ_%jDNP#9>AIS>tDebtd5<{TRKpz7R2#`5n(X1d+3WU64@>tr@N z$RxX->u2yHM6Z>p!T%^TK-JD@rq4fG_vl5aI8<9UGNDvUBji!gbHf4j*d6G@c&`7J zDy!{(_BiyRnwes2OVm*2CYqU}>W5f~#dSC1wOa5yy~zgp44TtSx1GTYAv1vg%m$ti z%DA;ob1PHpW`@rIIvSXx)$X!f@RoT9H!{>#>eITj6X%B*T*m{?lwo=s9=#S6BmEsa z4$r{H!1|gSo;aQ%#$FwVZXJhyu^kq($p-a*pVHKSO054>O8uvx{!`UVnOb?}`khKf zX#u$})R}Rrx>{rPSI(Y(wOY;46E2y+-V)TWRPOjpj{;y*3nF^@L<(8fC7({6+%OAE zc+>4{A)&5i@IV=@HHU+o8_G=#aV1Tad6!^e#x@)u8Aom+tl4HBYR^huF!N8Y8Oc+B zG7K0oXR3j9D3LE8vk+it!GqRoo_gl;d|#j=?@t2!ux2q+-DLbNP_^8aVUBU(hxdRB zABbD%5=U6Q6)uXe`x;%!Pf7yaLk}O=RvY~Y)C%S<{2eVP041%lkU`;388`woSmHne4LQ*5qWfu zXS2?!Eby>X4*FR*&MEi+74a$5L?6c=jt4&+XFnXrA1e3*GEU&D!4q=X5eF63i7+D! zCspI$kJ%djhaz}S6R^mhwA9r9=2MnLVB3IdH+eV3j`Ewz4p6#YfZ1(FgWaotN%!y_ z5qPf?U>hskMC+_z0ytrvK2ha0d%_(DeF}`Y^chKnJGGUkD(MsQz#qL2cSx4#Zp1}!31=C5uo8)ZOzD2QHKLH+1TA2PP;6<*j(fr%xf7K z@F@O=>&v-g@SV%DsN*_i+Ao@aoD)_(x7n~=1-?O8T~)a9vPN!4cANiD zhp!2=aZO~$$rvysiVXeABr%CE6*=Sn!mZ__In&zqsAfzmcR|NmyCeDzdEE-;MpO?)t9z%n0v%Oi!Ho)e8nmq@b8OX2v zFcQ8qz=9sz=X1E#V7bGlhIvybGJX$sl>R#G7OAID2(6!SZ@R6Fx0)G0pYi+*z~6Fj zW!NR6xG&CD#l32_lEd^^E`7^ou~W|G##pUc#(5~j=8lf#`fCEc&r!d65p0-CcVGhDaqa@pcX4Xr%)&U=!%mLQG+}xH zfnOg#cfLx-E7#A#)Z5kSU}~Sw4WFk&x+5Y9v4;v2)M^C5sRcNH0l-QXTF>U77g>6| z0iSVd=5qAY)IeA{)tO-FG1|cObLVMS0WtVo9dXW+u>Tk!eyMKV-;NJ4CNPv^^hJZQv_L~d*I%67s|=7aAW8zW4?kc=;8!?F*wg9oX(D_Y51(>C zjzifo&e_fdY=`lGiilB!yep6^6jsLO)<{?ce;GSHF%BA+Fip7)V{Wu(LHEMYR>~!y zLSQ|rK18!B*Lx;L!I$hdyfOnL=%d|dV>>Not`@Q+9p#T*Xcg1B2>vaW8svDy1?~PY z!KJR#?zI}~*7RSbI8~XPsH8jP?uIv(z>-dnSY=bzI_{@`lp98er{H-am+BC#3t=IJ9mF+DVRoAXqL)xl zt2=#3J`3Y~Krq~#3_;_kd^yvYq`ePawO*J!f^guhOK=U>(Rq0M2r~8^` zZhXD^#T0+4$C754NuTt%tX_FNWmEd~N_)>HwkHgK;ZD89zux3Oq8*<{w<$KH9I!Qy zO_~Gw?@`i!#nNG1rXbT@pV9TNk*A|d<&wTJnqay?5}a>P-*`Pmou|4A39aN^FmN>i zbGKQHLaQmYdy?K)7}O~#5c8;tCeJTRJV`=8!G@LD_{E1%eW7`>t87Lw_jKG^;}-g? z$EbXNpgf=dgo$Z-t%iG>Iz;JI%*p(k9oOZ$JCYvMCG{lbfw+0iv}w~SEAj8;q%LmM zHaFb{j{tff_g1wS*g8t-*q!$1-F5|b?o&|jb(&jA9%j4+=MtDv#@D;uO@CtS%$XeZ z>L7Ok%ha!fI(6U;xas%to=Bdecpu6ruw%D>6S>_zY{5K)rOexORS$<3MexVagW-bX zlgNwF7U)be&@t!49YLIU;32fBDdaCH75efjP>*Iwtj54(Q)%saJ#|NYkeq(i(_mlr zl$n{P%$pcn;8JcjdzTtkV$()9-j)q+)1NbGw%Ht;J**KVoGk1x`?SK_jymt6Wb71w z`UL6qcB3!7<4$ycs-Qx_31F}^z6v4vxbZb*GxKK^9IAVbfdb}v5tz{6Zh%MPB;PG_ z5<DVdECR;Iq+{aJmf>f_F`?Gr@yhGD(|6H+ ze6kPs251X51qoS&oHS#uk4pJ)q8Vy`B*jq9v^=?-&cWh`6{P)+J^~&jhKb6K*?Wk| zJe%EG(W5SaDd)l8-8ND6XEIS>mwtFOVk792rNQs_D3IT^^{u(rXBz*)ju@;&3LjP( z>^9je{ri<@CR%zFO^i7!%snB;Tp{R-@b-$}Ro0>VcYFrx!+!XiOwb3sBKll^HC;^* z-gT?o@i0nzny_Cc+X5`z{I z>R~;QqoJ$oGw~nuybCm#pw*eqF%7=n9UM@8CVl8eB?sWdhV0nt*X&ALwr;gwvkyH> zU4I7TwD=yalRq%1>*NpiJwCgCrzcN~qjof8`SEKlOq3Ze*vF|DidQQ-POF+bnZ9d3 zX~wB=q9eXS>0-Qt(990O%f0_utKJ6TI}N?%*v`@w{J!b#V{&)tF}_VxKcj0>!9>00 zZS=Op(;Iuy!`Ov0RAZ;~>nFcR`XyNs)?hww;!!p{a0<<_UTV7-M$dMCa_JF+Qi8j) zrdfkVfFF+ooC0PaEN-`eOy|HmS4q-)ksfFfAlW(LviZthBJJGEsm3CT&s%vj-6M> zJ2_&9+fJdihaS;?Ancf0S9Hq|4^=KB$)aFzJz!8!-M2Hm7*gYMjY{dAR_(M6j4 zsaG4sf%hVX{qB^QJq+STEjIE zWL&L!zMDFdyzE$i>OiLKANjq1wDE{Lq>Qp8CPIm(+`pr2rhnFUG403F@vK7Pp_P?-t#!82 za3}>mNb$~*Ox52R@qx(~c)j&+CICsy3n4hZ>$v}|{u5rARvpqPyUAW&#gj)+Uy9_T$ z$lB%p#3u$NU$h{$JJz1fy4L=fN#QHq1iWiarLvuE$?(tV0p~)s9)9uCs`2yml7UJf z(pOI7DB?+fit*RaQ{h^tJO4+!3DJZOqC}ATl=uIUX$!)Y!SOA~`?k60?j%}^ZQS!e zWf=!uVxCNlONIX#9rN@z(f2n&d|THASW!>(^?lny|1LfE?ji>Xf1-F^)=hH>+9Upd)oaL{Hi-gslA~>aPxsy<5WXuMCE;()R5p%|&`1#yUBBZ7r>3J$? zs9cOGe$(yT<3kj`Xt;9*|2`apwcFcly7&4npuSE?fnb=lf0K?NMk*(EN{ZaI4AlI4 z6-a(PG?`~(YS z!b+Kcj5u`_N<*YN#2ICX^UP)!MdnW1vhO53_isD^CIy((CGjz(5!ejiUSJyz4N|qI zqiVw{#T^BwO%VM;3hlp1^}g)y(D=V|eqz_Q2brZDc+jQAcd-t$)@4~gd62r7g+orW%1>m3w0Ev*^7SL-w4FXM8;MJLb zdRB9MJdy_!@7zl@gIK#?a+N{Iy2WF^QODmn#Cv@^m*G*Z`|bTuZX(0n$M5EjIZT~G zD;j?gn(IMmt_PvHzL-LD4cXh>w7g7Z;)fFLwBzY9HC|9!lJ$M!g`#3}hpiW_4+t`b z!~E*U>>Z}!MwvvtxCq)KHgTJE`y};$G9&e-px@U=cwk9#F83=wf}Y&%Pacf9xHN06 zwH}V?O1s^3Yk(}MQv$?$v{IwknrIHbb3iB7Kl+qeZi*Fnuk|4b zUy^~w11Xuw$4pjc;&Wh)Cn#5sogbcXUIuCTIv7>1i8Myim4 z?|cN^zB`Y(e30KLA2z>ue zc;Bv{eCKG1oeoXBAv5jNyI8w_)M6Ck+S*-49_7lpJ5_b4b=2I~aD1Tut=*nER(;SK zmK%NJlb+rSL}$Dmyh+_^5W~CWhh)-qC>{Nf^>&t@Ejr^22RFW?BH#L=QWdJlB&c|N zmn<|*(T8#HF64NmB&It9=^d|v5#n&@_)p*0r>bI>M9mxu*^NbQJJ~#c#jhbvu0uu2 z;}TN1zfksiCF69fs4d8{m@3KW0p<5ZG-A5TaB>N7-dgv%K>&d8N=Hz|38$J5^mn`L z!R-#nq3sXI;XN3T51Z!Bkg|UKErntK5wY-k|4bP#w<3U}S`##)OrYv^w)#|xKC4-Z zp(X&AKxn_(fGlNh^bO?-=xlEgf2`GO^<2_uleKoYO@N}BZl9nY)qvV;w>M=lul5Zl z6H9jqpw%YZ14aNfwlTVqhbjsDoBM+<-4!*0ZyVNb*ntplwNIE{(7*)W4KFFE>{8!= zp>k=L#u2NM!Fj81a2oDPZ*9%(>~QdSpeR<^P6sb=hP>zYlf9SPK4N0XfA3QmvKlc{ zjn4fIDS<@(w37Yjs+NlE`fTZw+8UkY$8qz=GS#^o`N`6sM30v{5f z#j8ndtzp|e>#Rchup9T?y0sqtDDVs%ZO)b12T>OQ5oZeTk!*T z*+gnYR2_ZFx|WK*mZ$C$e}t#qnIPQxZV|53jz526@O>Tj5oZEip0m1Iow{R~uL#Hb zXhikCL(hO=0&fgHFS$o(C+4=doKKr5<1z8YSV$RojW6u9fJ9jMSyJ2da=9VE#!!}f zEeL)L)Ug46UJ0u{m_jBAdXvPMfiGLFm$kLz3rG1jDz0*7-OAJEf0d}1H5CiBUU$9S z33`uKNWAI!-1*@%Rd%s4q-iR={2RoC%=oyF(#Xb29G^~gXV%QC9t zp+1){-EH6MzEyKv+})^o&BXYpD%Q4lU3fI^U!{)wN*k?Sel9}?KIw|@TwpowuGhNs zE@@;H=aEn{cv~J8e~cLd{j{pUxF1#(lE~rvnMAbyynIKJND!8d9gK@SFm~?k8tNZW zp>Mr(?F|l9cKocwjy-|sG6?t$5U?2GF!eOy^MRoM2Yd!`-$6stbO|@m5*E{lYwz4s4?_O~`x+Ra1`{ap_!Gu3z9fIU;Te|sXcRGN)kVZ_MH!5a+8 z;0u9{sX0DFucSJW`E+@zT@UA=P|vX;K8p)C+g^j+!;W`+uiy>sOQjhfrhU_IXK;1d z?4ry9^Bw&_Zuq&NYzRt_Cb~NBT<}`R>@t8m|L*IVTm0U4Sd4r(v*Lm_Cc3R$a`2dd z+7`HziV%f4e^c4)xOEo=`0AYtQ19KKf;$(W3IvnjN4?!}>BDBT2GrE;0VQ~#Zgp1J z#an@=(iMcpZHS2C%c0EL6kmr!14Vcifwm9rlrcS}(knmg%82$vW*&yQ-N|gUfsAOx zp^VqS+EESRGnpg2S6o<2roE2e&4hs{#xkvTD<8zaf5;%Gjef%_oLeVH8I43$lt4Pq zv{!}pm`oG*U9HcU2G?y#&|+>F|IFz?`VnDg$p{XljNzf&fbk^LHR;iywj^-@ zv34QHa98WB5%||bd7QEDh=~V$I%3UqpGlx8m?DvcDPl~-*ZqmACxnHWFGaYqni#)h zzp=bGf2;HJ$+w#ad!haZ7Nd9)9?Fvr^Pu+p1*zxXuBC2Tqf79xIS3=T&Y}FlTpS2D z{x%g8FbR~Z$R0!-#kP{nVBt>?zqd&v7!VYQnHk6@fpZ>nu<<8?DKm)Jd{M&YdmhsA zil$eC-F0t`p$RW>!#F}DJRZ=N`3O^4krhy`l0c0?R(dM{gP#$Y%sR;T2p9>r zn)r$P1wyv~z=Kx3HFcpAf;Wg)lLf-VMI#V3J_j05vOYL2AhAX+y&9 zgfu+paKP>8>Jn^t=}tacYce7KlbBx%$pKKeJh2MOx`~J(vIjrdFvAC)_`T`5x0sVb zz*C_R<(Qd>freqV$y&3$0y)<`v=l|%r_9w`Yk}A3w_|*#AM);iac4x94Y=VeuBZ(VmflvI(NwEl zZ#SE@P2Z)D8=HuwR@;ZJx~r?OCSBHTarSY4}w^GJy5R_YiyRxEx{Q0TM$H zzXqN*Hfo)%j37h=8!lOzXgAssYe7~JEom(@TfjC72^H5j;!+Tr*tAhkY8Qrj#)b&uJ(=o2=l08#;ixf4lLr&79)w@9PwwlRvJc|B!(_9u;4_**CiAxsN?_x$8eD zBwdg!;R)t}Gn})y_Ado!wV2hdB|C7DYq(9f+vk}io9nY#z49o0reEN^*7go@8SnLO z?GUK;>h1&8UfrQm&Y|V65R)439I&v$-?lTXM9){Rx#UrquhKeXw zhwto~PW9T<#Wws=gKYSiQdYh0@W++(-_}GXv#DcoGqm8D zi4oB4OiZu{Im09yK2PLQLmoLiD+?F1lK?L`BXB}g`7FRmPz@;mZAiQgiMMGW7>u1# zRjYIM8v-#XjX=EzRAL#io=jic_heEc1<*JFLIkTQf3mu?Yv#(N5f%k+IA4|55Al|FZ3j|6Y%Gnih6v zH^>Tj+tv-ThxUB<&h#G`AsbtZRldN{t1+4g!IGJwIu6z=Ca@k+mZ0wwGyjATBaTr< zmeLgRe|DxntyIPu-kR4%%F9_CykX%p=>ZdTtzaa{D3Uo`hI9#aXU~E79JrJUKa7O$ z%q!RUc^a3B`cT^6CURPCbSq^o5pf?L}Wb7gN1XC=!niV7^gl`+_#^=tL* z_m0BUos3$5ftVn?owYu&|M}g-Rhs7ob1%Tpz^N&At>Yv23}w17MOyNsu3`zhKs&AW ze__qERpAQ|10_^c^r1d_RT};~`!mE7$AZ2Hcctx~%gvyTuQ~*;4N$ndkM^^bldcW< zitUjO_Zz~fZTPWb)CLGnT;`l1*g6$ax?7OWw>f_Fk`Yp#5n#U7Oj>&_mMoQ;jCS3_ z+of5_axUGs5>nUj_PU&4`vhjd2RL%?f3)z(ifVd3ltT=o-8T~S(m|TWTs2^Qi-^HT z!)~v3+8a@iwVpqaE9TAcCv0`>YvGLBo~~g;>;6e~&GuUKy#1)xY`SZxWC+7e2uteWu*z)0 zLDK_D-z<+4?iPisnEI3nQ;#arz;`RF|L2wTpHtGmrlkM8l73f7|ALbKo3>YYCHZuJ zwNlwni(d3ODT4*zwWNoXsF+v$K0}u5O?IE{^vN%f7rKM9AugKseDK?}kG$Q)f$j@cdwp=WCbg6Jk9s!P|u4G7t# zc#x}9_n{;zjceAnMV#lhf8lj8zE5Kv=Pw7;?u=P?=bf-SV>{C*M(1#YK$9$tg@~c! zr{1par9xeM22VxLxHWqEzD0<#lwGHN*?< z*GF^gsp1x^m63dPf+azDPry2UcJyp<IvefFT0WVn(t zhj5*Z7jQ1-h|V?Of9zatF6r?$9>N9o}ZSM|Rjh^RA}v!*g@Bx&GMW zQ+oDTYwhrgjF}eQ&TaJv(eqk}yr4cK(>5BOw)RzK5>7kBe*~oq>h<>DYk4hVqIt%& z<_<0nCU)Tx>N~q1zkata5hz#(t{CUtOZQ&oryy_x+D3Vkuj%1@;>W5mU<-<^;Z15$ zliz$GTFb3GnAkdR;qJrST}|B>QaZAu5F7W%Ig0Dlb-qdg2?&Y{o%KYiAzm;VBq9&e z{tkd{ZXL73e~jMCJ{cjlw-M~U)5DZCkNTByBY3m%-+cyLzZ!C8$5XEpBW zS&e(nMXe8IM61D=ja!yoKOWk4KMuwgMaGI!g)xgLGRmrWNm><$Z8l5{3#W;5mz?Yq z6}n~4>iVn`!dh=$cl1KQ<)@N<8Pg*6Ve2tFo*)PNlt&=`Ay1wLnN1ji8C7Lrt%A^R z-z&Sne|_JjTlYS_lh_GAq@=%JNq?0_xs%kEv=icy+;IOU7^TD8!vgbk=!?kQlq@o$ zv=pPRKFqffl;e*`Ql0{7JV?D1pCq6T8fqiBZLu%wAjYJHH%3QsJM|>r`moJ12pplP z5jpIm1oYrI@dFX{fr$D*M7_5nDy1)Mv({?0f4eM@Hq7o-2FMr?C4t$8A21{EE1V?k z>2&xs5k8HFPdOmRp=`MMKF76+lvhNIBII2G>r_}7n_DAc5&UKB^u%~IN5VAaHjKH^ zo^c60T#9zVfh|pdIH<@_Dbo1Usw^1Vt8no#cpGWzQ+xQF4%`F<^??IFdEg6bwcXEg ze>WZ`>3h_Twe4)o6#?-+wSc~%ZYO@oQb^v#?Z*IH4`=rxo=+c#f3H}#e=S6>E$iSW zj_tWF=22kIrxu*2?TcUS~i2M;G9=ckvno&n}vK^8tr7~`%ojy_8H^@wvOEK*tX zHhNpt;b2zO^6wV%pM53&spXSZ3-8gLA!k8CPD{gEFwpIpd)LL?9skdm#$R$mfBi6L z?M~&^RlnSr>ULT;SD{CvYSew@tYdgtX`Z=%blf%f_NFj1Plq*Usc-0=*Y1+r=x12S zPuKFR)jO}=B|S0y(Yvvu)M1-pYoYls)?Rr0*{S1=oK=guqF5G6T?fOuMpX}uglb&B zUW0`KZ|U*@7whr*lo5DTeDVHhe*{)8R%syXlR86mcnH5$U#9|s(#}v+*V+81s!n5A z8#SH|B7&UnxT~;p#iMSq`c4Mlz!UIb-kq$|7ʴ!0d(lymNaWUX@Bm^kyfUM;wH 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 KGx;+ZR^fNMtBte( delta 447942 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°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