hermet pushed a commit to branch master. http://git.enlightenment.org/tools/enventor.git/commit/?id=f0ab0ec9a9c16ab186a0b2cdac9ea89f253c263a
commit f0ab0ec9a9c16ab186a0b2cdac9ea89f253c263a Author: Taehyub Kim <taehyub....@samsung.com> Date: Fri Aug 19 12:56:21 2016 +0900 edc_parser: move the functions in utils which are find_part and find_group to the edc_parser Summary: move hte functions in utils which are find_part and find_group to the edc_parser since it is right way Test Plan: 1. launch enventor 2. move cursor on part name in text view 3. press F3 key 4. check it works well Reviewers: Jaehyun_Cho, NikaWhite, bowonryu, Hermet Reviewed By: Hermet Differential Revision: https://phab.enlightenment.org/D4240 --- src/lib/edc_editor.c | 13 +++-- src/lib/edc_parser.c | 136 +++++++++++++++++++++++++++++++++++++++++++++ src/lib/enventor_private.h | 43 +++++++------- src/lib/util.c | 136 +-------------------------------------------- 4 files changed, 166 insertions(+), 162 deletions(-) diff --git a/src/lib/edc_editor.c b/src/lib/edc_editor.c index ecb63ad..2715caa 100644 --- a/src/lib/edc_editor.c +++ b/src/lib/edc_editor.c @@ -1946,15 +1946,16 @@ goto_part_name(edit_data *ed, const char *part_name) //Find part name in current group const char *part_type = - part_type_get(view_part_type_get(edj_mgr_view_get(NULL), part_name)); + part_type_str_convert(view_part_type_get(edj_mgr_view_get(NULL), + part_name)); if (!part_type) goto end; const char *start_pos = - find_part_proc_internal(utf8, - (utf8 + strlen(utf8)), - group_name, - part_name, - part_type); + parser_part_pos_get(utf8, + (utf8 + strlen(utf8)), + group_name, + part_name, + part_type); if (!start_pos) goto end; //Select part name diff --git a/src/lib/edc_parser.c b/src/lib/edc_parser.c index 17fb5a1..67368a7 100644 --- a/src/lib/edc_parser.c +++ b/src/lib/edc_parser.c @@ -2161,3 +2161,139 @@ end: return group_list; } + +char* +parser_group_pos_get(char *utf8, char *utf8_end, + const char *group_name) +{ + char *p = utf8; + char *result = NULL; + + int group_name_len = strlen(group_name); + + //Find group + while (utf8_end > p) + { + //Skip " ~ " Section + if (*p == '\"') + { + ESCAPE_RET_NULL(); + } + + if (!strncmp("group", p, strlen("group"))) + { + p = strstr((p + 5), "\""); + if (!p) return NULL; + p++; + if (!strncmp(group_name, p, group_name_len)) + { + //Compare Elaborately + char *next_quote = strstr(p, "\""); + if (group_name_len == (next_quote - p)) + { + result = p; + break; + } + else + { + ESCAPE_RET_NULL(); + } + } + else + { + ESCAPE_RET_NULL(); + } + } + p++; + } + + return result; +} + +char* +parser_part_pos_get(char *utf8, char *utf8_end, + const char* group_name, + const char *part_name, const char *part_type) +{ + char *p = parser_group_pos_get(utf8, utf8_end, group_name); + + //No found + if (!p) return NULL; + + p = strstr(p, "\""); + if (!p) return NULL; + p++; + + char *result = NULL; + + //goto parts + p = strstr(p, "parts"); + if (!p) return NULL; + + int part_name_len = strlen(part_name); + + //Find part + while (utf8_end > p) + { + //Skip " ~ " Section + if (*p == '\"') + { + ESCAPE_RET_NULL(); + } + + if (!strncmp(part_type, p, strlen(part_type))) + { + p = strstr((p + strlen(part_type)), "\""); + if (!p) return NULL; + p++; + if (!strncmp(part_name, p, part_name_len)) + { + //Compare Elaborately + char *next_quote = strstr(p, "\""); + if (part_name_len == (next_quote - p)) + { + result = p; + break; + } + else + { + ESCAPE_RET_NULL(); + } + } + else + { + ESCAPE_RET_NULL(); + } + } + + //compatibility: "part" + if (!strncmp("part", p, strlen("part"))) + { + p = strstr((p + 4), "\""); + if (!p) return NULL; + p++; + if (!strncmp(part_name, p, strlen(part_name))) + { + //Compare Elaborately + char *next_quote = strstr(p, "\""); + if (part_name_len == (next_quote - p)) + { + result = p; + break; + } + else + { + ESCAPE_RET_NULL(); + } + } + else + { + ESCAPE_RET_NULL(); + } + } + + p++; + } + + return result; +} diff --git a/src/lib/enventor_private.h b/src/lib/enventor_private.h index c0b8248..ae67314 100644 --- a/src/lib/enventor_private.h +++ b/src/lib/enventor_private.h @@ -127,6 +127,27 @@ void parser_bracket_find(parser_data *pd, Evas_Object *entry, Bracket_Update_Cb void parser_bracket_cancel(parser_data *pd); Eina_List *parser_group_list_get(parser_data *pd, Evas_Object *entry); +#define ESCAPE_GOTO_END() \ + p++; \ + p = strstr(p, "\""); \ + if (!p) goto end; \ + p++; \ + continue + +#define ESCAPE_RET_NULL() \ + p++; \ + p = strstr(p, "\""); \ + if (!p) return NULL; \ + p++; \ + continue + +char* parser_group_pos_get(char *utf8, char *utf8_end, + const char *group_name); +char* parser_part_pos_get(char *utf8, char *utf8_end, + const char* group_name, + const char *part_name, + const char *part_type); + /* syntax helper */ syntax_helper *syntax_init(edit_data *ed); void syntax_term(syntax_helper *sh); @@ -289,27 +310,7 @@ Eina_List *edit_group_list_get(edit_data *ed); /* util */ void mem_fail_msg(void); -#define ESCAPE_GOTO_END() \ - p++; \ - p = strstr(p, "\""); \ - if (!p) goto end; \ - p++; \ - continue - -#define ESCAPE_RET_NULL() \ - p++; \ - p = strstr(p, "\""); \ - if (!p) return NULL; \ - p++; \ - continue - -const char* part_type_get(Edje_Part_Type type); -char* find_group_proc_internal(char *utf8, char *utf8_end, - const char *group_name); -char* find_part_proc_internal(char *utf8, char *utf8_end, - const char* group_name, - const char *part_name, - const char *part_type); +const char* part_type_str_convert(Edje_Part_Type type); /* reference */ void ref_init(void); diff --git a/src/lib/util.c b/src/lib/util.c index aefbb2c..43b2358 100644 --- a/src/lib/util.c +++ b/src/lib/util.c @@ -11,7 +11,7 @@ void mem_fail_msg(void) } const char* -part_type_get(Edje_Part_Type type) +part_type_str_convert(Edje_Part_Type type) { switch (type) { @@ -31,137 +31,3 @@ part_type_get(Edje_Part_Type type) return "part"; } } - -char* -find_group_proc_internal(char *utf8, char *utf8_end, const char *group_name) -{ - char *p = utf8; - char *result = NULL; - - int group_name_len = strlen(group_name); - - //Find group - while (utf8_end > p) - { - //Skip " ~ " Section - if (*p == '\"') - { - ESCAPE_RET_NULL(); - } - - if (!strncmp("group", p, strlen("group"))) - { - p = strstr((p + 5), "\""); - if (!p) return NULL; - p++; - if (!strncmp(group_name, p, group_name_len)) - { - //Compare Elaborately - char *next_quote = strstr(p, "\""); - if (group_name_len == (next_quote - p)) - { - result = p; - break; - } - else - { - ESCAPE_RET_NULL(); - } - } - else - { - ESCAPE_RET_NULL(); - } - } - p++; - } - - return result; -} - -char* -find_part_proc_internal(char *utf8, char *utf8_end, const char* group_name, - const char *part_name, const char *part_type) -{ - char *p = find_group_proc_internal(utf8, utf8_end, group_name); - - //No found - if (!p) return NULL; - - p = strstr(p, "\""); - if (!p) return NULL; - p++; - - char *result = NULL; - - //goto parts - p = strstr(p, "parts"); - if (!p) return NULL; - - int part_name_len = strlen(part_name); - - //Find part - while (utf8_end > p) - { - //Skip " ~ " Section - if (*p == '\"') - { - ESCAPE_RET_NULL(); - } - - if (!strncmp(part_type, p, strlen(part_type))) - { - p = strstr((p + strlen(part_type)), "\""); - if (!p) return NULL; - p++; - if (!strncmp(part_name, p, part_name_len)) - { - //Compare Elaborately - char *next_quote = strstr(p, "\""); - if (part_name_len == (next_quote - p)) - { - result = p; - break; - } - else - { - ESCAPE_RET_NULL(); - } - } - else - { - ESCAPE_RET_NULL(); - } - } - - //compatibility: "part" - if (!strncmp("part", p, strlen("part"))) - { - p = strstr((p + 4), "\""); - if (!p) return NULL; - p++; - if (!strncmp(part_name, p, strlen(part_name))) - { - //Compare Elaborately - char *next_quote = strstr(p, "\""); - if (part_name_len == (next_quote - p)) - { - result = p; - break; - } - else - { - ESCAPE_RET_NULL(); - } - } - else - { - ESCAPE_RET_NULL(); - } - } - - p++; - } - - return result; -} --