use tera::Tera;
use tera_contrib::{
dates::{date, is_after, is_before, now},
filesize_format::filesize_format,
json::json_encode,
rand::{get_random, shuffle},
regex::{Matching, RegexReplace, spaceless, striptags},
slug::slug,
urlencode::{urlencode, urlencode_strict},
};
pub(crate) fn register_contrib(tera: &mut Tera) {
tera.register_filter("urlencode", urlencode);
tera.register_filter("urlencode_strict", urlencode_strict);
tera.register_filter("date", date);
tera.register_filter("json_encode", json_encode);
tera.register_filter("striptags", striptags);
tera.register_filter("spaceless", spaceless);
tera.register_filter("regex_replace", RegexReplace::default());
tera.register_filter("slug", slug);
tera.register_filter("slugify", slug);
tera.register_filter("filesize_format", filesize_format);
tera.register_filter("filesizeformat", filesize_format);
tera.register_function("now", now);
tera.register_function("get_random", get_random);
tera.register_filter("shuffle", shuffle);
tera.register_test("before", is_before);
tera.register_test("after", is_after);
tera.register_test("matching", Matching::default());
}