mirror of
https://github.com/getzola/zola
synced 2024-12-13 22:02:29 +00:00
Merge pull request #660 from bdjnk/strip_shortcode_outer_newlines
strip wrapping whitespace from newline outward from shortcodes
This commit is contained in:
commit
5604738048
1 changed files with 19 additions and 0 deletions
|
@ -16,6 +16,7 @@ pub struct ContentParser;
|
|||
|
||||
lazy_static! {
|
||||
static ref MULTIPLE_NEWLINE_RE: Regex = Regex::new(r"\n\s*\n").unwrap();
|
||||
static ref OUTER_NEWLINE_RE: Regex = Regex::new(r"^\s*\n|\n\s*$").unwrap();
|
||||
}
|
||||
|
||||
fn replace_string_markers(input: &str) -> String {
|
||||
|
@ -122,6 +123,8 @@ fn render_shortcode(
|
|||
// at indentation, making the output a code block.
|
||||
let res = MULTIPLE_NEWLINE_RE.replace_all(&res, "\n");
|
||||
|
||||
let res = OUTER_NEWLINE_RE.replace_all(&res, "");
|
||||
|
||||
Ok(res.to_string())
|
||||
}
|
||||
|
||||
|
@ -411,4 +414,20 @@ Some body {{ hello() }}{%/* end */%}"#,
|
|||
let res = render_shortcodes("Body\n {% youtube() %}\nHello \n World{% end %}", &tera);
|
||||
assert_eq!(res, "Body\n Hello \n World");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn outer_newlines_removed_from_shortcodes_with_body() {
|
||||
let mut tera = Tera::default();
|
||||
tera.add_raw_template("shortcodes/youtube.html", " \n {{body}} \n ").unwrap();
|
||||
let res = render_shortcodes("\n{% youtube() %} \n content \n {% end %}\n", &tera);
|
||||
assert_eq!(res, "\n content \n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn outer_newlines_removed_from_inline_shortcodes() {
|
||||
let mut tera = Tera::default();
|
||||
tera.add_raw_template("shortcodes/youtube.html", " \n Hello, Zola. \n ").unwrap();
|
||||
let res = render_shortcodes("\n{{ youtube() }}\n", &tera);
|
||||
assert_eq!(res, "\n Hello, Zola. \n");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue