texinfo-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[6820] parsetexi remove_empty_content_arguments


From: Gavin D. Smith
Subject: [6820] parsetexi remove_empty_content_arguments
Date: Tue, 01 Dec 2015 12:05:12 +0000

Revision: 6820
          http://svn.sv.gnu.org/viewvc/?view=rev&root=texinfo&revision=6820
Author:   gavin
Date:     2015-12-01 12:05:09 +0000 (Tue, 01 Dec 2015)
Log Message:
-----------
parsetexi remove_empty_content_arguments

Modified Paths:
--------------
    trunk/parsetexi/ChangeLog
    trunk/parsetexi/end_line.c
    trunk/parsetexi/parser.h
    trunk/parsetexi/separator.c

Modified: trunk/parsetexi/ChangeLog
===================================================================
--- trunk/parsetexi/ChangeLog   2015-12-01 11:30:16 UTC (rev 6819)
+++ trunk/parsetexi/ChangeLog   2015-12-01 12:05:09 UTC (rev 6820)
@@ -1,5 +1,9 @@
 2015-12-01  Gavin Smith  <address@hidden>
 
+       * separator.c (remove_empty_content_arguments): Implement.
+
+2015-12-01  Gavin Smith  <address@hidden>
+
        * api.c (parse_text): Use new function input_push_text_with_line_nos
        to keep track of line numbers (for tests).
 

Modified: trunk/parsetexi/end_line.c
===================================================================
--- trunk/parsetexi/end_line.c  2015-12-01 11:30:16 UTC (rev 6819)
+++ trunk/parsetexi/end_line.c  2015-12-01 12:05:09 UTC (rev 6820)
@@ -864,6 +864,7 @@
       // TODO: Free lists?
       current->args.number = 0;
     }
+  remove_empty_content_arguments (current);
 
   if (command_flags(current) & CF_blockitem) // 2981
     {

Modified: trunk/parsetexi/parser.h
===================================================================
--- trunk/parsetexi/parser.h    2015-12-01 11:30:16 UTC (rev 6819)
+++ trunk/parsetexi/parser.h    2015-12-01 12:05:09 UTC (rev 6820)
@@ -29,6 +29,7 @@
 void register_command_arg (ELEMENT *current, char *key);
 ELEMENT *handle_separator (ELEMENT *current, char separator,
                            char **line_inout);
+void remove_empty_content_arguments (ELEMENT *current);
 
 /* In parser.c */
 ELEMENT *parse_texi (ELEMENT *root_elt);

Modified: trunk/parsetexi/separator.c
===================================================================
--- trunk/parsetexi/separator.c 2015-12-01 11:30:16 UTC (rev 6819)
+++ trunk/parsetexi/separator.c 2015-12-01 12:05:09 UTC (rev 6820)
@@ -295,6 +295,32 @@
   return current;
 }
 
+// 2577
+/* Remove 'brace_command_contents' or 'block_command_line_contents'
+   extra value if empty.
+   TODO: If not empty, remove empty elements thereof. */
+void
+remove_empty_content_arguments (ELEMENT *current)
+{
+  KEY_PAIR *k;
+
+  k = lookup_extra_key (current, "block_command_line_contents");
+  if (!k)
+    k = lookup_extra_key (current, "brace_command_contents");
+  if (!k)
+    return;
+
+  while (k->value->contents.number > 0
+         && last_contents_child(k->value)->contents.number == 0)
+    destroy_element (pop_element_from_contents (k->value));
+
+  if (k->value->contents.number == 0)
+    {
+      k->type = extra_deleted;
+    }
+}
+
+
 /* Handle a comma separating arguments to a Texinfo command. */
 /* 5228 */
 ELEMENT *
@@ -314,7 +340,7 @@
       // 5033
       isolate_last_space (current, 0);
       register_command_arg (current, "brace_command_contents");
-      //remove_empty_content_arguments ();
+      remove_empty_content_arguments (current);
     }
   else
     {




reply via email to

[Prev in Thread] Current Thread [Next in Thread]