From 4df9752b54dbf2f70916c15d463a9d8b65319cab Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Tue, 9 May 2017 20:24:44 +0900 Subject: [PATCH] Pass the to the index --- Cargo.lock | 14 +++++++------- src/section.rs | 5 +++-- src/site.rs | 12 ++++++++---- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c03739a..406f4b9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -282,15 +282,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "hyper" -version = "0.10.9" +version = "0.10.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "base64 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "mime 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", "traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -333,7 +333,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "conduit-mime-types 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "error 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.10.9 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.10.10 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "modifier 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -726,7 +726,7 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "dtoa 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -831,7 +831,7 @@ dependencies = [ "pest 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "regex 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "slug 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1101,7 +1101,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" "checksum httparse 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77f756bed9ee3a83ce98774f4155b42a31b787029013f3a7d83eca714e500e21" "checksum humansize 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "92d211e6e70b05749dce515b47684f29a3c8c38bbbb21c50b30aff9eca1b0bd3" -"checksum hyper 0.10.9 (registry+https://github.com/rust-lang/crates.io-index)" = "94da93321c171e26481afeebe8288757b0501901b7c5492648163d8ec4942ec5" +"checksum hyper 0.10.10 (registry+https://github.com/rust-lang/crates.io-index)" = "36e108e0b1fa2d17491cbaac4bc460dc0956029d10ccf83c913dd0e5db3e7f07" "checksum idna 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6ac85ec3f80c8e4e99d9325521337e14ec7555c458a14e377d189659a427f375" "checksum inotify 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "887fcc180136e77a85e6a6128579a719027b1bab9b1c38ea4444244fe262c20c" "checksum iovec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "29d062ee61fccdf25be172e70f34c9f6efc597e1fb8f6526e8437b2046ab26be" @@ -1154,7 +1154,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum serde 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3b46a59dd63931010fdb1d88538513f3279090d88b5c22ef4fe8440cfffcc6e3" "checksum serde_derive 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6c06b68790963518008b8ae0152d48be4bbbe77015d2c717f6282eea1824be9a" "checksum serde_derive_internals 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "021c338d22c7e30f957a6ab7e388cb6098499dda9fd4ba1661ee074ca7a180d1" -"checksum serde_json 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1c62115693d0a9ed8c32d1c760f0fdbe7d4b05cb13c135b9b54137ac0d59fccb" +"checksum serde_json 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "48b04779552e92037212c3615370f6bd57a40ebba7f20e554ff9f55e41a69a7b" "checksum sha1 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cc30b1e1e8c40c121ca33b86c23308a090d19974ef001b4bf6e61fd1a0fb095c" "checksum slab 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d807fd58c4181bbabed77cb3b891ba9748241a552bcc5be698faaebefc54f46e" "checksum slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "17b4fcaed89ab08ef143da37bc52adbcc04d4a69014f4c1208d6b51f0c47bc23" diff --git a/src/section.rs b/src/section.rs index fa865c6..678b1ca 100644 --- a/src/section.rs +++ b/src/section.rs @@ -1,3 +1,4 @@ +use std::collections::HashMap; use std::path::{Path, PathBuf}; use std::result::Result as StdResult; @@ -89,7 +90,7 @@ impl Section { } /// Renders the page using the default layout, unless specified in front-matter - pub fn render_html(&self, sections: &[&Section], tera: &Tera, config: &Config) -> Result { + pub fn render_html(&self, sections: &HashMap, tera: &Tera, config: &Config) -> Result { let tpl_name = self.get_template_name(); let mut context = Context::new(); @@ -98,7 +99,7 @@ impl Section { context.add("current_url", &self.permalink); context.add("current_path", &self.path); if self.is_index() { - context.add("sections", §ions); + context.add("sections", sections); } tera.render(&tpl_name, &context) diff --git a/src/site.rs b/src/site.rs index 5af1775..43340a3 100644 --- a/src/site.rs +++ b/src/site.rs @@ -1,4 +1,4 @@ -use std::collections::{BTreeMap, HashMap}; +use std::collections::{HashMap}; use std::iter::FromIterator; use std::fs::{remove_dir_all, copy, create_dir_all}; use std::path::{Path, PathBuf}; @@ -77,7 +77,7 @@ pub struct Site { pub base_path: PathBuf, pub config: Config, pub pages: HashMap, - pub sections: BTreeMap, + pub sections: HashMap, pub tera: Tera, live_reload: bool, output_path: PathBuf, @@ -104,7 +104,7 @@ impl Site { base_path: path.to_path_buf(), config: get_config(path, config_file), pages: HashMap::new(), - sections: BTreeMap::new(), + sections: HashMap::new(), tera: tera, live_reload: false, output_path: path.join("public"), @@ -542,6 +542,10 @@ impl Site { fn render_sections(&self) -> Result<()> { self.ensure_public_directory_exists()?; let public = self.output_path.clone(); + let sections: HashMap = self.sections + .values() + .map(|s| (s.components.join("/"), s.clone())) + .collect(); for section in self.sections.values() { let mut output_path = public.to_path_buf(); @@ -557,7 +561,7 @@ impl Site { self.render_paginated(&output_path, section)?; } else { let output = section.render_html( - &self.sections.values().collect::>(), + §ions, &self.tera, &self.config, )?;