diff --git a/CHANGELOG.md b/CHANGELOG.md index 0acbf805..cd0c1c96 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## 0.3.1 (unreleased) - Update Tera to fix regression +- Add option for inline in markdown filter ## 0.3.0 (2018-01-25) diff --git a/components/site/benches/gen.py b/components/site/benches/gen.py index cc9c4e9b..c5b0420c 100644 --- a/components/site/benches/gen.py +++ b/components/site/benches/gen.py @@ -14,7 +14,7 @@ CATEGORIES = ["c1", "c2", "c3", "c4"] PAGE = """ +++ title = "Hello" -date = "REPLACE_DATE" +date = REPLACE_DATE tags = REPLACE_TAG category = "REPLACE_CATEGORY" +++ @@ -105,6 +105,7 @@ title = "My site" base_url = "https://replace-this-with-your-url.com" generate_tags_pages = true generate_categories_pages = true +theme = "sample" [extra.author] name = "Vincent Prouillet" @@ -113,14 +114,15 @@ name = "Vincent Prouillet" f.write(""" title = "My site" base_url = "https://replace-this-with-your-url.com" +theme = "sample" [extra.author] name = "Vincent Prouillet" """) - # Re-use the test templates shutil.copytree("../test_site/templates", os.path.join(name, "templates")) + shutil.copytree("../test_site/themes", os.path.join(name, "themes")) def gen_section(path, num_pages, is_blog): diff --git a/components/site/benches/load.rs b/components/site/benches/load.rs index 48ec3329..2d6a9064 100644 --- a/components/site/benches/load.rs +++ b/components/site/benches/load.rs @@ -30,47 +30,47 @@ fn bench_loading_small_blog_with_syntax_highlighting(b: &mut test::Bencher) { b.iter(|| site.load().unwrap()); } -#[bench] -fn bench_loading_medium_blog(b: &mut test::Bencher) { - let mut path = env::current_dir().unwrap().to_path_buf(); - path.push("benches"); - path.push("medium-blog"); - let mut site = Site::new(&path, "config.toml").unwrap(); - - b.iter(|| site.load().unwrap()); -} - -#[bench] -fn bench_loading_medium_blog_with_syntax_highlighting(b: &mut test::Bencher) { - let mut path = env::current_dir().unwrap().to_path_buf(); - path.push("benches"); - path.push("medium-blog"); - let mut site = Site::new(&path, "config.toml").unwrap(); - site.config.highlight_code = Some(true); - - b.iter(|| site.load().unwrap()); -} - -#[bench] -fn bench_loading_big_blog(b: &mut test::Bencher) { - let mut path = env::current_dir().unwrap().to_path_buf(); - path.push("benches"); - path.push("big-blog"); - let mut site = Site::new(&path, "config.toml").unwrap(); - - b.iter(|| site.load().unwrap()); -} - -#[bench] -fn bench_loading_big_blog_with_syntax_highlighting(b: &mut test::Bencher) { - let mut path = env::current_dir().unwrap().to_path_buf(); - path.push("benches"); - path.push("big-blog"); - let mut site = Site::new(&path, "config.toml").unwrap(); - site.config.highlight_code = Some(true); - - b.iter(|| site.load().unwrap()); -} +//#[bench] +//fn bench_loading_medium_blog(b: &mut test::Bencher) { +// let mut path = env::current_dir().unwrap().to_path_buf(); +// path.push("benches"); +// path.push("medium-blog"); +// let mut site = Site::new(&path, "config.toml").unwrap(); +// +// b.iter(|| site.load().unwrap()); +//} +// +//#[bench] +//fn bench_loading_medium_blog_with_syntax_highlighting(b: &mut test::Bencher) { +// let mut path = env::current_dir().unwrap().to_path_buf(); +// path.push("benches"); +// path.push("medium-blog"); +// let mut site = Site::new(&path, "config.toml").unwrap(); +// site.config.highlight_code = Some(true); +// +// b.iter(|| site.load().unwrap()); +//} +// +//#[bench] +//fn bench_loading_big_blog(b: &mut test::Bencher) { +// let mut path = env::current_dir().unwrap().to_path_buf(); +// path.push("benches"); +// path.push("big-blog"); +// let mut site = Site::new(&path, "config.toml").unwrap(); +// +// b.iter(|| site.load().unwrap()); +//} +// +//#[bench] +//fn bench_loading_big_blog_with_syntax_highlighting(b: &mut test::Bencher) { +// let mut path = env::current_dir().unwrap().to_path_buf(); +// path.push("benches"); +// path.push("big-blog"); +// let mut site = Site::new(&path, "config.toml").unwrap(); +// site.config.highlight_code = Some(true); +// +// b.iter(|| site.load().unwrap()); +//} //#[bench] //fn bench_loading_huge_blog(b: &mut test::Bencher) { @@ -114,26 +114,26 @@ fn bench_loading_small_kb_with_syntax_highlighting(b: &mut test::Bencher) { b.iter(|| site.load().unwrap()); } -#[bench] -fn bench_loading_medium_kb(b: &mut test::Bencher) { - let mut path = env::current_dir().unwrap().to_path_buf(); - path.push("benches"); - path.push("medium-kb"); - let mut site = Site::new(&path, "config.toml").unwrap(); - - b.iter(|| site.load().unwrap()); -} - -#[bench] -fn bench_loading_medium_kb_with_syntax_highlighting(b: &mut test::Bencher) { - let mut path = env::current_dir().unwrap().to_path_buf(); - path.push("benches"); - path.push("medium-kb"); - let mut site = Site::new(&path, "config.toml").unwrap(); - site.config.highlight_code = Some(true); - - b.iter(|| site.load().unwrap()); -} +//#[bench] +//fn bench_loading_medium_kb(b: &mut test::Bencher) { +// let mut path = env::current_dir().unwrap().to_path_buf(); +// path.push("benches"); +// path.push("medium-kb"); +// let mut site = Site::new(&path, "config.toml").unwrap(); +// +// b.iter(|| site.load().unwrap()); +//} +// +//#[bench] +//fn bench_loading_medium_kb_with_syntax_highlighting(b: &mut test::Bencher) { +// let mut path = env::current_dir().unwrap().to_path_buf(); +// path.push("benches"); +// path.push("medium-kb"); +// let mut site = Site::new(&path, "config.toml").unwrap(); +// site.config.highlight_code = Some(true); +// +// b.iter(|| site.load().unwrap()); +//} //#[bench] //fn bench_loading_huge_kb(b: &mut test::Bencher) { diff --git a/components/templates/src/filters.rs b/components/templates/src/filters.rs index 40f2f7c3..a9a356d5 100644 --- a/components/templates/src/filters.rs +++ b/components/templates/src/filters.rs @@ -5,13 +5,25 @@ use pulldown_cmark as cmark; use tera::{Value, to_value, Result as TeraResult}; -pub fn markdown(value: Value, _: 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), + None => false, + }; let mut html = String::new(); let parser = cmark::Parser::new(&s); cmark::html::push_html(&mut html, parser); + if inline { + html = html + .trim_left_matches("

") + // pulldown_cmark finishes a paragraph with `

\n` + .trim_right_matches("

\n") + .to_string(); + } + Ok(to_value(&html).unwrap()) } @@ -50,6 +62,15 @@ mod tests { assert_eq!(result.unwrap(), to_value(&"

Hey

\n").unwrap()); } + #[test] + fn markdown_filter_inline() { + 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); + assert!(result.is_ok()); + assert_eq!(result.unwrap(), to_value(&"Using map, filter, and fold instead of for").unwrap()); + } + #[test] fn base64_encode_filter() { // from https://tools.ietf.org/html/rfc4648#section-10 diff --git a/docs/content/documentation/templates/overview.md b/docs/content/documentation/templates/overview.md index 7782fdd1..1d67e943 100644 --- a/docs/content/documentation/templates/overview.md +++ b/docs/content/documentation/templates/overview.md @@ -30,6 +30,13 @@ Gutenberg adds a few filters, in addition of the ones already present in Tera. Converts the given variable to HTML using Markdown. This doesn't apply any of the features that Gutenberg adds to Markdown: internal links, shortcodes etc won't work. +By default, the filter will wrap all text into a paragraph. To disable that, you can +pass `true` to the inline argument: + +```jinja2 +{{ some_text | markdown(inline=true) }} +``` + ### base64_encode Encode the variable to base64.