[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
branch master updated: Do not add empty isolated trailing spaces
From: |
Patrice Dumas |
Subject: |
branch master updated: Do not add empty isolated trailing spaces |
Date: |
Sat, 01 Oct 2022 15:32:00 -0400 |
This is an automated email from the git hooks/post-receive script.
pertusus pushed a commit to branch master
in repository texinfo.
The following commit(s) were added to refs/heads/master by this push:
new b344cf8da0 Do not add empty isolated trailing spaces
b344cf8da0 is described below
commit b344cf8da0cbfe00a0b292559620f07d0fea1a70
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Sat Oct 1 21:30:54 2022 +0200
Do not add empty isolated trailing spaces
* tp/Texinfo/ParserNonXS.pm (_isolate_trailing_space)
(_isolate_last_space, _process_remaining_on_line),
tp/Texinfo/XS/parsetexi/parser.c (isolate_trailing_space):
only add element when isolating trailing spaces if there
are indeed spaces to isolate. Modify perl parser code to
be more like XS parser code.
---
ChangeLog | 11 +++++
tp/Texinfo/ParserNonXS.pm | 50 +++++++++++-----------
tp/Texinfo/XS/parsetexi/parser.c | 19 ++++----
tp/t/results/indices/subentry_and_sortas_spaces.pl | 22 +---------
4 files changed, 49 insertions(+), 53 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 8d4dcb290a..b7d982ae15 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2022-10-01 Patrice Dumas <pertusus@free.fr>
+
+ Do not add empty isolated trailing spaces
+
+ * tp/Texinfo/ParserNonXS.pm (_isolate_trailing_space)
+ (_isolate_last_space, _process_remaining_on_line),
+ tp/Texinfo/XS/parsetexi/parser.c (isolate_trailing_space):
+ only add element when isolating trailing spaces if there
+ are indeed spaces to isolate. Modify perl parser code to
+ be more like XS parser code.
+
2022-10-01 Gavin Smith <gavinsmith0123@gmail.com>
Warn for @shortcontents in LaTeX
diff --git a/tp/Texinfo/ParserNonXS.pm b/tp/Texinfo/ParserNonXS.pm
index 3c8a0ae1d1..843c10ad76 100644
--- a/tp/Texinfo/ParserNonXS.pm
+++ b/tp/Texinfo/ParserNonXS.pm
@@ -2365,6 +2365,22 @@ sub _abort_empty_line {
return 0;
}
+sub _isolate_trailing_space($$)
+{
+ my $current = shift;
+ my $spaces_type = shift;
+
+ if ($current->{'contents'}->[-1]->{'text'} !~ /\S/) {
+ $current->{'contents'}->[-1]->{'type'} = $spaces_type;
+ } else {
+ if ($current->{'contents'}->[-1]->{'text'} =~ s/(\s+)$//) {
+ my $new_spaces = { 'text' => $1, 'parent' => $current,
+ 'type' => $spaces_type };
+ push @{$current->{'contents'}}, $new_spaces;
+ }
+ }
+}
+
# isolate last space in a command to help expansion disregard unuseful spaces.
sub _isolate_last_space
{
@@ -2393,14 +2409,7 @@ sub _isolate_last_space
or $current->{'contents'}->[-1]->{'text'} !~ /\s+$/;
if ($current->{'type'} and $current->{'type'} eq 'menu_entry_node') {
- if ($current->{'contents'}->[-1]->{'text'} !~ /\S/) {
- $current->{'contents'}->[-1]->{'type'} = 'space_at_end_menu_node';
- } else {
- $current->{'contents'}->[-1]->{'text'} =~ s/(\s+)$//;
- my $new_spaces = { 'text' => $1, 'parent' => $current,
- 'type' => 'space_at_end_menu_node' };
- push @{$current->{'contents'}}, $new_spaces;
- }
+ _isolate_trailing_space($current, 'space_at_end_menu_node');
} else {
# Store final spaces in 'spaces_after_argument'.
#$current->{'extra'} = {} if (!$current->{'extra'});
@@ -4551,24 +4560,15 @@ sub _process_remaining_on_line($$$$)
# the internal space type is not processed and remains as is in
# the final tree.
and _is_index_element($self, $current->{'parent'})) {
- $current->{'contents'}->[-1]->{'text'} =~ s/(\s+)$//;
- # an internal and temporary space type that is converted to
- # a normal space without type if followed by text or a
- # "spaces_at_end" if followed by spaces only when the
- # index or subentry command is done.
- my $space_type = 'internal_spaces_before_brace_in_index';
if ($command eq 'subentry') {
- $space_type = 'spaces_at_end';
- }
- if ($1 ne '') {
- if ($current->{'contents'}->[-1]->{'text'} eq '') {
- $current->{'contents'}->[-1]->{'text'} = $1;
- $current->{'contents'}->[-1]->{'type'} = $space_type;
- } else {
- my $new_spaces = { 'text' => $1, 'parent' => $current,
- 'type' => $space_type };
- push @{$current->{'contents'}}, $new_spaces;
- }
+ _isolate_trailing_space($current, 'spaces_at_end');
+ } else {
+ # an internal and temporary space type that is converted to
+ # a normal space without type if followed by text or a
+ # "spaces_at_end" if followed by spaces only when the
+ # index or subentry command is done.
+ _isolate_trailing_space($current,
+ 'internal_spaces_before_brace_in_index');
}
}
diff --git a/tp/Texinfo/XS/parsetexi/parser.c b/tp/Texinfo/XS/parsetexi/parser.c
index aeeed68a0e..877567dd81 100644
--- a/tp/Texinfo/XS/parsetexi/parser.c
+++ b/tp/Texinfo/XS/parsetexi/parser.c
@@ -726,14 +726,17 @@ isolate_trailing_space (ELEMENT *current, enum
element_type spaces_type)
i--)
trailing_spaces++;
- new_spaces = new_element (spaces_type);
- text_append_n (&new_spaces->text,
- text + text_len - trailing_spaces,
- trailing_spaces);
- text[text_len - trailing_spaces] = '\0';
- last_elt->text.end -= trailing_spaces;
-
- add_to_element_contents (current, new_spaces);
+ if (trailing_spaces)
+ {
+ new_spaces = new_element (spaces_type);
+ text_append_n (&new_spaces->text,
+ text + text_len - trailing_spaces,
+ trailing_spaces);
+ text[text_len - trailing_spaces] = '\0';
+ last_elt->text.end -= trailing_spaces;
+
+ add_to_element_contents (current, new_spaces);
+ }
}
}
diff --git a/tp/t/results/indices/subentry_and_sortas_spaces.pl
b/tp/t/results/indices/subentry_and_sortas_spaces.pl
index 9ad30da56a..8fa14a6849 100644
--- a/tp/t/results/indices/subentry_and_sortas_spaces.pl
+++ b/tp/t/results/indices/subentry_and_sortas_spaces.pl
@@ -363,11 +363,6 @@ $result_trees{'subentry_and_sortas_spaces'} = {
{
'parent' => {},
'text' => 'aaa'
- },
- {
- 'parent' => {},
- 'text' => '',
- 'type' => 'spaces_at_end'
}
],
'parent' => {},
@@ -417,11 +412,6 @@ $result_trees{'subentry_and_sortas_spaces'} = {
'parent' => {},
'text' => 'ccc'
},
- {
- 'parent' => {},
- 'text' => '',
- 'type' => 'spaces_at_end'
- },
{
'args' => [
{
@@ -522,11 +512,6 @@ $result_trees{'subentry_and_sortas_spaces'} = {
{
'parent' => {},
'text' => 'bbb'
- },
- {
- 'parent' => {},
- 'text' => '',
- 'type' => 'spaces_at_end'
}
],
'parent' => {},
@@ -686,7 +671,6 @@
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[3]{'extra
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[3]{'parent'}
= $result_trees{'subentry_and_sortas_spaces'}{'contents'}[4];
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[4] =
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[3]{'extra'}{'subentry'};
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'args'}[0]{'contents'}[0]{'parent'}
=
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'args'}[0];
-$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'args'}[0]{'contents'}[1]{'parent'}
=
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'args'}[0];
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'args'}[0]{'parent'}
= $result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5];
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'index_entry'}{'content_normalized'}
=
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'args'}[0]{'contents'};
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'index_entry'}{'entry_content'}
=
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'args'}[0]{'contents'};
@@ -695,10 +679,9 @@
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'}{'args'}[0]{'contents'}[0]{'parent'}
=
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'}{'args'}[0];
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'}{'args'}[0]{'parent'}
=
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'};
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'}{'extra'}{'subentry'}{'args'}[0]{'contents'}[0]{'parent'}
=
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'}{'extra'}{'subentry'}{'args'}[0];
+$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'}{'extra'}{'subentry'}{'args'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
=
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'}{'extra'}{'subentry'}{'args'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'}{'extra'}{'subentry'}{'args'}[0]{'contents'}[1]{'args'}[0]{'parent'}
=
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'}{'extra'}{'subentry'}{'args'}[0]{'contents'}[1];
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'}{'extra'}{'subentry'}{'args'}[0]{'contents'}[1]{'parent'}
=
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'}{'extra'}{'subentry'}{'args'}[0];
-$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'}{'extra'}{'subentry'}{'args'}[0]{'contents'}[2]{'args'}[0]{'contents'}[0]{'parent'}
=
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'}{'extra'}{'subentry'}{'args'}[0]{'contents'}[2]{'args'}[0];
-$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'}{'extra'}{'subentry'}{'args'}[0]{'contents'}[2]{'args'}[0]{'parent'}
=
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'}{'extra'}{'subentry'}{'args'}[0]{'contents'}[2];
-$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'}{'extra'}{'subentry'}{'args'}[0]{'contents'}[2]{'parent'}
=
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'}{'extra'}{'subentry'}{'args'}[0];
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'}{'extra'}{'subentry'}{'args'}[0]{'parent'}
=
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'}{'extra'}{'subentry'};
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'}{'extra'}{'subentry'}{'parent'}
= $result_trees{'subentry_and_sortas_spaces'}{'contents'}[4];
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[5]{'extra'}{'subentry'}{'parent'}
= $result_trees{'subentry_and_sortas_spaces'}{'contents'}[4];
@@ -712,7 +695,6 @@
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[8]{'extra
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[8]{'extra'}{'index_entry'}{'entry_element'}
= $result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[8];
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[8]{'extra'}{'index_entry'}{'entry_node'}
= $result_trees{'subentry_and_sortas_spaces'}{'contents'}[3];
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'}{'args'}[0]{'contents'}[0]{'parent'}
=
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'}{'args'}[0];
-$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'}{'args'}[0]{'contents'}[1]{'parent'}
=
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'}{'args'}[0];
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'}{'args'}[0]{'parent'}
=
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'};
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'}{'extra'}{'subentry'}{'args'}[0]{'contents'}[0]{'parent'}
=
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'}{'extra'}{'subentry'}{'args'}[0];
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'}{'extra'}{'subentry'}{'args'}[0]{'parent'}
=
$result_trees{'subentry_and_sortas_spaces'}{'contents'}[4]{'contents'}[8]{'extra'}{'subentry'}{'extra'}{'subentry'};
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- branch master updated: Do not add empty isolated trailing spaces,
Patrice Dumas <=