From a42410b6e74fed71b903ee8183ccc3949092b59e Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Fri, 19 Jul 2024 09:07:41 +0200 Subject: [PATCH] add ae to umlaut --- src/rename.c | 8 ++++++++ src/rename.h | 3 +++ tests/rename_tests.c | 22 ++++++++++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/src/rename.c b/src/rename.c index e922379..02af6c0 100644 --- a/src/rename.c +++ b/src/rename.c @@ -108,6 +108,14 @@ void rename_revert_str(char* src, char* dst) for (int i = 0;i < len; i++) { if (src[i] == '_') { dst[dstcounter++] = SPACE; + } else if (src[i] == 'a' && src[i + 1] == 'e') { + i++; + dst[dstcounter++] = WIDE_CHAR_SHORT_PREFIX; + dst[dstcounter++] = WIDE_CHAR_SHORT_a; + } else if (src[i] == 'A' && src[i + 1] == 'e') { + i++; + dst[dstcounter++] = WIDE_CHAR_SHORT_PREFIX; + dst[dstcounter++] = WIDE_CHAR_SHORT_A; } else { dst[dstcounter++] = src[i]; } diff --git a/src/rename.h b/src/rename.h index a75afff..9eab3b0 100644 --- a/src/rename.h +++ b/src/rename.h @@ -21,6 +21,9 @@ #define WIDE_CHAR_u 0xffffffbc #define WIDE_CHAR_U 0xffffff9c #define WIDE_CHAR_SS 0xffffff9f +#define WIDE_CHAR_SHORT_PREFIX 0xc3 +#define WIDE_CHAR_SHORT_a 0xa4 +#define WIDE_CHAR_SHORT_A 0x84 typedef void (*rename_func_ptr)(char* src, char* dst); void escape_str(char* src, char* dst); diff --git a/tests/rename_tests.c b/tests/rename_tests.c index 53ccaed..5caa2ab 100644 --- a/tests/rename_tests.c +++ b/tests/rename_tests.c @@ -147,6 +147,26 @@ void rename_revert_spaces(void **state) assert_string_equal(output, "Dies ist ein Test Satz"); } +void rename_revert_ae(void **state) +{ + char* output = (char*) *state; + char* input = "waere"; + + rename_revert_str(input, output); + + assert_string_equal(output, "wäre"); +} + +void rename_revert_Ae(void **state) +{ + char* output = (char*) *state; + char* input = "Aechtzen"; + + rename_revert_str(input, output); + + assert_string_equal(output, "Ächtzen"); +} + int main() { const struct CMUnitTest tests[] = { @@ -162,6 +182,8 @@ int main() cmocka_unit_test_setup_teardown(rename_point_case, setup, teardown), cmocka_unit_test_setup_teardown(escape_str_test, setup, teardown), cmocka_unit_test_setup_teardown(rename_revert_spaces, setup, teardown), + cmocka_unit_test_setup_teardown(rename_revert_ae, setup, teardown), + cmocka_unit_test_setup_teardown(rename_revert_Ae, setup, teardown), }; return cmocka_run_group_tests(tests, NULL, NULL); -- 2.39.5