1 use crate::Site;
2 use templates::{filters, global_fns};
3 use tera::Result as TeraResult;
4
5 /// Adds global fns that are to be available to shortcodes while rendering markdown
register_early_global_fns(site: &mut Site) -> TeraResult<()>6 pub fn register_early_global_fns(site: &mut Site) -> TeraResult<()> {
7 site.tera.register_filter(
8 "markdown",
9 filters::MarkdownFilter::new(
10 site.base_path.clone(),
11 site.config.clone(),
12 site.permalinks.clone(),
13 )?,
14 );
15 site.tera.register_filter(
16 "num_format",
17 filters::NumFormatFilter::new(&site.config.default_language),
18 );
19
20 site.tera.register_function(
21 "get_url",
22 global_fns::GetUrl::new(
23 site.base_path.clone(),
24 site.config.clone(),
25 site.permalinks.clone(),
26 site.output_path.clone(),
27 ),
28 );
29 site.tera.register_function(
30 "resize_image",
31 global_fns::ResizeImage::new(
32 site.base_path.clone(),
33 site.imageproc.clone(),
34 site.config.theme.clone(),
35 site.output_path.clone(),
36 ),
37 );
38 site.tera.register_function(
39 "get_image_metadata",
40 global_fns::GetImageMetadata::new(
41 site.base_path.clone(),
42 site.config.theme.clone(),
43 site.output_path.clone(),
44 ),
45 );
46 site.tera.register_function(
47 "load_data",
48 global_fns::LoadData::new(
49 site.base_path.clone(),
50 site.config.theme.clone(),
51 site.output_path.clone(),
52 ),
53 );
54 site.tera.register_function("trans", global_fns::Trans::new(site.config.clone()));
55 site.tera.register_function(
56 "get_taxonomy_url",
57 global_fns::GetTaxonomyUrl::new(
58 &site.config.default_language,
59 &site.taxonomies,
60 site.config.slugify.taxonomies,
61 ),
62 );
63 site.tera.register_function(
64 "get_file_hash",
65 global_fns::GetFileHash::new(
66 site.base_path.clone(),
67 site.config.theme.clone(),
68 site.output_path.clone(),
69 ),
70 );
71
72 Ok(())
73 }
74
75 /// Functions filled once we have parsed all the pages/sections only, so not available in shortcodes
register_tera_global_fns(site: &mut Site)76 pub fn register_tera_global_fns(site: &mut Site) {
77 site.tera.register_function(
78 "get_page",
79 global_fns::GetPage::new(site.base_path.clone(), site.library.clone()),
80 );
81 site.tera.register_function(
82 "get_section",
83 global_fns::GetSection::new(site.base_path.clone(), site.library.clone()),
84 );
85 site.tera.register_function(
86 "get_taxonomy",
87 global_fns::GetTaxonomy::new(
88 &site.config.default_language,
89 site.taxonomies.clone(),
90 site.library.clone(),
91 ),
92 );
93 }
94