You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
2.1KB

  1. pub mod filters;
  2. pub mod global_fns;
  3. use lazy_static::lazy_static;
  4. use tera::{Context, Tera};
  5. use errors::{Error, Result};
  6. lazy_static! {
  7. pub static ref ZOLA_TERA: Tera = {
  8. let mut tera = Tera::default();
  9. tera.add_raw_templates(vec![
  10. ("__zola_builtins/404.html", include_str!("builtins/404.html")),
  11. ("__zola_builtins/rss.xml", include_str!("builtins/rss.xml")),
  12. ("__zola_builtins/sitemap.xml", include_str!("builtins/sitemap.xml")),
  13. ("__zola_builtins/robots.txt", include_str!("builtins/robots.txt")),
  14. (
  15. "__zola_builtins/split_sitemap_index.xml",
  16. include_str!("builtins/split_sitemap_index.xml"),
  17. ),
  18. ("__zola_builtins/anchor-link.html", include_str!("builtins/anchor-link.html")),
  19. (
  20. "__zola_builtins/shortcodes/youtube.html",
  21. include_str!("builtins/shortcodes/youtube.html"),
  22. ),
  23. (
  24. "__zola_builtins/shortcodes/vimeo.html",
  25. include_str!("builtins/shortcodes/vimeo.html"),
  26. ),
  27. ("__zola_builtins/shortcodes/gist.html", include_str!("builtins/shortcodes/gist.html")),
  28. (
  29. "__zola_builtins/shortcodes/streamable.html",
  30. include_str!("builtins/shortcodes/streamable.html"),
  31. ),
  32. ("internal/alias.html", include_str!("builtins/internal/alias.html")),
  33. ])
  34. .unwrap();
  35. tera.register_filter("markdown", filters::markdown);
  36. tera.register_filter("base64_encode", filters::base64_encode);
  37. tera.register_filter("base64_decode", filters::base64_decode);
  38. tera
  39. };
  40. }
  41. /// Renders the `internal/alias.html` template that will redirect
  42. /// via refresh to the url given
  43. pub fn render_redirect_template(url: &str, tera: &Tera) -> Result<String> {
  44. let mut context = Context::new();
  45. context.insert("url", &url);
  46. tera.render("internal/alias.html", &context)
  47. .map_err(|e| Error::chain(format!("Failed to render alias for '{}'", url), e))
  48. }