[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[8182] parsetexi update
From: |
gavinsmith0123 |
Subject: |
[8182] parsetexi update |
Date: |
Fri, 21 Sep 2018 05:58:59 -0400 (EDT) |
Revision: 8182
http://svn.sv.gnu.org/viewvc/?view=rev&root=texinfo&revision=8182
Author: gavin
Date: 2018-09-21 05:58:58 -0400 (Fri, 21 Sep 2018)
Log Message:
-----------
parsetexi update
Modified Paths:
--------------
trunk/tp/Texinfo/XS/parsetexi/extra.c
trunk/tp/Texinfo/XS/parsetexi/handle_commands.c
trunk/tp/Texinfo/XS/parsetexi/parser.c
trunk/tp/Texinfo/XS/parsetexi/parser.h
trunk/tp/Texinfo/XS/parsetexi/separator.c
Modified: trunk/tp/Texinfo/XS/parsetexi/extra.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/extra.c 2018-09-19 19:43:06 UTC (rev
8181)
+++ trunk/tp/Texinfo/XS/parsetexi/extra.c 2018-09-21 09:58:58 UTC (rev
8182)
@@ -45,6 +45,18 @@
e->extra[i].type = type;
}
+void
+delete_extra (ELEMENT *e, char *key)
+{
+ KEY_PAIR *k = lookup_extra (e, key);
+ if (k)
+ {
+ k->key = "";
+ k->value = 0; /* should really free this */
+ k->type = extra_deleted;
+ }
+}
+
/* Add an extra key that is a reference to another element (for example,
'associated_section' on a node command element. */
void
Modified: trunk/tp/Texinfo/XS/parsetexi/handle_commands.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/handle_commands.c 2018-09-19 19:43:06 UTC
(rev 8181)
+++ trunk/tp/Texinfo/XS/parsetexi/handle_commands.c 2018-09-21 09:58:58 UTC
(rev 8182)
@@ -344,7 +344,6 @@
{
char *arg = 0;
ELEMENT *misc_line_args;
- ELEMENT *spaces_after_command;
ELEMENT *e;
if (cmd == CM_set)
@@ -370,13 +369,8 @@
add_to_element_args (misc, misc_line_args);
add_extra_misc_args (misc, "misc_args", args);
- spaces_after_command = new_element (ET_empty_spaces_after_command);
- text_append_n (&spaces_after_command->text, " ", 1);
- add_extra_element (misc, "spaces_after_command",
- spaces_after_command);
+ add_extra_string_dup (misc, "spaces_before_argument", " ");
- add_to_element_contents (misc_line_args, spaces_after_command);
-
e = new_element (ET_NONE);
text_append (&e->text, arg);
add_to_element_contents (misc_line_args, e);
Modified: trunk/tp/Texinfo/XS/parsetexi/parser.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/parser.c 2018-09-19 19:43:06 UTC (rev
8181)
+++ trunk/tp/Texinfo/XS/parsetexi/parser.c 2018-09-21 09:58:58 UTC (rev
8182)
@@ -423,48 +423,14 @@
|| last_child->type == ET_empty_spaces_after_close_brace))
{
ELEMENT *owning_element = 0, *e;
- KEY_PAIR *owning_keypair = 0, *k;
-
- e = current;
- if (current)
- {
- k = lookup_extra (current, "spaces_before_argument_elt");
- if (k && k->value == last_contents_child (current))
- goto owning_element_found;
- }
+ KEY_PAIR *k;
- e = current->parent;
- if (current->parent)
+ k = lookup_extra (last_child, "command");
+ if (k)
{
- k = lookup_extra (current->parent,
- "spaces_before_argument_elt");
- if (k && k->value == last_contents_child (current))
- goto owning_element_found;
+ owning_element = (ELEMENT *) k->value;
}
- e = current;
- if (current)
- {
- k = lookup_extra (current, "spaces_after_command");
- if (k && k->value == last_contents_child (current))
- goto owning_element_found;
- }
-
- e = current->parent;
- if (current->parent)
- {
- k = lookup_extra (current->parent, "spaces_after_command");
- if (k && k->value == last_contents_child (current))
- goto owning_element_found;
- }
-
- if (0)
- {
-owning_element_found:
- owning_element = e;
- owning_keypair = k;
- }
-
debug ("ABORT EMPTY %s additional text |%s| "
"current |%s|",
element_type_name(last_child),
@@ -478,39 +444,35 @@
e = pop_element_from_contents (current);
destroy_element (e);
/* TODO: Maybe we could avoid adding it in the first place? */
-
- if (owning_keypair)
+ if (owning_element)
{
- owning_keypair->key = "";
- owning_keypair->value = 0;
- owning_keypair->type = extra_deleted;
+ delete_extra (owning_element, "spaces_before_argument_elt");
+ delete_extra (owning_element, "spaces_after_command_elt");
}
}
- else if (last_child->type == ET_empty_line) //2132
+ else if (last_child->type == ET_empty_line)
{
last_child->type = begin_paragraph_p (current)
? ET_empty_spaces_before_paragraph : ET_NONE;
}
- else if (last_child->type == ET_empty_line_after_command)
+ else if (last_child->type == ET_empty_line_after_command
+ || last_child->type == ET_empty_spaces_before_argument)
{
- last_child->type = ET_empty_spaces_after_command;
- }
- else if (last_child->type == ET_empty_spaces_before_argument)
- {
- /* Remove element from main tree. */
- ELEMENT *e = pop_element_from_contents (current);
-
- if (owning_keypair)
+ if (owning_element)
{
- /* Replace element reference with a simple string. */
+ /* Remove element from main tree. */
+ ELEMENT *e = pop_element_from_contents (current);
add_extra_string_dup (owning_element, "spaces_before_argument",
- owning_keypair->value->text.text);
-
- owning_keypair->key = "";
- owning_keypair->value = 0;
- owning_keypair->type = extra_deleted;
+ e->text.text);
+ destroy_element (e);
+ delete_extra (owning_element, "spaces_before_argument_elt");
+ delete_extra (owning_element, "spaces_after_command_elt");
}
- destroy_element (e);
+ else
+ {
+ last_child->type = ET_empty_spaces_after_command;
+ abort ();
+ }
}
retval = 1;
}
@@ -622,7 +584,7 @@
if (last_contents_child(current)->cmd == CM_c
|| last_contents_child(current)->cmd == CM_comment)
{
- add_extra_element_oot (current->parent, "spaces_after_argument",
+ add_extra_element_oot (current->parent, "comment_at_end",
pop_element_from_contents (current));
}
@@ -702,7 +664,8 @@
if (command)
{
- add_extra_element (command, "spaces_after_command", e);
+ add_extra_element (command, "spaces_after_command_elt", e);
+ add_extra_element (e, "command", command);
}
*line_inout = line;
Modified: trunk/tp/Texinfo/XS/parsetexi/parser.h
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/parser.h 2018-09-19 19:43:06 UTC (rev
8181)
+++ trunk/tp/Texinfo/XS/parsetexi/parser.h 2018-09-21 09:58:58 UTC (rev
8182)
@@ -113,6 +113,7 @@
void add_extra_string (ELEMENT *e, char *key, char *value);
void add_extra_string_dup (ELEMENT *e, char *key, char *value);
KEY_PAIR *lookup_extra (ELEMENT *e, char *key);
+void delete_extra (ELEMENT *e, char *key);
/* In menus.c */
int handle_menu (ELEMENT **current_inout, char **line_inout);
Modified: trunk/tp/Texinfo/XS/parsetexi/separator.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/separator.c 2018-09-19 19:43:06 UTC (rev
8181)
+++ trunk/tp/Texinfo/XS/parsetexi/separator.c 2018-09-21 09:58:58 UTC (rev
8182)
@@ -170,6 +170,7 @@
add_to_element_contents (current, e);
add_extra_element (current->parent,
"spaces_before_argument_elt", e);
+ add_extra_element (e, "command", current);
line += n;
}
current->type = ET_brace_command_context;
@@ -190,6 +191,7 @@
text_append (&e->text, "");
add_to_element_contents (current, e);
add_extra_element (current, "spaces_before_argument_elt", e);
+ add_extra_element (e, "command", current);
if (command == CM_inlineraw)
push_context (ct_inlineraw);
@@ -217,6 +219,7 @@
add_to_element_contents (current, e);
debug ("BRACKETED in def/multitable");
add_extra_element (current, "spaces_before_argument_elt", e);
+ add_extra_element (e, "command", current);
}
else if (current->type == ET_rawpreformatted)
{
@@ -814,6 +817,7 @@
text_append (&e->text, ""); /* See comment in parser.c:merge_text */
add_to_element_contents (current, e);
add_extra_element (current, "spaces_before_argument_elt", e);
+ add_extra_element (e, "command", current);
funexit:
*line_inout = line;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [8182] parsetexi update,
gavinsmith0123 <=