texinfo-commits
[Top][All Lists]
Advanced

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

[8049] parsetexi update


From: gavinsmith0123
Subject: [8049] parsetexi update
Date: Sun, 12 Aug 2018 17:12:11 -0400 (EDT)

Revision: 8049
          http://svn.sv.gnu.org/viewvc/?view=rev&root=texinfo&revision=8049
Author:   gavin
Date:     2018-08-12 17:12:11 -0400 (Sun, 12 Aug 2018)
Log Message:
-----------
parsetexi update

Modified Paths:
--------------
    trunk/tp/parsetexi/Parsetexi.pm

Modified: trunk/tp/parsetexi/Parsetexi.pm
===================================================================
--- trunk/tp/parsetexi/Parsetexi.pm     2018-08-12 20:46:09 UTC (rev 8048)
+++ trunk/tp/parsetexi/Parsetexi.pm     2018-08-12 21:12:11 UTC (rev 8049)
@@ -103,6 +103,38 @@
   return $struct;
 }
 
+my %tree_informations;
+foreach my $tree_information ('values', 'macros', 'explained_commands', 
'labels') {
+  $tree_informations{$tree_information} = 1;
+}
+
+use Storable qw(dclone); # standard in 5.007003
+
+sub duplicate_parser {
+  my $old_parser = shift;
+
+  my $parser = dclone(\%parser_default_configuration);
+
+  foreach my $key (keys(%parser_default_configuration)) {
+    if ($tree_informations{$key}) {
+      if (defined($old_parser->{$key})) {
+        foreach my $info_key (keys(%{$old_parser->{$key}})) {
+          $parser->{$key}->{$info_key}
+          = $old_parser->{$key}->{$info_key};
+        }
+      }
+    } elsif(ref($old_parser->{$key})) {
+      $parser->{$key} = dclone($old_parser->{$key});
+    } else {
+      $parser->{$key} = $old_parser->{$key};
+    }
+  }
+  bless $parser, ref($old_parser);
+
+  $parser->Texinfo::Report::new;
+  return $parser;
+}
+
 # Stub for Texinfo::Parser::parser (line 574)
 sub parser (;$$)
 {
@@ -136,14 +168,11 @@
 
   my $parser = _deep_copy(\%parser_default_configuration);
 
-  $parser->{'gettext'} = $parser_default_configuration{'gettext'};
-  $parser->{'pgettext'} = $parser_default_configuration{'pgettext'};
-
   reset_parser ();
   # fixme: these are overwritten immediately after
   if (defined($conf)) {
     foreach my $key (keys (%$conf)) {
-      if (ref($conf->{$key}) ne 'CODE' and $key ne 'values') {
+      if ($key ne 'values') {
         $parser->{$key} = _deep_copy($conf->{$key});
       } else {
         #warn "key is $key";
@@ -478,7 +507,7 @@
         my $normalized = 
Texinfo::Convert::NodeNameNormalization::normalize_node({'contents' => 
$target->{'extra'}->{'node_content'}});
 
         if ($normalized !~ /[^-]/) {
-          $self->line_error (sprintf($self->__("empty node name after 
expansion `%s'"),
+          $self->line_error (sprintf(__("empty node name after expansion 
`%s'"),
                 Texinfo::Convert::Texinfo::convert({'contents' 
                                => $target->{'extra'}->{'node_content'}})), 
                 $target->{'line_nr'});
@@ -486,13 +515,13 @@
         } else {
           if (defined $labels{$normalized}) {
             $self->line_error(
-              sprintf($self->__("address@hidden `%s' previously defined"), 
+              sprintf(__("address@hidden `%s' previously defined"), 
                          $target->{'cmdname'}, 
                    Texinfo::Convert::Texinfo::convert({'contents' => 
                        $target->{'extra'}->{'node_content'}})), 
                            $target->{'line_nr'});
             $self->line_error(
-              sprintf($self->__("here is the previous definition as 
address@hidden"),
+              sprintf(__("here is the previous definition as address@hidden"),
                                $labels{$normalized}->{'cmdname'}),
                        $labels{$normalized}->{'line_nr'});
             delete $target->{'extra'}->{'node_content'};
@@ -511,7 +540,7 @@
         }
       } else {
         if ($target->{'cmdname'} eq 'node') {
-          $self->line_error (sprintf($self->__("empty argument in 
address@hidden"),
+          $self->line_error (sprintf(__("empty argument in address@hidden"),
                   $target->{'cmdname'}), $target->{'line_nr'});
           delete $target->{'extra'}->{'node_content'};
         }




reply via email to

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