commit
54841b19bb
|
@ -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)
|
||||
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -5,13 +5,25 @@ use pulldown_cmark as cmark;
|
|||
use tera::{Value, to_value, Result as TeraResult};
|
||||
|
||||
|
||||
pub fn markdown(value: Value, _: HashMap<String, Value>) -> TeraResult<Value> {
|
||||
pub fn markdown(value: Value, args: HashMap<String, Value>) -> TeraResult<Value> {
|
||||
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("<p>")
|
||||
// pulldown_cmark finishes a paragraph with `</p>\n`
|
||||
.trim_right_matches("</p>\n")
|
||||
.to_string();
|
||||
}
|
||||
|
||||
Ok(to_value(&html).unwrap())
|
||||
}
|
||||
|
||||
|
@ -50,6 +62,15 @@ mod tests {
|
|||
assert_eq!(result.unwrap(), to_value(&"<h1>Hey</h1>\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 <code>map</code>, <code>filter</code>, and <code>fold</code> instead of <code>for</code>").unwrap());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn base64_encode_filter() {
|
||||
// from https://tools.ietf.org/html/rfc4648#section-10
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
Loading…
Reference in a new issue