A static site generator, written in C
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

cms_template.c 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #include "cms_template.h"
  2. cms_template_args* cms_template_args_create()
  3. {
  4. cms_template_args* args = malloc(sizeof(cms_template_args));
  5. if (!args)
  6. return NULL;
  7. args->argument = NULL;
  8. args->argnum = 0;
  9. args->allocd = 0;
  10. return args;
  11. }
  12. cms_err* cms_template_args_append(cms_template_args* args, char* key, char* val)
  13. {
  14. args->argnum += 1;
  15. if (args->argnum > args->allocd)
  16. {
  17. args->allocd *= 2;
  18. args->arguments = realloc(args->arguments, sizeof(cms_template_arg) * args->allocd);
  19. if (!args->arguments)
  20. return cms_err_create(CMS_ERR_ALLOC, NULL);
  21. }
  22. args->argumens[args->argnum - 1] = {key, val};
  23. return cms_err_create(CMS_ERR_NONE, NULL);
  24. }
  25. static cms_err* str_insert(char* str1, char* str2, size_t start, size_t end, size_t len)
  26. {
  27. size_t len2 = strlen(str2);
  28. }
  29. static cms_err* templatify_arg(char* str, cms_template_arg arg, len)
  30. {
  31. #define OFFSET i - match_begin
  32. size_t match_begin;
  33. size_t i = 0;
  34. char c;
  35. while ((c = str[i]) != NULL)
  36. {
  37. if (match_begin == NULL && arg.key[0] == c)
  38. {
  39. match_begin = i;
  40. }
  41. if (match_begin != NULL && arg.key[OFFSET] == NULL)
  42. {
  43. match_end = i;
  44. }
  45. i += 1;
  46. }
  47. #undef OFFSET
  48. }
  49. cms_err* cms_templateify(char* str, cms_template_args* args)
  50. {
  51. size_t len = strlen(str);
  52. size_t i;
  53. for (i = 0; i < args->argnum; ++i)
  54. {
  55. cms_err* err = templatify_arg(str, args->arguments[i], len);
  56. if (err)
  57. return err;
  58. }
  59. return cms_err_create(CMS_ERR_NONE, NULL);
  60. }