From 92b24db32d05efd3ca692904c451b7d7a32e7e4d Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Fri, 6 Sep 2024 19:08:42 -0500 Subject: [PATCH] Bugfix: Get the FSS Embedded List Read working as expected based on runtime tests. A good portion of clean ups and design changes to address special cases or anything overlooked. The runtime tests now pass as expected. This does not address the currently incomplete depth processing of the FSS Embedded List Read. There are still some situations that need to be fixed. --- level_1/fl_fss/c/fss/embedded_list.c | 484 ++++----------------- level_1/fl_fss/c/private-fss-list.c | 21 +- level_3/fss_read/c/embedded_list/main.c | 2 +- level_3/fss_read/c/embedded_list/process_normal.c | 2 +- .../test-0003-object_space-content-select-0.expect | 2 +- .../test-0003-object_space-content-trim.expect | 2 +- .../expect/test-0003-object_space-content.expect | 2 +- ...003-object_space-object_and_content-at-0.expect | 4 +- ...003-object_space-object_and_content-at-1.expect | 4 +- ...3-object_space-object_and_content-line-6.expect | 2 +- ..._space-object_and_content-name--select-0.expect | 4 +- ...03-object_space-object_and_content-name-.expect | 4 +- ...object_and_content-name-a-original-empty.expect | 4 +- ...space-object_and_content-name-a-original.expect | 4 +- ...space-object_and_content-name-a-select-0.expect | 4 +- ...3-object_space-object_and_content-name-a.expect | 4 +- ...\262\320\265\321\202_has_space-select-0.expect" | 4 +- ...object_space-object_and_content-original.expect | 22 +- ...ace-object_and_content-select-0-original.expect | 2 - ...object_space-object_and_content-select-0.expect | 20 +- ...003-object_space-object_and_content-trim.expect | 20 +- ...est-0003-object_space-object_and_content.expect | 20 +- 22 files changed, 168 insertions(+), 469 deletions(-) diff --git a/level_1/fl_fss/c/fss/embedded_list.c b/level_1/fl_fss/c/fss/embedded_list.c index 41c324a..3e61936 100644 --- a/level_1/fl_fss/c/fss/embedded_list.c +++ b/level_1/fl_fss/c/fss/embedded_list.c @@ -61,11 +61,10 @@ extern "C" { f_number_unsigned_t slash_first = 0; f_number_unsigned_t slash_last = 0; f_number_unsigned_t before_list_open = position_previous; + f_number_unsigned_t close_location = 0; - // 0x0 = false, 0x1 = true, 0x2 = false, but there is a delimited comment, comment_delimit is set. - uint8_t graph_first = 0x1; - uint8_t is_open = F_false; - uint8_t is_object = F_false; + // 0x0 = is false for all, 0x1 = is first graph, 0x2 = is delimited comment, 0x4 = is open, 0x8 = is object, 0x10 = is delimited close. + uint8_t is_state = 0x1; // Initialize depth 1 start position. // Positions_start.used is used as a max depth (such that cache->positions->used == max depth + 1). @@ -79,68 +78,30 @@ extern "C" { if (state->interrupt) { state->interrupt((void *) state, 0); - - if (F_status_set_fine(state->status) == F_interrupt) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } + if (F_status_set_fine(state->status) == F_interrupt) break; } if (buffer.string[range->start] == f_fss_eol_s.string[0]) { - if (graph_first == 0x2) { + if (is_state & 0x2) { state->status = f_memory_array_increase(state->step_small, sizeof(f_number_unsigned_t), (void **) &delimits->array, &delimits->used, &delimits->size); - - if (F_status_is_error(state->status)) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } + if (F_status_is_error(state->status)) break; delimits->array[delimits->used++] = comment_delimit; } - newline_last = range->start; - position_previous = range->start++; - graph_first = 0x1; + newline_last = position_previous = range->start++; line_start = range->start; - - if (range->start >= buffer.used || range->start > range->stop) { - delimits->used = delimits_used; - comments->used = comments_used; - - if (depth) { - state->status = (range->start >= buffer.used) ? F_end_not_nest_eos : F_end_not_nest_stop; - } - else { - state->status = (range->start >= buffer.used) ? F_data_not_eos : F_data_not_stop; - } - - return; - } - - continue; + is_state = 0x1; } - - if (buffer.string[range->start] == f_fss_slash_s.string[0]) { - slash_first = range->start; - slash_last = range->start; + else if (buffer.string[range->start] == f_fss_slash_s.string[0] && (is_state & 0x1)) { + slash_first = slash_last = position_previous = range->start++; cache->slashes->array[depth] = 1; - position_previous = range->start++; for (; range->start <= range->stop && range->start < buffer.used && (buffer.string[range->start] == f_fss_placeholder_s.string[0] || buffer.string[range->start] == f_fss_slash_s.string[0]); ++range->start) { if (state->interrupt) { state->interrupt((void *) state, 0); - - if (F_status_set_fine(state->status) == F_interrupt) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } + if (F_status_set_fine(state->status) == F_interrupt) break; } position_previous = range->start; @@ -151,19 +112,7 @@ extern "C" { } } // for - if (range->start >= buffer.used || range->start > range->stop) { - delimits->used = delimits_used; - comments->used = comments_used; - - if (depth) { - state->status = (range->start >= buffer.used) ? F_end_not_nest_eos : F_end_not_nest_stop; - } - else { - state->status = (range->start >= buffer.used) ? F_data_not_eos : F_data_not_stop; - } - - return; - } + if (F_status_is_error(state->status) || state->status == F_interrupt || range->start >= buffer.used || range->start > range->stop) break; // All slashes for an open are delimited (because it could represent a slash in the object name). // For example 'object {' = valid open, name 'object', 'object \{' represents 'object {', 'object \\{' = valid open, name 'object \', 'object \\\{' represents 'object \{', etc.. @@ -171,31 +120,23 @@ extern "C" { // For example '}' = valid close, '\}' represents '}', '\\}' represents '\}', '\\\}' represents '\\}', '\\\\}' represents '\\\}', and so on.. // When slash is odd and a (delimited) valid open/close is found, then save delimited positions and continue. if (buffer.string[range->start] == f_fss_eol_s.string[0]) { - if (graph_first == 0x2) { + if (is_state & 0x2) { state->status = f_memory_array_increase(state->step_small, sizeof(f_number_unsigned_t), (void **) &delimits->array, &delimits->used, &delimits->size); - - if (F_status_is_error(state->status)) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } + if (F_status_is_error(state->status)) break; delimits->array[delimits->used++] = comment_delimit; } - newline_last = range->start; - position_previous = range->start++; + newline_last = position_previous = range->start++; line_start = range->start; - graph_first = 0x1; + is_state = 0x1; } else if (buffer.string[range->start] == f_fss_embedded_list_open_s.string[0] || buffer.string[range->start] == f_fss_embedded_list_close_s.string[0]) { before_list_open = position_previous; - is_open = F_false; - graph_first = 0x0; + is_state &= ~0x15; if (buffer.string[range->start] == f_fss_embedded_list_open_s.string[0]) { - is_open = F_true; + is_state |= 0x4; } position_previous = range->start++; @@ -204,29 +145,10 @@ extern "C" { if (state->interrupt) { state->interrupt((void *) state, 0); - - if (F_status_set_fine(state->status) == F_interrupt) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } + if (F_status_set_fine(state->status) == F_interrupt) break; } - if (buffer.string[range->start] == f_fss_eol_s.string[0]) { - if (graph_first == 0x2) { - state->status = f_memory_array_increase(state->step_small, sizeof(f_number_unsigned_t), (void **) &delimits->array, &delimits->used, &delimits->size); - if (F_status_is_error(state->status)) break; - - delimits->array[delimits->used++] = comment_delimit; - } - - newline_last = range->start; - line_start = range->start + 1; - graph_first = 0x1; - - break; - } + if (buffer.string[range->start] == f_fss_eol_s.string[0]) break; if (buffer.string[range->start] != f_fss_placeholder_s.string[0]) { if (f_fss_is_space(buffer, *range, state) == F_false) break; @@ -238,47 +160,25 @@ extern "C" { if (F_status_is_error(state->status)) break; } // while - if (F_status_is_error(state->status)) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } + if (F_status_is_error(state->status) || state->status == F_interrupt || range->start >= buffer.used || range->start > range->stop) break; - if (F_status_is_error(state->status) || range->start >= buffer.used || range->start > range->stop) { - delimits->used = delimits_used; - comments->used = comments_used; + // This is a valid object open/close that has been delimited, save the slash delimit positions. + if (buffer.string[range->start] == f_fss_eol_s.string[0]) { + newline_last = range->start; + line_start = newline_last + 1; - if (F_status_is_error_not(state->status)) { - if (depth) { - state->status = (range->start >= buffer.used) ? F_end_not_nest_eos : F_end_not_nest_stop; + if (is_state & 0x4) { + if (cache->slashes->array[depth] % 2 == 0) { + is_state |= 0x8; } else { - state->status = (range->start >= buffer.used) ? F_data_not_eos : F_data_not_stop; + is_state &= ~0x8; } - } - return; - } - - // This is a valid object open/close that has been delimited, save the slash delimit positions. - if (buffer.string[range->start] == f_fss_eol_s.string[0]) { - newline_last = range->start; - line_start = range->start + 1; - graph_first = 0x1; - - if (is_open) { - is_object = cache->slashes->array[depth] % 2 == 0 ? F_true : F_false; range->start = slash_first; state->status = f_memory_array_increase_by((cache->slashes->array[depth] / 2) + 1, sizeof(f_number_unsigned_t), (void **) &delimits->array, &delimits->used, &delimits->size); - - if (F_status_is_error(state->status)) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } + if (F_status_is_error(state->status)) break; // Apply slash delimits, only slashes and placeholders should be present. while (cache->slashes->array[depth]) { @@ -296,7 +196,7 @@ extern "C" { } // while // When slashes are even, the object is valid and needs to be processed. - if (is_object) { + if (is_state & 0x8) { if (++depth >= cache->objects->size) { state->status = f_memory_array_resize(depth + 2, sizeof(f_range_t), (void **) &cache->objects->array, &cache->objects->used, &cache->objects->size); } @@ -313,12 +213,7 @@ extern "C" { } } - if (F_status_is_error(state->status)) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } + if (F_status_is_error(state->status)) break; cache->objects->array[depth].start = line_start; cache->objects->array[depth].stop = before_list_open; @@ -339,54 +234,42 @@ extern "C" { } } else { - state->status = f_memory_array_increase(state->step_small, sizeof(f_number_unsigned_t), (void **) &delimits->array, &delimits->used, &delimits->size); - - if (F_status_is_error(state->status)) { - delimits->used = delimits_used; - comments->used = comments_used; + is_state |= 0x10; + } - return; - } + if (is_state & 0x12) { + state->status = f_memory_array_increase(state->step_small, sizeof(f_number_unsigned_t), (void **) &delimits->array, &delimits->used, &delimits->size); + if (F_status_is_error(state->status)) break; delimits->array[delimits->used++] = slash_last; } - range->start = newline_last; + range->start = line_start; + is_state = 0x1; } } - else if (graph_first == 0x1 && buffer.string[range->start] == f_fss_comment_s.string[0]) { - graph_first = 0x2; + else if (buffer.string[range->start] == f_fss_comment_s.string[0] && (is_state & 0x1)) { + is_state |= 0x2; + is_state &= ~0x1; comment_delimit = slash_first; } else { - graph_first = 0x0; + is_state &= ~0x1; } } else if (buffer.string[range->start] == f_fss_embedded_list_open_s.string[0]) { - graph_first = 0x0; + is_state &= ~0x1; before_list_open = position_previous; position_previous = range->start; state->status = f_utf_buffer_increment(buffer, range, 1); - - if (F_status_is_error(state->status)) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } + if (F_status_is_error(state->status)) break; while (range->start <= range->stop && range->start < buffer.used) { if (state->interrupt) { state->interrupt((void *) state, 0); - - if (F_status_set_fine(state->status) == F_interrupt) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } + if (F_status_set_fine(state->status) == F_interrupt) break; } if (buffer.string[range->start] == f_fss_eol_s.string[0]) break; @@ -401,21 +284,7 @@ extern "C" { if (F_status_is_error(state->status)) break; } // while - if (F_status_is_error(state->status) || range->start >= buffer.used || range->start > range->stop) { - delimits->used = delimits_used; - comments->used = comments_used; - - if (F_status_is_error_not(state->status)) { - if (depth) { - state->status = (range->start >= buffer.used) ? F_end_not_nest_eos : F_end_not_nest_stop; - } - else { - state->status = (range->start >= buffer.used) ? F_data_not_eos : F_data_not_stop; - } - } - - return; - } + if (F_status_is_error(state->status) || state->status == F_interrupt || range->start >= buffer.used || range->start > range->stop) break; if (buffer.string[range->start] == f_fss_eol_s.string[0]) { if (++depth >= cache->objects->size) { @@ -434,12 +303,7 @@ extern "C" { } } - if (F_status_is_error(state->status)) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } + if (F_status_is_error(state->status)) break; cache->objects->array[depth].start = line_start; cache->objects->array[depth].stop = before_list_open; @@ -458,112 +322,43 @@ extern "C" { cache->slashes->used = depth + 1; } - if (graph_first == 0x2) { + if (is_state & 0x2) { state->status = f_memory_array_increase(state->step_small, sizeof(f_number_unsigned_t), (void **) &delimits->array, &delimits->used, &delimits->size); - - if (F_status_is_error(state->status)) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } + if (F_status_is_error(state->status)) break; delimits->array[delimits->used++] = comment_delimit; } newline_last = range->start; - line_start = range->start + 1; - graph_first = 0x1; + line_start = newline_last + 1; + is_state = 0x1; } else { // No valid object close found, seek until EOL. f_fss_seek_to_eol(buffer, range, state); + if (F_status_is_error(state->status)) break; - if (F_status_is_error(state->status)) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } - - if (graph_first == 0x2) { + if (is_state & 0x2) { state->status = f_memory_array_increase(state->step_small, sizeof(f_number_unsigned_t), (void **) &delimits->array, &delimits->used, &delimits->size); - - if (F_status_is_error(state->status)) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } + if (F_status_is_error(state->status)) break; delimits->array[delimits->used++] = comment_delimit; } newline_last = range->start; - line_start = range->start + 1; - graph_first = 0x1; - - while (range->start <= range->stop && range->start < buffer.used) { - - if (state->interrupt) { - state->interrupt((void *) state, 0); - - if (F_status_set_fine(state->status) == F_interrupt) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } - } - - if (buffer.string[range->start] == f_fss_eol_s.string[0]) { - newline_last = range->start; - line_start = range->start + 1; - graph_first = 0x1; - - break; - } - - position_previous = range->start; - - state->status = f_utf_buffer_increment(buffer, range, 1); - - if (F_status_is_error(state->status)) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } - } // while - - if (range->start >= buffer.used || range->start > range->stop) { - delimits->used = delimits_used; - comments->used = comments_used; - - if (depth) { - state->status = (range->start >= buffer.used) ? F_end_not_nest_eos : F_end_not_nest_stop; - } - else { - state->status = (range->start >= buffer.used) ? F_data_not_eos : F_data_not_stop; - } - - return; - } + line_start = newline_last + 1; + is_state = 0x1; } } - else if (buffer.string[range->start] == f_fss_embedded_list_close_s.string[0]) { + else if (buffer.string[range->start] == f_fss_embedded_list_close_s.string[0] && (is_state & 0x1)) { + close_location = range->start; + while (range->start <= range->stop && range->start < buffer.used) { if (state->interrupt) { state->interrupt((void *) state, 0); - - if (F_status_set_fine(state->status) == F_interrupt) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } + if (F_status_set_fine(state->status) == F_interrupt) break; } position_previous = range->start; @@ -572,25 +367,11 @@ extern "C" { if (F_status_is_error(state->status) || buffer.string[range->start] == f_fss_eol_s.string[0]) break; if (buffer.string[range->start] != f_fss_placeholder_s.string[0]) { - if (f_fss_is_space(buffer, *range, state) == F_false) break; + if (f_fss_is_space(buffer, *range, state) == F_false || F_status_is_error(state->status)) break; } } // while - if (F_status_is_error(state->status) || range->start >= buffer.used || range->start > range->stop) { - delimits->used = delimits_used; - comments->used = comments_used; - - if (F_status_is_error_not(state->status)) { - if (depth) { - state->status = (range->start >= buffer.used) ? F_end_not_nest_eos : F_end_not_nest_stop; - } - else { - state->status = (range->start >= buffer.used) ? F_data_not_eos : F_data_not_stop; - } - } - - return; - } + if (F_status_is_error(state->status) || state->status == F_interrupt || range->start >= buffer.used || range->start > range->stop) break; if (buffer.string[range->start] == f_fss_eol_s.string[0]) { if (depth >= found->used) { @@ -611,12 +392,7 @@ extern "C" { } } - if (F_status_is_error(state->status)) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } + if (F_status_is_error(state->status)) break; if (depth) { found->depth[depth].array[position].parent = found->depth[depth - 1].used; @@ -646,25 +422,19 @@ extern "C" { found->used = depth + 1; } - if (graph_first == 0x2) { + if (is_state & 0x2) { state->status = f_memory_array_increase(state->step_small, sizeof(f_number_unsigned_t), (void **) &delimits->array, &delimits->used, &delimits->size); - - if (F_status_is_error(state->status)) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } + if (F_status_is_error(state->status)) break; delimits->array[delimits->used++] = comment_delimit; } found->depth[depth].array[position].close.start = line_start; - found->depth[depth].array[position].close.stop = range->start - 1; + found->depth[depth].array[position].close.stop = close_location; newline_last = range->start; - line_start = range->start + 1; - graph_first = 0x1; + line_start = newline_last + 1; + is_state = 0x1; if (!depth) { state->status = f_utf_buffer_increment(buffer, range, 1); @@ -697,32 +467,20 @@ extern "C" { if (state->interrupt) { state->interrupt((void *) state, 0); - - if (F_status_set_fine(state->status) == F_interrupt) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } + if (F_status_set_fine(state->status) == F_interrupt) break; } if (buffer.string[range->start] == f_fss_eol_s.string[0]) { - if (graph_first == 0x2) { + if (is_state & 0x2) { state->status = f_memory_array_increase(state->step_small, sizeof(f_number_unsigned_t), (void **) &delimits->array, &delimits->used, &delimits->size); - - if (F_status_is_error(state->status)) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } + if (F_status_is_error(state->status)) break; delimits->array[delimits->used++] = comment_delimit; } newline_last = range->start; - line_start = range->start + 1; - graph_first = 0x1; + line_start = newline_last + 1; + is_state = 0x1; break; } @@ -730,86 +488,48 @@ extern "C" { position_previous = range->start; state->status = f_utf_buffer_increment(buffer, range, 1); - - if (F_status_is_error(state->status)) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } + if (F_status_is_error(state->status)) break; } // while - if (range->start >= buffer.used || range->start > range->stop) { - delimits->used = delimits_used; - comments->used = comments_used; - - if (depth) { - state->status = (range->start >= buffer.used) ? F_end_not_nest_eos : F_end_not_nest_stop; - } - else { - state->status = (range->start >= buffer.used) ? F_data_not_eos : F_data_not_stop; - } - - return; - } + if (F_status_is_error(state->status) || state->status == F_interrupt) break; } } - else if (buffer.string[range->start] == f_fss_comment_s.string[0] && (graph_first == 0x1 || graph_first == 0x2)) { + else if (buffer.string[range->start] == f_fss_comment_s.string[0] && (is_state & 0x1)) { // The newline_last is initialized to the range->start, which may not actually be a new line. position = (buffer.string[newline_last] == f_string_eol_s.string[0]) ? newline_last + 1 : newline_last; f_fss_seek_to_eol(buffer, range, state); - - if (F_status_is_error(state->status)) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } + if (F_status_is_error(state->status)) break; if (range->start > range->stop || range->start >= buffer.used) { --range->start; } else { - if (graph_first == 0x2) { + if (is_state & 0x2) { state->status = f_memory_array_increase(state->step_small, sizeof(f_number_unsigned_t), (void **) &delimits->array, &delimits->used, &delimits->size); - - if (F_status_is_error(state->status)) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } + if (F_status_is_error(state->status)) break; delimits->array[delimits->used++] = comment_delimit; } newline_last = range->start; - graph_first = 0x1; + line_start = newline_last + 1; + is_state = 0x1; } state->status = f_memory_array_increase(state->step_small, sizeof(f_range_t), (void **) &comments->array, &comments->used, &comments->size); - - if (F_status_is_error(state->status)) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } + if (F_status_is_error(state->status)) break; comments->array[comments->used].start = position; comments->array[comments->used++].stop = range->start++; - line_start = range->start; - - continue; } else if (buffer.string[range->start] != f_fss_eol_s.string[0]) { position_previous = range->start; - if (graph_first == 0x1) { + if (is_state & 0x1) { if (f_fss_is_space(buffer, *range, state) == F_false) { - graph_first = 0x0; + is_state &= ~0x1; } } @@ -817,38 +537,20 @@ extern "C" { state->status = f_utf_buffer_increment(buffer, range, 1); } - if (F_status_is_error(state->status)) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; - } - - if (range->start >= buffer.used || range->start > range->stop) break; - - continue; - } - - position_previous = range->start; - - state->status = f_utf_buffer_increment(buffer, range, 1); - - if (F_status_is_error(state->status)) { - delimits->used = delimits_used; - comments->used = comments_used; - - return; + if (F_status_is_error(state->status)) break; } } // while delimits->used = delimits_used; comments->used = comments_used; - if (range->start > range->stop) { - state->status = F_status_set_error(depth ? F_end_not_nest_stop : F_end_not_stop); - } - else { - state->status = F_status_set_error(depth ? F_end_not_nest_eos : F_end_not_eos); + if (F_status_is_error_not(state->status) && state->status != F_interrupt) { + if (range->start > range->stop) { + state->status = F_status_set_error(depth ? F_end_not_nest_stop : F_end_not_stop); + } + else { + state->status = F_status_set_error(depth ? F_end_not_nest_eos : F_end_not_eos); + } } } #endif // _di_fl_fss_embedded_list_content_read_ diff --git a/level_1/fl_fss/c/private-fss-list.c b/level_1/fl_fss/c/private-fss-list.c index e66f3d5..39c8cf9 100644 --- a/level_1/fl_fss/c/private-fss-list.c +++ b/level_1/fl_fss/c/private-fss-list.c @@ -300,21 +300,20 @@ extern "C" { continue; } - else { - if (f_fss_is_space(buffer, *range, state) == F_false) { - if (F_status_is_error(state->status)) { - delimits->used = delimits_used; - return; - } + if (f_fss_is_space(buffer, *range, state) == F_false) { + if (F_status_is_error(state->status)) { + delimits->used = delimits_used; - if (graph_first) { - graph_first = F_false; - start = range->start; - } + return; + } - stop = range->start; + if (graph_first) { + graph_first = F_false; + start = range->start; } + + stop = range->start; } state->status = f_utf_buffer_increment(buffer, range, 1); diff --git a/level_3/fss_read/c/embedded_list/main.c b/level_3/fss_read/c/embedded_list/main.c index 2a05192..aa8dabe 100644 --- a/level_3/fss_read/c/embedded_list/main.c +++ b/level_3/fss_read/c/embedded_list/main.c @@ -17,7 +17,7 @@ int main(const int argc, const f_string_t *argv, const f_string_t *envp) { data.program.output.custom = (void *) &data; data.program.warning.custom = (void *) &data; - data.setting.feature |= fss_read_feature_flag_object_as_line_d | fss_read_feature_flag_content_has_close_d; + data.setting.feature |= fss_read_feature_flag_object_as_line_d | fss_read_feature_flag_content_has_close_d | fss_read_feature_flag_content_multiple_d; data.setting.feature |= fss_read_feature_flag_object_align_d | fss_read_feature_flag_object_trim_d | fss_read_feature_flag_object_trim_expand_d; data.setting.feature |= fss_read_feature_flag_depth_multiple_d; diff --git a/level_3/fss_read/c/embedded_list/process_normal.c b/level_3/fss_read/c/embedded_list/process_normal.c index 1e2a16e..aec3489 100644 --- a/level_3/fss_read/c/embedded_list/process_normal.c +++ b/level_3/fss_read/c/embedded_list/process_normal.c @@ -147,7 +147,7 @@ extern "C" { //} // for // @todo determine depth and dynamically construct the objects and therefore content based on any of --at, --depth, and --name. - return; + //return; } main->setting.state.status = f_memory_array_resize(main->setting.nest.depth[depth].used, sizeof(f_range_t), (void **) &main->setting.objects.array, &main->setting.objects.used, &main->setting.objects.size); diff --git a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-content-select-0.expect b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-content-select-0.expect index 0522138..56ad473 100644 --- a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-content-select-0.expect +++ b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-content-select-0.expect @@ -6,7 +6,7 @@ inside { } with content. - \### Nested valid Object { + ### Nested valid Object { with nested content. } and outside. diff --git a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-content-trim.expect b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-content-trim.expect index 0522138..56ad473 100644 --- a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-content-trim.expect +++ b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-content-trim.expect @@ -6,7 +6,7 @@ inside { } with content. - \### Nested valid Object { + ### Nested valid Object { with nested content. } and outside. diff --git a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-content.expect b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-content.expect index 0522138..56ad473 100644 --- a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-content.expect +++ b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-content.expect @@ -6,7 +6,7 @@ inside { } with content. - \### Nested valid Object { + ### Nested valid Object { with nested content. } and outside. diff --git a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-at-0.expect b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-at-0.expect index a8c8f7c..ef39d57 100644 --- a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-at-0.expect +++ b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-at-0.expect @@ -1,7 +1,7 @@ a{ - + stuff This has Several lines -} + } diff --git a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-at-1.expect b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-at-1.expect index 7711572..9549598 100644 --- a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-at-1.expect +++ b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-at-1.expect @@ -1,4 +1,4 @@ привет has space{ - inside { + inside { } -} + } diff --git a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-line-6.expect b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-line-6.expect index 5c34318..a8317d6 100644 --- a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-line-6.expect +++ b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-line-6.expect @@ -1 +1 @@ -} + } diff --git a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name--select-0.expect b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name--select-0.expect index e8e0365..4dcdeaf 100644 --- a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name--select-0.expect +++ b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name--select-0.expect @@ -1,3 +1,3 @@ { - Has no Object name (only white space) and is oddly spaced. -} +Has no Object name (only white space) and is oddly spaced. + } diff --git a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name-.expect b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name-.expect index e8e0365..4dcdeaf 100644 --- a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name-.expect +++ b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name-.expect @@ -1,3 +1,3 @@ { - Has no Object name (only white space) and is oddly spaced. -} +Has no Object name (only white space) and is oddly spaced. + } diff --git a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name-a-original-empty.expect b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name-a-original-empty.expect index d9bd647..01aa0ba 100644 --- a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name-a-original-empty.expect +++ b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name-a-original-empty.expect @@ -1,7 +1,7 @@ a { - + stuff This has Several lines -} + } diff --git a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name-a-original.expect b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name-a-original.expect index d9bd647..01aa0ba 100644 --- a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name-a-original.expect +++ b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name-a-original.expect @@ -1,7 +1,7 @@ a { - + stuff This has Several lines -} + } diff --git a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name-a-select-0.expect b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name-a-select-0.expect index a8c8f7c..ef39d57 100644 --- a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name-a-select-0.expect +++ b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name-a-select-0.expect @@ -1,7 +1,7 @@ a{ - + stuff This has Several lines -} + } diff --git a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name-a.expect b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name-a.expect index a8c8f7c..ef39d57 100644 --- a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name-a.expect +++ b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name-a.expect @@ -1,7 +1,7 @@ a{ - + stuff This has Several lines -} + } diff --git "a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name-\320\277\321\200\320\270\320\262\320\265\321\202_has_space-select-0.expect" "b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name-\320\277\321\200\320\270\320\262\320\265\321\202_has_space-select-0.expect" index 7711572..9549598 100644 --- "a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name-\320\277\321\200\320\270\320\262\320\265\321\202_has_space-select-0.expect" +++ "b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-name-\320\277\321\200\320\270\320\262\320\265\321\202_has_space-select-0.expect" @@ -1,4 +1,4 @@ привет has space{ - inside { + inside { } -} + } diff --git a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-original.expect b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-original.expect index f28125f..2acd827 100644 --- a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-original.expect +++ b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-original.expect @@ -1,26 +1,26 @@ a { - + stuff This has Several lines -} + } привет has space { - inside { + inside { } -} + } \# Valid Object { - with content. -} + with content. + } \# Valid Object { - \### Nested valid Object { + \### Nested valid Object { with nested content. } and outside. -} -{ - Has no Object name (only white space) and is oddly spaced. -} + } + { +Has no Object name (only white space) and is oddly spaced. + } мир { мирмирмир } diff --git a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-select-0-original.expect b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-select-0-original.expect index 04fbb74..27dbce4 100644 --- a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-select-0-original.expect +++ b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-select-0-original.expect @@ -25,10 +25,8 @@ Has no Object name (only white space) and is oddly spaced. мирмирмир } hi { - # Comment inside. } nested { empty { } - # Comment after. } diff --git a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-select-0.expect b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-select-0.expect index 546e287..c2e7627 100644 --- a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-select-0.expect +++ b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-select-0.expect @@ -1,26 +1,26 @@ a{ - + stuff This has Several lines -} + } привет has space{ - inside { + inside { } -} + } # Valid Object{ - with content. -} + with content. + } # Valid Object{ - \### Nested valid Object { + ### Nested valid Object { with nested content. } and outside. -} + } { - Has no Object name (only white space) and is oddly spaced. -} +Has no Object name (only white space) and is oddly spaced. + } мир{ мирмирмир } diff --git a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-trim.expect b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-trim.expect index 546e287..c2e7627 100644 --- a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-trim.expect +++ b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content-trim.expect @@ -1,26 +1,26 @@ a{ - + stuff This has Several lines -} + } привет has space{ - inside { + inside { } -} + } # Valid Object{ - with content. -} + with content. + } # Valid Object{ - \### Nested valid Object { + ### Nested valid Object { with nested content. } and outside. -} + } { - Has no Object name (only white space) and is oddly spaced. -} +Has no Object name (only white space) and is oddly spaced. + } мир{ мирмирмир } diff --git a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content.expect b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content.expect index 546e287..c2e7627 100644 --- a/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content.expect +++ b/level_3/fss_read/tests/runtime/fss_0008/expect/test-0003-object_space-object_and_content.expect @@ -1,26 +1,26 @@ a{ - + stuff This has Several lines -} + } привет has space{ - inside { + inside { } -} + } # Valid Object{ - with content. -} + with content. + } # Valid Object{ - \### Nested valid Object { + ### Nested valid Object { with nested content. } and outside. -} + } { - Has no Object name (only white space) and is oddly spaced. -} +Has no Object name (only white space) and is oddly spaced. + } мир{ мирмирмир } -- 1.8.3.1