texinfo-commits
[Top][All Lists]
Advanced

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

[7509] parsetexi check_node_label


From: gavinsmith0123
Subject: [7509] parsetexi check_node_label
Date: Sun, 13 Nov 2016 19:35:33 +0000 (UTC)

Revision: 7509
          http://svn.sv.gnu.org/viewvc/?view=rev&root=texinfo&revision=7509
Author:   gavin
Date:     2016-11-13 19:35:32 +0000 (Sun, 13 Nov 2016)
Log Message:
-----------
parsetexi check_node_label

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

Modified: trunk/tp/parsetexi/convert.c
===================================================================
--- trunk/tp/parsetexi/convert.c        2016-11-13 18:45:19 UTC (rev 7508)
+++ trunk/tp/parsetexi/convert.c        2016-11-13 19:35:32 UTC (rev 7509)
@@ -30,6 +30,30 @@
 
 #define ADD(x) text_append (result, x)
 
+char *
+node_extra_to_texi (NODE_SPEC_EXTRA *nse)
+{
+  TEXT result;
+
+  if (!nse)
+    return "";
+  text_init (&result);
+
+  if (nse->manual_content
+      && nse->manual_content->contents.number > 0)
+    {
+      text_append_n (&result, "(", 1);
+      convert_to_texinfo_internal (nse->manual_content, &result);
+      text_append_n (&result, ")", 1);
+    }
+  if (nse->node_content
+      && nse->node_content->contents.number > 0)
+    {
+      convert_to_texinfo_internal (nse->node_content, &result);
+    }
+  return result.text;
+}
+
 static void
 expand_cmd_args_to_texi (ELEMENT *e, TEXT *result)
 {

Modified: trunk/tp/parsetexi/convert.h
===================================================================
--- trunk/tp/parsetexi/convert.h        2016-11-13 18:45:19 UTC (rev 7508)
+++ trunk/tp/parsetexi/convert.h        2016-11-13 19:35:32 UTC (rev 7509)
@@ -1,2 +1,3 @@
 char *convert_to_texinfo (ELEMENT *e);
 char *convert_to_text (ELEMENT *e, int *superfluous_arg);
+char *node_extra_to_texi (NODE_SPEC_EXTRA *nse);

Modified: trunk/tp/parsetexi/end_line.c
===================================================================
--- trunk/tp/parsetexi/end_line.c       2016-11-13 18:45:19 UTC (rev 7508)
+++ trunk/tp/parsetexi/end_line.c       2016-11-13 19:35:32 UTC (rev 7509)
@@ -28,6 +28,37 @@
 #include "indices.h"
 #include "errors.h"
 
+void
+check_internal_node (NODE_SPEC_EXTRA *nse)
+{
+  if (nse && nse->manual_content
+      && nse->manual_content->contents.number > 0)
+    {
+      line_error ("syntax for an external node used for `%s'",
+                  node_extra_to_texi (nse));
+    }
+}
+
+int
+check_empty_node (NODE_SPEC_EXTRA *nse,
+                  enum command_id cmd)
+{
+  if (!nse || !nse->node_content || nse->node_content->contents.number == 0)
+    {
+      line_error ("empty argument in @%s", command_name(cmd));
+    }
+  else
+    return 1;
+}
+
+int
+check_node_label (NODE_SPEC_EXTRA *nse,
+                  enum command_id cmd)
+{
+  check_internal_node (nse);
+  return check_empty_node (nse, cmd);
+}
+
 static int
 is_decimal_number (char *string)
 {
@@ -1048,7 +1079,7 @@
               // 2950
               NODE_SPEC_EXTRA *float_label;
               float_label = parse_node_manual (args_child_by_index (f, 1));
-              // TODO check_internal_node
+              check_internal_node (float_label);
 
               register_label (f, float_label);
             }
@@ -1630,19 +1661,12 @@
 
       add_extra_node_spec_array (current, "nodes_manuals", nodes_manuals);
 
-      /*Check that the node name doesn't have a filename element for referring 
-        to an external manual (_check_internal_node), and that it is not empty 
-        (_check_empty_node).  */
-      //check_node_label ();
+      check_internal_node (nodes_manuals[0]);
 
       if (nodes_manuals[0])
         {
           add_extra_contents (current, "node_content",
                               nodes_manuals[0]->node_content);
-
-          /* This sets 'node_content' and 'normalized' on the node, among
-             other things (which were already set in parse_node_manual).
-             Are we normalizing the name twice? */
           register_label (current, nodes_manuals[0]);
         }
 

Modified: trunk/tp/parsetexi/parser.h
===================================================================
--- trunk/tp/parsetexi/parser.h 2016-11-13 18:45:19 UTC (rev 7508)
+++ trunk/tp/parsetexi/parser.h 2016-11-13 19:35:32 UTC (rev 7509)
@@ -25,6 +25,7 @@
 NODE_SPEC_EXTRA *parse_node_manual (ELEMENT *node);
 ELEMENT *end_line (ELEMENT *current);
 ELEMENT *parse_special_misc_command (char *line, enum command_id cmd);
+int check_node_label (NODE_SPEC_EXTRA *nse, enum command_id cmd);
 
 typedef struct {
     char *type;

Modified: trunk/tp/parsetexi/separator.c
===================================================================
--- trunk/tp/parsetexi/separator.c      2016-11-13 18:45:19 UTC (rev 7508)
+++ trunk/tp/parsetexi/separator.c      2016-11-13 19:35:32 UTC (rev 7509)
@@ -293,7 +293,7 @@
           NODE_SPEC_EXTRA *parsed_anchor;
           current->parent->line_nr = line_nr;
           parsed_anchor = parse_node_manual (current);
-          if (1) // TODO check_node_label ()
+          if (check_node_label (parsed_anchor, CM_anchor))
             {
               register_label (current->parent, parsed_anchor);
               if (current_region ())




reply via email to

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