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.

41 lines
1.5KB

  1. use tera::{Tera, Context};
  2. use errors::{Result, ResultExt};
  3. pub mod filters;
  4. pub mod global_fns;
  5. lazy_static! {
  6. pub static ref GUTENBERG_TERA: Tera = {
  7. let mut tera = Tera::default();
  8. tera.add_raw_templates(vec![
  9. ("rss.xml", include_str!("builtins/rss.xml")),
  10. ("sitemap.xml", include_str!("builtins/sitemap.xml")),
  11. ("robots.txt", include_str!("builtins/robots.txt")),
  12. ("anchor-link.html", include_str!("builtins/anchor-link.html")),
  13. ("shortcodes/youtube.html", include_str!("builtins/shortcodes/youtube.html")),
  14. ("shortcodes/vimeo.html", include_str!("builtins/shortcodes/vimeo.html")),
  15. ("shortcodes/gist.html", include_str!("builtins/shortcodes/gist.html")),
  16. ("shortcodes/streamable.html", include_str!("builtins/shortcodes/streamable.html")),
  17. ("internal/alias.html", include_str!("builtins/internal/alias.html")),
  18. ]).unwrap();
  19. tera.register_filter("markdown", filters::markdown);
  20. tera.register_filter("base64_encode", filters::base64_encode);
  21. tera.register_filter("base64_decode", filters::base64_decode);
  22. tera
  23. };
  24. }
  25. /// Renders the `internal/alias.html` template that will redirect
  26. /// via refresh to the url given
  27. pub fn render_redirect_template(url: &str, tera: &Tera) -> Result<String> {
  28. let mut context = Context::new();
  29. context.add("url", &url);
  30. tera.render("internal/alias.html", &context)
  31. .chain_err(|| format!("Failed to render alias for '{}'", url))
  32. }