texinfo-commits
[Top][All Lists]
Advanced

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

[no subject]


From: Gavin D. Smith
Date: Sun, 16 Apr 2023 10:07:20 -0400 (EDT)

branch: master
commit 413a7a34c9034fe5998720fa12698ebbc745d821
Author: Gavin Smith <gavinsmith0123@gmail.com>
AuthorDate: Sat Apr 15 17:11:40 2023 +0100

    * tp/Texinfo/Convert/Plaintext.pm (_convert):
    Insert into 'current_contents' array less, rather calling
    _convert recursively on added material.  This seems more
    straightforward than modifying an array that we are iterating
    over.
---
 ChangeLog                       |  8 ++++++++
 tp/Texinfo/Convert/Plaintext.pm | 39 +++++++++++++++++++++------------------
 2 files changed, 29 insertions(+), 18 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index ce99ea3333..61b9809473 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2023-04-15  Gavin Smith <gavinsmith0123@gmail.com>
+
+       * tp/Texinfo/Convert/Plaintext.pm (_convert):
+       Insert into 'current_contents' array less, rather calling
+       _convert recursively on added material.  This seems more
+       straightforward than modifying an array that we are iterating
+       over.
+
 2023-04-15  Gavin Smith <gavinsmith0123@gmail.com>
 
        * tp/Texinfo/Convert/Plaintext.pm (_convert):
diff --git a/tp/Texinfo/Convert/Plaintext.pm b/tp/Texinfo/Convert/Plaintext.pm
index 8950a4e67f..cb0d89dd2f 100644
--- a/tp/Texinfo/Convert/Plaintext.pm
+++ b/tp/Texinfo/Convert/Plaintext.pm
@@ -2256,7 +2256,9 @@ sub _convert($$)
               # added by whether it is followed by 2 spaces (although this
               # doesn't help at the end of a line).
               push @added, {'cmdname' => ':'};
-              unshift @{$self->{'current_contents'}->[-1]}, @added;
+              for my $added_element (@added) {
+                $result .= _convert($self, $added_element);
+              }
             }
           }
 
@@ -2285,7 +2287,8 @@ sub _convert($$)
         return $result;
       } elsif ($command eq 'today') {
         my $today = $self->Texinfo::Convert::Utils::expand_today();
-        unshift @{$self->{'current_contents'}->[-1]}, $today;
+        $result .= _convert($self, $today);
+        return $result;
       } elsif (exists($brace_no_arg_commands{$command})) {
         my $text;
 
@@ -2347,30 +2350,31 @@ sub _convert($$)
               and @{$element->{'args'}->[0]->{'contents'}}) {
             $email = $element->{'args'}->[0]->{'contents'};
           }
-          my $prepended;
+          my $email_tree;
           if ($name and $email) {
-            $prepended = $self->gdt('{name} @url{{email}}',
+            $email_tree = $self->gdt('{name} @url{{email}}',
                              {'name' => $name, 'email' => $email});
           } elsif ($email) {
-            $prepended = $self->gdt('@url{{email}}',
+            $email_tree = $self->gdt('@url{{email}}',
                              {'email' => $email});
           } elsif ($name) {
-            $prepended = {'contents' => $name};
+            $email_tree = {'contents' => $name};
           } else {
             return '';
           }
-          unshift @{$self->{'current_contents'}->[-1]}, $prepended;
+          $result .= _convert($self, $email_tree);
+          return $result;
         }
         return '';
       } elsif ($command eq 'uref' or $command eq 'url') {
+        my $inserted;
         if ($element->{'args'}) {
           if (scalar(@{$element->{'args'}}) == 3
                and defined($element->{'args'}->[2])
                and $element->{'args'}->[2]->{'contents'}
                and @{$element->{'args'}->[2]->{'contents'}}) {
-            unshift @{$self->{'current_contents'}->[-1]},
-              {'type' => '_stop_upper_case',
-               'contents' => $element->{'args'}->[2]->{'contents'}};
+            $inserted = {'type' => '_stop_upper_case',
+                         'contents' => $element->{'args'}->[2]->{'contents'}};
           } elsif ($element->{'args'}->[0]->{'contents'}
                    and @{$element->{'args'}->[0]->{'contents'}}) {
             # no mangling of --- and similar in url.
@@ -2382,24 +2386,23 @@ sub _convert($$)
                and defined($element->{'args'}->[1])
                and $element->{'args'}->[1]->{'contents'}
                and @{$element->{'args'}->[1]->{'contents'}}) {
-              my $prepended = $self->gdt('{text} ({url})',
+              $inserted = $self->gdt('{text} ({url})',
                    {'text' => $element->{'args'}->[1]->{'contents'},
                     'url' => $url });
-              unshift @{$self->{'current_contents'}->[-1]}, $prepended;
             } else {
-              my $prepended = $self->gdt('@t{<{url}>}',
-                                          {'url' => $url});
-              unshift @{$self->{'current_contents'}->[-1]}, $prepended
+              $inserted = $self->gdt('@t{<{url}>}', {'url' => $url});
             }
           } elsif (scalar(@{$element->{'args'}}) == 2
                    and defined($element->{'args'}->[1])
                    and $element->{'args'}->[1]->{'contents'}
                    and @{$element->{'args'}->[1]->{'contents'}}) {
-            unshift @{$self->{'current_contents'}->[-1]},
-              {'contents' => $element->{'args'}->[1]->{'contents'}};
+            $inserted = {'contents' => $element->{'args'}->[1]->{'contents'}};
           }
         }
-        return '';
+        if ($inserted) {
+          $result .= _convert($self, $inserted);
+        }
+        return $result;
       } elsif ($command eq 'footnote') {
         $self->{'footnote_index'}++ unless ($self->{'multiple_pass'});
         my $formatted_footnote_number;



reply via email to

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