diff --git a/components/config/src/highlighting.rs b/components/config/src/highlighting.rs
index bfc0245b..54f6b8fa 100644
--- a/components/config/src/highlighting.rs
+++ b/components/config/src/highlighting.rs
@@ -24,7 +24,10 @@ pub enum HighlightSource {
}
/// Returns the highlighter and whether it was found in the extra or not
-pub fn get_highlighter(language: Option<&str>, config: &Config) -> (HighlightLines<'static>, HighlightSource) {
+pub fn get_highlighter(
+ language: Option<&str>,
+ config: &Config,
+) -> (HighlightLines<'static>, HighlightSource) {
let theme = &THEME_SET.themes[config.highlight_theme()];
if let Some(ref lang) = language {
@@ -41,7 +44,10 @@ pub fn get_highlighter(language: Option<&str>, config: &Config) -> (HighlightLin
if let Some(syntax) = SYNTAX_SET.find_syntax_by_token(hacked_lang) {
(HighlightLines::new(syntax, theme), HighlightSource::Theme)
} else {
- (HighlightLines::new(SYNTAX_SET.find_syntax_plain_text(), theme), HighlightSource::NotFound)
+ (
+ HighlightLines::new(SYNTAX_SET.find_syntax_plain_text(), theme),
+ HighlightSource::NotFound,
+ )
}
} else {
(HighlightLines::new(SYNTAX_SET.find_syntax_plain_text(), theme), HighlightSource::Plain)
diff --git a/components/library/src/library.rs b/components/library/src/library.rs
index 553df543..b933f8b6 100644
--- a/components/library/src/library.rs
+++ b/components/library/src/library.rs
@@ -6,7 +6,9 @@ use slotmap::{DefaultKey, DenseSlotMap};
use front_matter::SortBy;
use crate::content::{Page, Section};
-use crate::sorting::{find_siblings, sort_pages_by_date, sort_pages_by_title, sort_pages_by_weight};
+use crate::sorting::{
+ find_siblings, sort_pages_by_date, sort_pages_by_title, sort_pages_by_weight,
+};
use config::Config;
// Like vec! but for HashSet
diff --git a/components/library/src/sorting.rs b/components/library/src/sorting.rs
index 01571e1f..07dc4a61 100644
--- a/components/library/src/sorting.rs
+++ b/components/library/src/sorting.rs
@@ -173,33 +173,35 @@ mod tests {
"meter",
"track_1",
];
- let pages: Vec = titles.iter().map(
- |title| create_page_with_title(title)
- ).collect();
+ let pages: Vec = titles.iter().map(|title| create_page_with_title(title)).collect();
let mut dense = DenseSlotMap::new();
- let keys: Vec<_> = pages.iter().map(
- |p| dense.insert(p)
- ).collect();
- let input: Vec<_> = pages.iter().enumerate().map(
- |(i, page)| (&keys[i], page.meta.title.as_deref(), page.permalink.as_ref())
- ).collect();
+ let keys: Vec<_> = pages.iter().map(|p| dense.insert(p)).collect();
+ let input: Vec<_> = pages
+ .iter()
+ .enumerate()
+ .map(|(i, page)| (&keys[i], page.meta.title.as_deref(), page.permalink.as_ref()))
+ .collect();
let (sorted, _) = sort_pages_by_title(input);
// Should be sorted by title
- let sorted_titles: Vec<_> = sorted.iter().map(
- |key| dense.get(*key).unwrap().meta.title.as_ref().unwrap()
- ).collect();
- assert_eq!(sorted_titles, vec![
- "bagel",
- "BART",
- "μ-kernel",
- "meter",
- "métro",
- "microkernel",
- "track_1",
- "track_3",
- "track_13",
- "Underground",
- ]);
+ let sorted_titles: Vec<_> = sorted
+ .iter()
+ .map(|key| dense.get(*key).unwrap().meta.title.as_ref().unwrap())
+ .collect();
+ assert_eq!(
+ sorted_titles,
+ vec![
+ "bagel",
+ "BART",
+ "μ-kernel",
+ "meter",
+ "métro",
+ "microkernel",
+ "track_1",
+ "track_3",
+ "track_13",
+ "Underground",
+ ]
+ );
}
#[test]
diff --git a/components/rendering/src/markdown.rs b/components/rendering/src/markdown.rs
index 96bcba4a..1b877beb 100644
--- a/components/rendering/src/markdown.rs
+++ b/components/rendering/src/markdown.rs
@@ -242,7 +242,18 @@ pub fn markdown_to_html(content: &str, context: &RenderContext) -> Result {
}
impl<'config> CodeBlock<'config> {
- pub fn new(fence_info: &str, config: &'config Config, background: IncludeBackground, path: Option<&'config str>) -> Self {
+ pub fn new(
+ fence_info: &str,
+ config: &'config Config,
+ background: IncludeBackground,
+ path: Option<&'config str>,
+ ) -> Self {
let fence_info = FenceSettings::new(fence_info);
let theme = &THEME_SET.themes[config.highlight_theme()];
let (highlighter, highlight_source) = get_highlighter(fence_info.language, config);
@@ -37,7 +42,7 @@ impl<'config> CodeBlock<'config> {
eprintln!("Warning: Highlight language {} not found", lang);
}
None
- },
+ }
_ => None,
};
Self {
diff --git a/components/site/src/tpls.rs b/components/site/src/tpls.rs
index 2e5295ef..0377695e 100644
--- a/components/site/src/tpls.rs
+++ b/components/site/src/tpls.rs
@@ -50,7 +50,10 @@ pub fn load_tera(path: &Path, config: &Config) -> Result {
/// Adds global fns that are to be available to shortcodes while rendering markdown
pub fn register_early_global_fns(site: &mut Site) {
- site.tera.register_filter("markdown", filters::MarkdownFilter::new(site.config.clone(), site.permalinks.clone()));
+ site.tera.register_filter(
+ "markdown",
+ filters::MarkdownFilter::new(site.config.clone(), site.permalinks.clone()),
+ );
site.tera.register_function(
"get_url",
diff --git a/components/templates/src/filters.rs b/components/templates/src/filters.rs
index 731ecfd2..51ecca47 100644
--- a/components/templates/src/filters.rs
+++ b/components/templates/src/filters.rs
@@ -1,6 +1,6 @@
+use std::borrow::Cow;
use std::collections::HashMap;
use std::hash::BuildHasher;
-use std::borrow::Cow;
use base64::{decode, encode};
use config::Config;
@@ -120,13 +120,14 @@ mod tests {
config.markdown.external_links_target_blank = true;
let md = "Hello :smile: ...";
- let result =
- MarkdownFilter::new(config.clone(), HashMap::new()).filter(&to_value(&md).unwrap(), &HashMap::new());
+ let result = MarkdownFilter::new(config.clone(), HashMap::new())
+ .filter(&to_value(&md).unwrap(), &HashMap::new());
assert!(result.is_ok());
assert_eq!(result.unwrap(), to_value(&"Hello https://google.com 😄 …
\n").unwrap());
let md = "```py\ni=0\n```";
- let result = MarkdownFilter::new(config, HashMap::new()).filter(&to_value(&md).unwrap(), &HashMap::new());
+ let result = MarkdownFilter::new(config, HashMap::new())
+ .filter(&to_value(&md).unwrap(), &HashMap::new());
assert!(result.is_ok());
assert!(result.unwrap().as_str().unwrap().contains("Hello. Check out my blog!
\n").unwrap());
+ assert_eq!(
+ result.unwrap(),
+ to_value(&"Hello. Check out my blog!
\n").unwrap()
+ );
}
#[test]
diff --git a/components/templates/src/global_fns/load_data.rs b/components/templates/src/global_fns/load_data.rs
index 0f74c648..a5b929fa 100644
--- a/components/templates/src/global_fns/load_data.rs
+++ b/components/templates/src/global_fns/load_data.rs
@@ -190,7 +190,15 @@ impl LoadData {
impl TeraFn for LoadData {
fn call(&self, args: &HashMap) -> Result {
- let required = if let Some(req) = optional_arg!(bool, args.get("required"), "`load_data`: `required` must be a boolean (true or false)") { req } else { true };
+ let required = if let Some(req) = optional_arg!(
+ bool,
+ args.get("required"),
+ "`load_data`: `required` must be a boolean (true or false)"
+ ) {
+ req
+ } else {
+ true
+ };
let path_arg = optional_arg!(String, args.get("path"), GET_DATA_ARGUMENT_ERROR_MESSAGE);
let url_arg = optional_arg!(String, args.get("url"), GET_DATA_ARGUMENT_ERROR_MESSAGE);
let data_source = DataSource::from_args(path_arg.clone(), url_arg, &self.base_path)?;
@@ -198,13 +206,19 @@ impl TeraFn for LoadData {
// If the file doesn't exist, source is None
match (&data_source, required) {
// If the file was not required, return a Null value to the template
- (None, false) => { return Ok(Value::Null); },
+ (None, false) => {
+ return Ok(Value::Null);
+ }
// If the file was required, error
(None, true) => {
// source is None only with path_arg (not URL), so path_arg is safely unwrap
- return Err(format!("{} doesn't exist", &self.base_path.join(path_arg.unwrap()).display()).into());
- },
- _ => {},
+ return Err(format!(
+ "{} doesn't exist",
+ &self.base_path.join(path_arg.unwrap()).display()
+ )
+ .into());
+ }
+ _ => {}
}
let data_source = data_source.unwrap();
let file_format = get_output_format_from_args(&args, &data_source)?;
@@ -223,25 +237,26 @@ impl TeraFn for LoadData {
.get(url.as_str())
.header(header::ACCEPT, file_format.as_accept_header())
.send()
- .and_then(|res| res.error_for_status()) {
- Ok(r) => {
- r.text()
- .map_err(|e| format!("Failed to parse response from {}: {:?}", url, e).into())
- },
- Err(e) => {
- if !required {
- // HTTP error is discarded (because required=false) and
- // Null value is returned to the template
- return Ok(Value::Null);
- }
- Err(match e.status() {
- Some(status) => format!("Failed to request {}: {}", url, status),
- None => format!("Could not get response status for url: {}", url),
- }.into())
+ .and_then(|res| res.error_for_status())
+ {
+ Ok(r) => r.text().map_err(|e| {
+ format!("Failed to parse response from {}: {:?}", url, e).into()
+ }),
+ Err(e) => {
+ if !required {
+ // HTTP error is discarded (because required=false) and
+ // Null value is returned to the template
+ return Ok(Value::Null);
}
+ Err(match e.status() {
+ Some(status) => format!("Failed to request {}: {}", url, status),
+ None => format!("Could not get response status for url: {}", url),
+ }
+ .into())
+ }
}
- },
- // Now that we have discarded recoverable errors, we can unwrap the result
+ }
+ // Now that we have discarded recoverable errors, we can unwrap the result
}?;
let result_value: Result = match file_format {
@@ -542,7 +557,6 @@ mod tests {
assert_eq!(result.unwrap(), tera::Value::Null);
}
-
#[test]
fn set_default_user_agent() {
let user_agent = concat!(env!("CARGO_PKG_NAME"), "/", env!("CARGO_PKG_VERSION"));
@@ -693,7 +707,6 @@ mod tests {
}
}
-
#[test]
fn can_load_json() {
let static_fn = LoadData::new(PathBuf::from("../utils/test-files"));