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