ajwillia-ms pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=2935b0b4a36988b428f5be27482ae9264b8d746b
commit 2935b0b4a36988b428f5be27482ae9264b8d746b Author: Andy Williams <[email protected]> Date: Wed Nov 30 00:11:15 2016 +0000 elm_code: Add really simple indentation for braces handling That's about as far as we can push it without proper scope handling --- src/lib/elementary/elm_code_indent.c | 17 ++++++++++++++++- src/tests/elementary/elm_code_test_indent.c | 17 +++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/lib/elementary/elm_code_indent.c b/src/lib/elementary/elm_code_indent.c index 0ff9fd0..7b3d8b1 100644 --- a/src/lib/elementary/elm_code_indent.c +++ b/src/lib/elementary/elm_code_indent.c @@ -11,7 +11,7 @@ elm_code_line_indent_get(const char *prevtext, unsigned int prevlength) { unsigned int count = 0; char *buf, *ptr = (char *)prevtext; - char next; + char next, last; buf = malloc((prevlength + 3) * sizeof(char)); while (count < prevlength) @@ -28,6 +28,9 @@ elm_code_line_indent_get(const char *prevtext, unsigned int prevlength) if (count < prevlength) { next = *ptr; + last = prevtext[prevlength - 1]; + + // comment handling // TODO this should all be based on comment SCOPE not text matching if (next == '/') { @@ -51,6 +54,18 @@ elm_code_line_indent_get(const char *prevtext, unsigned int prevlength) else strcpy(buf + count, "*"); } + // VERY simple handling of braces + else if (last == '{') + { + strcpy(buf + count, " "); + } + else if (last == '}') + { + if (count >= 2) + buf[count-2] = '\0'; + else if (count >= 1) + buf[count-1] = '\0'; + } } return buf; } diff --git a/src/tests/elementary/elm_code_test_indent.c b/src/tests/elementary/elm_code_test_indent.c index beed282..38ee360 100644 --- a/src/tests/elementary/elm_code_test_indent.c +++ b/src/tests/elementary/elm_code_test_indent.c @@ -44,8 +44,25 @@ START_TEST (elm_code_indent_comments_test) } END_TEST +START_TEST (elm_code_indent_simple_braces) +{ + const char *str; + + str = elm_code_line_indent_get("if() {", 6); + ck_assert_str_eq(" ", str); + str = elm_code_line_indent_get("}", 1); + ck_assert_str_eq("", str); + + str = elm_code_line_indent_get(" {", 3); + ck_assert_str_eq(" ", str); + str = elm_code_line_indent_get(" }", 3); + ck_assert_str_eq("", str); +} +END_TEST + void elm_code_test_indent(TCase *tc) { tcase_add_test(tc, elm_code_indent_whitespace_test); tcase_add_test(tc, elm_code_indent_comments_test); + tcase_add_test(tc, elm_code_indent_simple_braces); } --
