texinfo-commits
[Top][All Lists]
Advanced

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

[7445] parsetexi update


From: gavinsmith0123
Subject: [7445] parsetexi update
Date: Sun, 9 Oct 2016 16:13:45 +0000 (UTC)

Revision: 7445
          http://svn.sv.gnu.org/viewvc/?view=rev&root=texinfo&revision=7445
Author:   gavin
Date:     2016-10-09 16:13:45 +0000 (Sun, 09 Oct 2016)
Log Message:
-----------
parsetexi update

Modified Paths:
--------------
    trunk/tp/parsetexi/def.c
    trunk/tp/parsetexi/element_types.c
    trunk/tp/parsetexi/element_types.h
    trunk/tp/parsetexi/element_types.txt
    trunk/tp/parsetexi/end_line.c

Modified: trunk/tp/parsetexi/def.c
===================================================================
--- trunk/tp/parsetexi/def.c    2016-10-09 16:07:00 UTC (rev 7444)
+++ trunk/tp/parsetexi/def.c    2016-10-09 16:13:45 UTC (rev 7445)
@@ -121,18 +121,12 @@
   if (e->contents.list[0]->type == ET_bracketed)
     {
       ELEMENT *bracketed = remove_from_contents (e, 0);
-      ELEMENT *returned = new_element (ET_bracketed_def_content);
-      KEY_PAIR *k;
 
-      isolate_last_space (bracketed, ET_empty_space_at_end_def_bracketed);
+      bracketed->type = ET_bracketed_def_content;
 
-      returned->contents = bracketed->contents;
-      returned->parent_type = route_not_in_tree;
-      k = lookup_extra_key (bracketed, "spaces_before_argument");
-      if (k)
-        add_extra_element (returned, "spaces_before_argument", k->value);
+      isolate_last_space (bracketed, 0);
 
-      return returned;
+      return bracketed;
     }
   else if (e->contents.list[0]->cmd != CM_NONE) // 2363
     {
@@ -222,7 +216,7 @@
 {
   /* The return value - suitable for "def_args" extra value. */
   DEF_ARGS_EXTRA *def_args;
-  int i;
+  int i, args_start;
 
   ELEMENT *arg_line; /* Copy of argument line. */
   ELEMENT *arg, *spaces; /* Arguments and spaces extracted from line. */
@@ -295,6 +289,7 @@
           e = new_element (ET_NONE);
           text_append (&e->text, category);
           insert_into_contents (arg_line, e, 0);
+          e->parent = 0;
           e->parent_type = route_not_in_tree;
         }
       else
@@ -302,6 +297,7 @@
           /* Used when category text has a space in it. */
           e = new_element (ET_bracketed);
           insert_into_contents (arg_line, e, 0);
+          e->parent = 0;
           e->parent_type = route_not_in_tree;
           e1 = new_element (ET_NONE);
           text_append_n (&e1->text, category + 1, strlen (category) - 2);
@@ -363,6 +359,8 @@
   add_to_def_args_extra (def_args, "name", arg);
 
   /* ARGUMENTS */
+
+  args_start = def_args->nelements;
   // 2441
   while (arg_line->contents.number > 0)
     {
@@ -395,9 +393,8 @@
               if (len == 0)
                 break;
 
-              e = new_element (ET_NONE);
+              e = new_element (ET_delimiter);
               e->parent_type = route_not_in_tree;
-              // e = new_element (ET_delimiter); //TODO : No such type
               text_append_n (&e->text, p, len);
               add_to_def_args_extra (def_args, "delimiter", e);
               p += len;
@@ -412,11 +409,34 @@
 
 
   // 2460 - argtype
-  /* TODO: Change some of the left sides to 'typearg'.
-     What's the difference between this and type? */
+  /* Change some of the left sides to 'typearg'.  This matters for
+     the DocBook output. */
   if (command == CM_deftypefn || command == CM_deftypeop
       || command == CM_deftp)
     {
+      int i, next_is_type = 1;
+      for (i = args_start; i < def_args->nelements; i++)
+        {
+          if (!strcmp ("spaces", def_args->labels[i]))
+            {
+            }
+          else if (!strcmp ("delimiter", def_args->labels[i]))
+            {
+              next_is_type = 1;
+            }
+          else if (def_args->elements[i]->cmd
+                   && def_args->elements[i]->cmd != CM_code)
+            {
+              next_is_type = 1;
+            }
+          else if (next_is_type)
+            {
+              def_args->labels[i] = "typearg";
+              next_is_type = 0;
+            }
+          else
+            next_is_type = 0;
+        }
     }
 
   destroy_element (arg_line);

Modified: trunk/tp/parsetexi/element_types.c
===================================================================
--- trunk/tp/parsetexi/element_types.c  2016-10-09 16:07:00 UTC (rev 7444)
+++ trunk/tp/parsetexi/element_types.c  2016-10-09 16:13:45 UTC (rev 7445)
@@ -60,5 +60,6 @@
 "row_prototype",
 "elided",
 "elided_block",
+"delimiter",
 
 };

Modified: trunk/tp/parsetexi/element_types.h
===================================================================
--- trunk/tp/parsetexi/element_types.h  2016-10-09 16:07:00 UTC (rev 7444)
+++ trunk/tp/parsetexi/element_types.h  2016-10-09 16:13:45 UTC (rev 7445)
@@ -61,6 +61,7 @@
 ET_row_prototype,
 ET_elided,
 ET_elided_block,
+ET_delimiter,
 };
 
 extern char *element_type_names[];

Modified: trunk/tp/parsetexi/element_types.txt
===================================================================
--- trunk/tp/parsetexi/element_types.txt        2016-10-09 16:07:00 UTC (rev 
7444)
+++ trunk/tp/parsetexi/element_types.txt        2016-10-09 16:13:45 UTC (rev 
7445)
@@ -88,3 +88,6 @@
 elided
 elided_block
 
+# for def commands
+delimiter
+

Modified: trunk/tp/parsetexi/end_line.c
===================================================================
--- trunk/tp/parsetexi/end_line.c       2016-10-09 16:07:00 UTC (rev 7444)
+++ trunk/tp/parsetexi/end_line.c       2016-10-09 16:13:45 UTC (rev 7445)
@@ -2119,8 +2119,46 @@
           if (index_entry) // 2822
             {
               ELEMENT *index_contents = new_element (ET_NONE);
+              ELEMENT *e;
+
+              // 2824
+              if (class)
+                {
+                  if (def_command == CM_defop
+                      || def_command == CM_deftypeop
+                      || def_command == CM_defmethod
+                      || def_command == CM_deftypemethod)
+                    {
+                      /* NAME on CLASS */
+
+                      add_to_contents_as_array (index_contents, name);
+
+                      e = new_element (ET_NONE);
+                      /* TODO should translate this */
+                      text_append (&e->text, " on ");
+                      add_to_contents_as_array (index_contents, e);
+
+                      add_to_contents_as_array (index_contents, class);
+                    }
+                  else if (def_command == CM_defivar
+                           || def_command == CM_deftypeivar)
+                    {
+                      /* NAME of CLASS */
+                      add_to_contents_as_array (index_contents, name);
+
+                      e = new_element (ET_NONE);
+                      /* TODO should translate this */
+                      text_append (&e->text, " of ");
+                      add_to_contents_as_array (index_contents, e);
+
+                      add_to_contents_as_array (index_contents, class);
+                    }
+                }
               index_contents->parent_type = route_not_in_tree;
-              add_to_contents_as_array (index_contents, index_entry);
+
+              if (index_contents->contents.number == 0)
+                add_to_contents_as_array (index_contents, index_entry);
+
               enter_index_entry (def_command,
                                  original_def_command,
                                  current->parent,




reply via email to

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