forked from GitHub/gf-core
filter out empty brackets
This commit is contained in:
@@ -2301,26 +2301,29 @@ pgf_get_parse_roots(PgfParsing* ps, GuPool* pool)
|
|||||||
PGF_API GuSeq*
|
PGF_API GuSeq*
|
||||||
pgf_ccat_to_range(PgfParsing* ps, PgfCCat* ccat, GuPool* pool)
|
pgf_ccat_to_range(PgfParsing* ps, PgfCCat* ccat, GuPool* pool)
|
||||||
{
|
{
|
||||||
PgfItemConts* conts = ccat->conts;
|
|
||||||
PgfParseState* state = ps->before;
|
PgfParseState* state = ps->before;
|
||||||
GuBuf* buf = gu_new_buf(PgfParseRange, pool);
|
GuBuf* buf = gu_new_buf(PgfParseRange, pool);
|
||||||
|
|
||||||
while (conts != NULL) {
|
while (ccat->conts != NULL) {
|
||||||
PgfParseRange* range = gu_buf_extend(buf);
|
size_t start = ccat->conts->state->end_offset;
|
||||||
range->start = conts->state->end_offset;
|
size_t end = start;
|
||||||
range->end = conts->state->end_offset;
|
|
||||||
range->field = conts->ccat->cnccat->labels[conts->lin_idx];
|
|
||||||
|
|
||||||
while (state != NULL) {
|
while (state != NULL) {
|
||||||
if (pgf_parsing_get_completed(state, conts) == ccat) {
|
if (pgf_parsing_get_completed(state, ccat->conts) == ccat) {
|
||||||
if (state->start_offset >= range->start)
|
if (state->start_offset >= start)
|
||||||
range->end = state->start_offset;
|
end = state->start_offset;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
state = state->next;
|
state = state->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
conts = conts->ccat->conts;
|
if (start != end) {
|
||||||
|
PgfParseRange* range = gu_buf_extend(buf);
|
||||||
|
range->start = start;
|
||||||
|
range->end = end;
|
||||||
|
range->field = ccat->cnccat->labels[ccat->conts->lin_idx];
|
||||||
|
}
|
||||||
|
|
||||||
|
ccat = ccat->conts->ccat;
|
||||||
}
|
}
|
||||||
|
|
||||||
return gu_buf_data_seq(buf);
|
return gu_buf_data_seq(buf);
|
||||||
|
|||||||
Reference in New Issue
Block a user