From: ZheNing Hu via GitGitGadget Date: Wed, 25 Aug 2021 09:08:49 GMT Subject: [PATCH 5/8] [GSOC] ref-filter: introduce symref_atom_parser() Message-ID: <40ab1faad39285ecd05ea57d6d2107e644d01bb7.1629882532.git.gitgitgadget@gmail.com> In-Reply-To: From: ZheNing Hu parse_ref_filter_atom() sets need_symref by checking whether the atom type is ATOM_SYMREF. When we are operating other atoms here, this step of checking is not necessary. So add the symref_atom_parser() specifically to parse the %(symref) atom, and set need_symref in it. This can make the program logic more concise. Mentored-by: Christian Couder Mentored-by: Hariom Verma Signed-off-by: ZheNing Hu --- ref-filter.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/ref-filter.c b/ref-filter.c index e42cd738c32..8dca273f720 100644 --- a/ref-filter.c +++ b/ref-filter.c @@ -495,6 +495,13 @@ static int person_email_atom_parser(struct ref_format *format, struct used_atom return 0; } +static int symref_atom_parser(struct ref_format *format, struct used_atom *atom, + const char *arg, struct strbuf *err) +{ + need_symref = 1; + return refname_atom_parser_internal(&atom->u.refname, arg, atom->name, err); +} + static int refname_atom_parser(struct ref_format *format, struct used_atom *atom, const char *arg, struct strbuf *err) { @@ -634,7 +641,7 @@ static struct { [ATOM_RAW] = { "raw", SOURCE_OBJ, FIELD_STR, raw_atom_parser }, [ATOM_UPSTREAM] = { "upstream", SOURCE_NONE, FIELD_STR, remote_ref_atom_parser }, [ATOM_PUSH] = { "push", SOURCE_NONE, FIELD_STR, remote_ref_atom_parser }, - [ATOM_SYMREF] = { "symref", SOURCE_NONE, FIELD_STR, refname_atom_parser }, + [ATOM_SYMREF] = { "symref", SOURCE_NONE, FIELD_STR, symref_atom_parser }, [ATOM_FLAG] = { "flag", SOURCE_NONE }, [ATOM_HEAD] = { "HEAD", SOURCE_NONE, FIELD_STR, head_atom_parser }, [ATOM_COLOR] = { "color", SOURCE_NONE, FIELD_STR, color_atom_parser }, @@ -758,8 +765,6 @@ static int parse_ref_filter_atom(struct ref_format *format, return -1; if (*atom == '*') need_tagged = 1; - if (i == ATOM_SYMREF) - need_symref = 1; return at; } -- gitgitgadget