Commit 99c6a71d authored by karthik nayak's avatar karthik nayak Committed by Junio C Hamano

ref-filter: introduce format_ref_array_item()

To allow column display, we will need to first render the output in a
string list to allow print_columns() to compute the proper size of
each column before starting the actual output. Introduce the function
format_ref_array_item() that does the formatting of a ref_array_item
to an strbuf.

show_ref_array_item() is kept as a convenience wrapper around it which
obtains the strbuf and prints it the standard output.
Mentored-by: Christian Couder's avatarChristian Couder <christian.couder@gmail.com>
Mentored-by: Matthieu Moy's avatarMatthieu Moy <matthieu.moy@grenoble-inp.fr>
Signed-off-by: karthik nayak's avatarKarthik Nayak <karthik.188@gmail.com>
Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
parent d4919bb2
......@@ -1833,10 +1833,10 @@ static void append_literal(const char *cp, const char *ep, struct ref_formatting
}
}
void show_ref_array_item(struct ref_array_item *info, const char *format, int quote_style)
void format_ref_array_item(struct ref_array_item *info, const char *format,
int quote_style, struct strbuf *final_buf)
{
const char *cp, *sp, *ep;
struct strbuf *final_buf;
struct ref_formatting_state state = REF_FORMATTING_STATE_INIT;
state.quote_style = quote_style;
......@@ -1866,9 +1866,17 @@ void show_ref_array_item(struct ref_array_item *info, const char *format, int qu
}
if (state.stack->prev)
die(_("format: %%(end) atom missing"));
final_buf = &state.stack->output;
fwrite(final_buf->buf, 1, final_buf->len, stdout);
strbuf_addbuf(final_buf, &state.stack->output);
pop_stack_element(&state.stack);
}
void show_ref_array_item(struct ref_array_item *info, const char *format, int quote_style)
{
struct strbuf final_buf = STRBUF_INIT;
format_ref_array_item(info, format, quote_style, &final_buf);
fwrite(final_buf.buf, 1, final_buf.len, stdout);
strbuf_release(&final_buf);
putchar('\n');
}
......
......@@ -100,6 +100,9 @@ int parse_ref_filter_atom(const char *atom, const char *ep);
int verify_ref_format(const char *format);
/* Sort the given ref_array as per the ref_sorting provided */
void ref_array_sort(struct ref_sorting *sort, struct ref_array *array);
/* Based on the given format and quote_style, fill the strbuf */
void format_ref_array_item(struct ref_array_item *info, const char *format,
int quote_style, struct strbuf *final_buf);
/* Print the ref using the given format and quote_style */
void show_ref_array_item(struct ref_array_item *info, const char *format, int quote_style);
/* Callback function for parsing the sort option */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment