From a9d64fe0593050b8fa89611498ee0e3a1e13b808 Mon Sep 17 00:00:00 2001 From: yukkop Date: Sat, 19 Apr 2025 23:04:29 +0000 Subject: [PATCH] feat: `hel`: c89... --- package/c/hel/Makefile | 2 +- package/c/hel/hel.c | 142 ++++++++++++++++++++++++++++------------- package/c/hel/hel.o | Bin 0 -> 49968 bytes package/c/hel/hel.so | Bin 0 -> 46944 bytes 4 files changed, 100 insertions(+), 44 deletions(-) create mode 100644 package/c/hel/hel.o create mode 100755 package/c/hel/hel.so diff --git a/package/c/hel/Makefile b/package/c/hel/Makefile index 47f4bab..7caec42 100644 --- a/package/c/hel/Makefile +++ b/package/c/hel/Makefile @@ -14,4 +14,4 @@ LDFLAGS += $(shell $(HECTIC_CONFIG) --libs) SHLIB_LINK := $(LIBS) PGXS := $(shell $(PG_CONFIG) --pgxs) -include $(PGXS) \ No newline at end of file +include $(PGXS) diff --git a/package/c/hel/hel.c b/package/c/hel/hel.c index 5027234..20ba430 100755 --- a/package/c/hel/hel.c +++ b/package/c/hel/hel.c @@ -11,13 +11,18 @@ PG_MODULE_MAGIC; /* Helper function to get a JSON value by key path */ static Json *json_get_by_path(Arena *arena, const Json *context, const char *key_path) { + + char *path_copy; + char *token; + Json *current; + if (!context || !key_path || !*key_path) { return NULL; } - - char *path_copy = arena_strdup(arena, key_path); - char *token = strtok(path_copy, "."); - Json *current = (Json*)context; + + path_copy = arena_strdup(arena, key_path); + token = strtok(path_copy, "."); + current = (Json*)context; while (token && current) { current = json_get_object_item(current, token); @@ -67,12 +72,15 @@ static char *render_text_node(Arena *arena, const TemplateNode *node) { /* Render an interpolation node */ static char *render_interpolation_node(Arena *arena, const TemplateNode *node, const Json *context) { + const char *key; + Json *value; + if (!node || node->type != TEMPLATE_NODE_INTERPOLATE || !context) { return ""; } - - const char *key = node->value.interpolate.key; - Json *value = json_get_by_path(arena, context, key); + + key = node->value.interpolate.key; + value = json_get_by_path(arena, context, key); if (!value) { return ""; @@ -83,40 +91,60 @@ static char *render_interpolation_node(Arena *arena, const TemplateNode *node, c /* Render a section node (for loop) */ static char *render_section_node(Arena *arena, const TemplateNode *node, const Json *context) { + const char *collection_key; + const char *iterator_name; + TemplateNode *body; + + Json *collection; + + size_t buffer_size; + char *buffer; + size_t buffer_pos; + + Json *item; + + const char *empty_json; + Json *iter_context; + + Json *item_json; + + char *rendered_body; + size_t rendered_len; + if (!node || node->type != TEMPLATE_NODE_SECTION || !context) { return ""; } - const char *collection_key = node->value.section.collection; - const char *iterator_name = node->value.section.iterator; - TemplateNode *body = node->value.section.body; + collection_key = node->value.section.collection; + iterator_name = node->value.section.iterator; + body = node->value.section.body; - Json *collection = json_get_by_path(arena, context, collection_key); + collection = json_get_by_path(arena, context, collection_key); if (!collection || collection->type != JSON_ARRAY) { return ""; } - size_t buffer_size = 1024; - char *buffer = arena_alloc(arena, buffer_size); - size_t buffer_pos = 0; + buffer_size = 1024; + buffer = arena_alloc(arena, buffer_size); + buffer_pos = 0; - Json *item = collection->value.child; + item = collection->value.child; while (item) { - const char *empty_json = "{}"; - Json *iter_context = json_parse(arena, &empty_json); + empty_json = "{}"; + iter_context = json_parse(arena, &empty_json); if (!iter_context) { return ""; } - Json *item_json = arena_alloc(arena, sizeof(Json)); + item_json = arena_alloc(arena, sizeof(Json)); memcpy(item_json, item, sizeof(Json)); item_json->key = arena_strdup(arena, iterator_name); item_json->next = NULL; - char *rendered_body = render_template_node(arena, body, iter_context); + rendered_body = render_template_node(arena, body, iter_context); - size_t rendered_len = strlen(rendered_body); + rendered_len = strlen(rendered_body); if (buffer_pos + rendered_len + 1 > buffer_size) { buffer_size = (buffer_pos + rendered_len + 1) * 2; buffer = arena_realloc(arena, buffer, buffer_size / 2, buffer_size); @@ -134,26 +162,38 @@ static char *render_section_node(Arena *arena, const TemplateNode *node, const J /* Render an include node */ static char *render_include_node(Arena *arena, const TemplateNode *node, const Json *context) { + + const char *include_key; + Json *include_value; + + char *buffer; + size_t buffer_pos; + + Json *include_item; + Json *template_json; + Json *content_json; + Json *context_json; + if (!node || node->type != TEMPLATE_NODE_INCLUDE || !context) { return ""; } - - const char *include_key = node->value.include.key; - Json *include_value = json_get_by_path(arena, context, include_key); - + include_key = node->value.include.key; + include_value = json_get_by_path(arena, context, include_key); + if (!include_value || include_value->type != JSON_ARRAY) { return ""; } + + buffer = arena_alloc(arena, 1024); + buffer_pos = 0; - char *buffer = arena_alloc(arena, 1024); - size_t buffer_pos = 0; - Json *include_item = include_value->value.child; + include_item = include_value->value.child; while (include_item) { if (include_item->type == JSON_OBJECT) { - Json *template_json = json_get_object_item(include_item, "template"); - Json *content_json = json_get_object_item(include_item, "content"); - Json *context_json = json_get_object_item(include_item, "context"); + template_json = json_get_object_item(include_item, "template"); + content_json = json_get_object_item(include_item, "content"); + context_json = json_get_object_item(include_item, "context"); if (template_json && template_json->type == JSON_STRING) { const char *template_str = template_json->value.string; @@ -183,17 +223,22 @@ static char *render_include_node(Arena *arena, const TemplateNode *node, const J /* Render a template node tree recursively */ static char *render_template_node(Arena *arena, const TemplateNode *node, const Json *context) { - if (!node) { - return ""; - } size_t buffer_size = 4096; char *output = arena_alloc(arena, buffer_size); size_t output_pos = 0; + size_t rendered_len; + const TemplateNode *current; + char *rendered; + + if (!node) { + return ""; + } + + current = node; - const TemplateNode *current = node; while (current) { - char *rendered = NULL; + rendered = NULL; switch (current->type) { case TEMPLATE_NODE_TEXT: @@ -222,7 +267,7 @@ static char *render_template_node(Arena *arena, const TemplateNode *node, const break; } - size_t rendered_len = strlen(rendered); + rendered_len = strlen(rendered); if (output_pos + rendered_len + 1 > buffer_size) { buffer_size = (output_pos + rendered_len + 1) * 2; output = arena_realloc(arena, output, buffer_size / 2, buffer_size); @@ -271,10 +316,21 @@ Datum render(PG_FUNCTION_ARGS) /* Initialize arena for memory management */ Arena arena = arena_init(MEM_MiB); + + TemplateNode root_node; + TemplateResult template_result; + TemplateConfig config; + + Json *context; + + const char *template_ptr; + + char *result_str; + text *result; /* Parse the JSON context */ const char *json_ptr = context_str; - Json *context = json_parse(&arena, &json_ptr); + context = json_parse(&arena, &json_ptr); if (!context) { arena_free(&arena); @@ -283,9 +339,9 @@ Datum render(PG_FUNCTION_ARGS) } /* Parse the template text */ - const char *template_ptr = template_str; - TemplateConfig config = template_default_config(); - TemplateResult template_result = template_parse(&arena, &template_ptr, &config); + template_ptr = template_str; + config = template_default_config(); + template_result = template_parse(&arena, &template_ptr, &config); if (IS_RESULT_ERROR(template_result)) { arena_free(&arena); @@ -295,11 +351,11 @@ Datum render(PG_FUNCTION_ARGS) } /* Render the template */ - TemplateNode root_node = RESULT_SOME_VALUE(template_result); - char *result_str = render_template_node(&arena, &root_node, context); + root_node = RESULT_SOME_VALUE(template_result); + result_str = render_template_node(&arena, &root_node, context); /* Prepare return value */ - text *result = cstring_to_text(result_str); + result = cstring_to_text(result_str); arena_free(&arena); diff --git a/package/c/hel/hel.o b/package/c/hel/hel.o new file mode 100644 index 0000000000000000000000000000000000000000..c0f5d5b0e538cdf1fb9958adb9cf7b0890f97ed3 GIT binary patch literal 49968 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 w=df?w>&t z12MsNff!H>y4Mw3_#fB~Q2@G|55xlb7nCGn_JjB!aZtMiY$i+sB*?(PZ~6ATvSt#(~^#0FwX- zg7!5++i`QyGCWKfNDoLUXk8wNjjn$MbO3ECND`zFiqZ9-f%+d7&QN6xwxG+_7#J9! z%{!Pdtone{SE2gh3ZRStsD3CHPN6x6;VA*=b;%6vJb8ZbS@ES4iQ-Z%FfsgVX&iVK;tq10211b%7 literal 0 HcmV?d00001 diff --git a/package/c/hel/hel.so b/package/c/hel/hel.so new file mode 100755 index 0000000000000000000000000000000000000000..492d518d2f82ee7ce8d97b1bb4957a99182cf5dd GIT binary patch literal 46944 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

R8b~iFLegzmIVZC6fE>Y=&MFH^ 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