]> Kevux Git Server - fll/commitdiff
Bugfix: FSS Embedded List Read printing tabbing when using original mode and trim...
authorKevin Day <Kevin@kevux.org>
Sat, 7 Sep 2024 13:45:32 +0000 (08:45 -0500)
committerKevin Day <Kevin@kevux.org>
Sat, 7 Sep 2024 13:45:32 +0000 (08:45 -0500)
Do not double-print the before spaces when both original and trim modes are in use.
Print the before even with original and trim are in use when the Object has no size.

level_3/fss_embedded_list_read/c/private-print.c

index 25a805e3b8547a6e372e6f4168312494eb843774..4dbdb5f9352fbde390ede78d490b0bf19b417632 100644 (file)
@@ -76,7 +76,7 @@ extern "C" {
 
     if (!data->buffer.used) return;
 
-    if (data->main->parameters.array[fss_embedded_list_read_parameter_content_e].result == f_console_result_found_e) {
+    if (data->main->parameters.array[fss_embedded_list_read_parameter_content_e].result == f_console_result_found_e && data->main->parameters.array[fss_embedded_list_read_parameter_original_e].result == f_console_result_none_e) {
       const f_string_range_t before = fss_embedded_list_read_print_at_determine_begin(data, object, contents);
 
       if (before.start <= before.stop) {
@@ -97,20 +97,31 @@ extern "C" {
           if (data->buffer.string[before.start] == f_fss_eol_s.string[0]) ++before.start;
         }
 
-        if (f_fss_embedded_list_open_s.used && object.stop + 1 < data->buffer.used) {
-          after.start = after.stop = object.stop + 1;
+        if (data->main->parameters.array[fss_embedded_list_read_parameter_trim_e].result == f_console_result_none_e) {
+          if (f_fss_embedded_list_open_s.used && object.stop + 1 < data->buffer.used) {
+            after.start = after.stop = object.stop + 1;
 
-          if (data->buffer.string[after.stop] == f_fss_embedded_list_open_s.string[0]) {
-            after.start = 1;
-            after.stop = 0;
-          }
-          else {
-            while (after.stop < data->buffer.used && data->buffer.string[after.stop] != f_fss_embedded_list_open_s.string[0]) ++after.stop;
+            if (data->buffer.string[after.stop] == f_fss_embedded_list_open_s.string[0]) {
+              after.start = 1;
+              after.stop = 0;
+            }
+            else {
+              while (after.stop < data->buffer.used && data->buffer.string[after.stop] != f_fss_embedded_list_open_s.string[0]) ++after.stop;
 
-            if (after.stop == data->buffer.used || data->buffer.string[after.stop] == f_fss_embedded_list_open_s.string[0]) --after.stop;
+              if (after.stop == data->buffer.used || data->buffer.string[after.stop] == f_fss_embedded_list_open_s.string[0]) --after.stop;
+            }
           }
         }
       }
+
+      // Handle case where empty Object is empty because it has spaces and line it up with the close.
+      else if (data->main->parameters.array[fss_embedded_list_read_parameter_content_e].result == f_console_result_found_e) {
+        const f_string_range_t before = fss_embedded_list_read_print_at_determine_begin(data, object, contents);
+
+        if (before.start <= before.stop) {
+          f_print_except_dynamic_partial(data->buffer, before, objects_delimits, data->main->output.to.stream);
+        }
+      }
     }
 
     if (before.start <= before.stop) {