texinfo-commits
[Top][All Lists]
Advanced

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

[7377] parsetexi update


From: gavinsmith0123
Subject: [7377] parsetexi update
Date: Mon, 19 Sep 2016 10:37:51 +0000 (UTC)

Revision: 7377
          http://svn.sv.gnu.org/viewvc/?view=rev&root=texinfo&revision=7377
Author:   gavin
Date:     2016-09-19 10:37:50 +0000 (Mon, 19 Sep 2016)
Log Message:
-----------
parsetexi update

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

Modified: trunk/tp/parsetexi/convert.c
===================================================================
--- trunk/tp/parsetexi/convert.c        2016-09-19 10:12:01 UTC (rev 7376)
+++ trunk/tp/parsetexi/convert.c        2016-09-19 10:37:50 UTC (rev 7377)
@@ -21,13 +21,14 @@
 
 #include "parser.h"
 #include "text.h"
+#include "convert.h"
 
-#define ADD(x) text_append (result, x)
 
 static void expand_cmd_args_to_texi (ELEMENT *e, TEXT *result);
 static void convert_to_texinfo_internal (ELEMENT *e, TEXT *result);
 
 
+#define ADD(x) text_append (result, x)
 
 static void
 expand_cmd_args_to_texi (ELEMENT *e, TEXT *result)
@@ -122,6 +123,38 @@
   return result.text;
 }
 
+/* Very stripped-down version of Texinfo::Convert::Text.
+   Convert the contents of E to plain text.  Suitable for specifying a file
+   name containing an at sign or braces.  Set *SUPERFLUOUS_ARG if the contents
+   of E are too complicated to convert properly. */
+char *
+convert_to_text (ELEMENT *e, int *superfluous_arg)
+{
+#define ADD(x) text_append (&result, x)
+
+  TEXT result; int i;
+
+  if (!e)
+    return "";
+  text_init (&result);
+  for (i = 0; i < e->contents.number; i++)
+    {
+      ELEMENT *e1 = contents_child_by_index (e, i);
+      if (e1->text.end > 0)
+        ADD(e1->text.text);
+      else if (e1->cmd == CM_AT_SIGN)
+        ADD("@");
+      else if (e1->cmd == CM_OPEN_BRACE)
+        ADD("{");
+      else if (e1->cmd == CM_CLOSE_BRACE)
+        ADD("}");
+      else
+        *superfluous_arg = 1;
+    }
+  return result.text;
+}
+#undef ADD
+
 /* Produce normalized node name recursively.  IN_UC is non-zero if we are 
    converting to upper case.  */
 static void

Modified: trunk/tp/parsetexi/convert.h
===================================================================
--- trunk/tp/parsetexi/convert.h        2016-09-19 10:12:01 UTC (rev 7376)
+++ trunk/tp/parsetexi/convert.h        2016-09-19 10:37:50 UTC (rev 7377)
@@ -1,2 +1,3 @@
 char *convert_to_normalized (ELEMENT *label);
 char *convert_to_texinfo (ELEMENT *e);
+char *convert_to_text (ELEMENT *e, int *superfluous_arg);

Modified: trunk/tp/parsetexi/end_line.c
===================================================================
--- trunk/tp/parsetexi/end_line.c       2016-09-19 10:12:01 UTC (rev 7376)
+++ trunk/tp/parsetexi/end_line.c       2016-09-19 10:37:50 UTC (rev 7377)
@@ -1332,8 +1332,7 @@
                   && !trimmed->contents.list[0]->text.text))
             superfluous_arg = 1;
 
-          if (trimmed->contents.number > 0)
-            text = trimmed->contents.list[0]->text.text;
+          text = convert_to_text (trimmed, &superfluous_arg);
         }
 
       if (!text)




reply via email to

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