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.

59 lines
2.1KB

  1. #[macro_use]
  2. extern crate lazy_static;
  3. #[macro_use]
  4. extern crate tera;
  5. extern crate base64;
  6. extern crate pulldown_cmark;
  7. extern crate errors;
  8. extern crate utils;
  9. extern crate content;
  10. extern crate config;
  11. pub mod filters;
  12. pub mod global_fns;
  13. use tera::{Tera, Context};
  14. use errors::{Result, ResultExt};
  15. lazy_static! {
  16. pub static ref GUTENBERG_TERA: Tera = {
  17. let mut tera = Tera::default();
  18. tera.add_raw_templates(vec![
  19. // adding default built-ins templates for index/page/section so
  20. // users don't get an error when they run gutenberg after init
  21. ("index.html", include_str!("builtins/index.html")),
  22. ("page.html", include_str!("builtins/page.html")),
  23. ("section.html", include_str!("builtins/section.html")),
  24. ("rss.xml", include_str!("builtins/rss.xml")),
  25. ("sitemap.xml", include_str!("builtins/sitemap.xml")),
  26. ("robots.txt", include_str!("builtins/robots.txt")),
  27. ("anchor-link.html", include_str!("builtins/anchor-link.html")),
  28. ("shortcodes/youtube.html", include_str!("builtins/shortcodes/youtube.html")),
  29. ("shortcodes/vimeo.html", include_str!("builtins/shortcodes/vimeo.html")),
  30. ("shortcodes/gist.html", include_str!("builtins/shortcodes/gist.html")),
  31. ("shortcodes/streamable.html", include_str!("builtins/shortcodes/streamable.html")),
  32. ("internal/alias.html", include_str!("builtins/internal/alias.html")),
  33. ]).unwrap();
  34. tera.register_filter("markdown", filters::markdown);
  35. tera.register_filter("base64_encode", filters::base64_encode);
  36. tera.register_filter("base64_decode", filters::base64_decode);
  37. tera
  38. };
  39. }
  40. /// Renders the `internal/alias.html` template that will redirect
  41. /// via refresh to the url given
  42. pub fn render_redirect_template(url: &str, tera: &Tera) -> Result<String> {
  43. let mut context = Context::new();
  44. context.add("url", &url);
  45. tera.render("internal/alias.html", &context)
  46. .chain_err(|| format!("Failed to render alias for '{}'", url))
  47. }