From f64c97341cedf668c6e7ae7cad818bae6fdb90bd Mon Sep 17 00:00:00 2001 From: Danny van Kooten Date: Fri, 20 Mar 2020 14:48:34 +0100 Subject: add filter: lower --- src/template.c | 21 ++++++++++++++++----- tests/test_template.c | 9 ++++++++- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/template.c b/src/template.c index 1c1945e..9555206 100644 --- a/src/template.c +++ b/src/template.c @@ -4,6 +4,8 @@ #include #include #include +#include + #include "vendor/mpc.h" #include "template.h" @@ -634,16 +636,25 @@ char *render_ast(mpc_ast_t *ast, struct context *ctx) { return buf.string; } -struct unja_object *filter_trim(struct unja_object *in) { - /* TODO: Keep original pointer */ - in->string = trim_leading_whitespace(in->string); - trim_trailing_whitespace(in->string); - return in; +struct unja_object *filter_trim(struct unja_object *obj) { + assert(obj->type == OBJ_STRING); + obj->string = trim_leading_whitespace(obj->string); + trim_trailing_whitespace(obj->string); + return obj; +} + +struct unja_object *filter_lower(struct unja_object *obj) { + assert(obj->type == OBJ_STRING); + for (int i=0; i < strlen(obj->string); i++) { + obj->string[i] = tolower(obj->string[i]); + } + return obj; } struct hashmap *default_filters() { struct hashmap *filters = hashmap_new(); hashmap_insert(filters, "trim", filter_trim); + hashmap_insert(filters, "lower", filter_lower); return filters; } diff --git a/tests/test_template.c b/tests/test_template.c index b0f03ff..51c8fad 100644 --- a/tests/test_template.c +++ b/tests/test_template.c @@ -454,7 +454,7 @@ TEST(inheritance_depth_2) { env_free(env); } -TEST(filter) { +TEST(filter_trim) { char *input = "{{ text | trim }}"; struct hashmap *ctx = hashmap_new(); char *text = "\nHello world\n"; @@ -465,4 +465,11 @@ TEST(filter) { free(output); } +TEST(filter_lower) { + char *input = "{{ \"Hello World\" | lower }}"; + char *output = template_string(input, NULL); + assert_str(output, "hello world"); + free(output); +} + END_TESTS \ No newline at end of file -- cgit v1.2.3