texinfo-commits
[Top][All Lists]
Advanced

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

[5272] * Texinfo/Parser.pm: keep form-feed in macro arguments.


From: Patrice Dumas
Subject: [5272] * Texinfo/Parser.pm: keep form-feed in macro arguments.
Date: Sun, 04 Aug 2013 19:10:23 +0000

Revision: 5272
          http://svn.sv.gnu.org/viewvc/?view=rev&root=texinfo&revision=5272
Author:   pertusus
Date:     2013-08-04 19:10:22 +0000 (Sun, 04 Aug 2013)
Log Message:
-----------
        * Texinfo/Parser.pm: keep form-feed in macro arguments.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/tp/DebugTexinfo/DebugTree.pm
    trunk/tp/Texinfo/Parser.pm
    trunk/tp/t/60macro.t

Added Paths:
-----------
    trunk/tp/t/input_files/macros_form_feed.texi
    trunk/tp/t/results/macro/form_feeds.pl

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog     2013-08-03 16:24:46 UTC (rev 5271)
+++ trunk/ChangeLog     2013-08-04 19:10:22 UTC (rev 5272)
@@ -1,6 +1,10 @@
+2013-08-04  Patrice Dumas  <address@hidden>
+
+       * Texinfo/Parser.pm: keep form-feed in macro arguments.
+
 2013-07-29  Patrice Dumas  <address@hidden>
 
-       * tp/Common.pm (enumerate_item_representation), Texinfo/Parser.pm:
+       * Texinfo//Common.pm (enumerate_item_representation), Texinfo/Parser.pm:
        handle correctly @enumerate specification greater than 10.  Report
        from Dmitry Shachnev.
 

Modified: trunk/tp/DebugTexinfo/DebugTree.pm
===================================================================
--- trunk/tp/DebugTexinfo/DebugTree.pm  2013-08-03 16:24:46 UTC (rev 5271)
+++ trunk/tp/DebugTexinfo/DebugTree.pm  2013-08-04 19:10:22 UTC (rev 5272)
@@ -129,6 +129,7 @@
   if (defined($root->{'text'})) {
     my $text = $root->{'text'};
     $text =~ s/\n/\\n/g;
+    $text =~ s/\f/\\f/g;
     $result .= "|$text|";
   }
   $result .= "\n";

Modified: trunk/tp/Texinfo/Parser.pm
===================================================================
--- trunk/tp/Texinfo/Parser.pm  2013-08-03 16:24:46 UTC (rev 5271)
+++ trunk/tp/Texinfo/Parser.pm  2013-08-04 19:10:22 UTC (rev 5272)
@@ -2008,7 +2008,7 @@
         if ($braces_level == 1) {
           if (scalar(@$arguments) < $args_total) {
             push @$arguments, '';
-            $line =~ s/^\s*//;
+            $line =~ s/^[^\S\f]*//;
             print STDERR "MACRO NEW ARG\n" if ($self->{'DEBUG'});
           } else {
             # implicit quoting when there is one argument.
@@ -2109,7 +2109,10 @@
            or $current->{'contents'}->[-1]->{'type'} eq 
'empty_spaces_after_close_brace')) {
     print STDERR "ABORT EMPTY additional text |$additional_text|, current 
|$current->{'contents'}->[-1]->{'text'}|\n" if ($self->{'DEBUG'});
     $current->{'contents'}->[-1]->{'text'} .= $additional_text;
+    # remove empty 'empty*before'.
     if ($current->{'contents'}->[-1]->{'text'} eq '') {
+      # as we remove 'empty_spaces_before_argument', 'spaces_before_argument'
+      # is removed from 'extra' too.
       if ($current->{'extra'} 
           and $current->{'extra'}->{'spaces_before_argument'}
           and $current->{'extra'}->{'spaces_before_argument'} 
@@ -2143,6 +2146,12 @@
   $type = 'spaces_at_end' if (!defined($type));
   if ($current->{'contents'} and @{$current->{'contents'}}) {
     my $index = -1;
+    # we ignore space before a misc command that is last on line.
+    # This is primarily to tag spaces before comments, but this will
+    # also tag and, in most converter lead to removal of spaces
+    # before any misc command, which is not really problematic as 
+    # in most cases, if it is not a comment, we are in an invalid 
+    # nesting of misc command on another @-command line.
     $index = -2 
       if (scalar(@{$current->{'contents'}}) > 1 
         and $current->{'contents'}->[-1]->{'cmdname'}
@@ -3889,9 +3898,9 @@
         my $expanded_macro = $self->{'macros'}->{$command};
         my $args_number = scalar(@{$expanded_macro->{'args'}}) -1;
         my $arguments = [];
-        if ($line =~ s/^\s*{\s*//) { # macro with args
+        if ($line =~ s/^\s*{[^\S\f]*//) { # macro with args
           ($arguments, $line, $line_nr) = 
-            _expand_macro_arguments ($self, $expanded_macro, $line, $line_nr);
+            _expand_macro_arguments($self, $expanded_macro, $line, $line_nr);
         } elsif (($args_number >= 2) or ($args_number <1)) {
         # as agreed on the bug-texinfo mailing list, no warn when zero
         # arg and not called with {}.
@@ -3904,7 +3913,7 @@
             ($line, $line_nr) = _new_line($self, $line_nr, $expanded_macro);
             $line = '' if (!defined($line));
           }
-          $line =~ s/^\s*// if ($line =~ /\S/);
+          $line =~ s/^[^\S\f]*// if ($line =~ /[\S\f]/);
           my $has_end_of_line = chomp $line;
           $arguments = [$line];
           $line = "\n" if ($has_end_of_line);

Modified: trunk/tp/t/60macro.t
===================================================================
--- trunk/tp/t/60macro.t        2013-08-03 16:24:46 UTC (rev 5271)
+++ trunk/tp/t/60macro.t        2013-08-04 19:10:22 UTC (rev 5272)
@@ -954,6 +954,9 @@
 
 @mymacro{}
 ', {'MACRO_BODY_IGNORES_LEADING_SPACE' => 1}],
+['form_feeds',
+undef, {'test_file' => 'macros_form_feed.texi'}
+],
 );
 
 my @todo =(

Added: trunk/tp/t/input_files/macros_form_feed.texi
===================================================================
--- trunk/tp/t/input_files/macros_form_feed.texi                                
(rev 0)
+++ trunk/tp/t/input_files/macros_form_feed.texi        2013-08-04 19:10:22 UTC 
(rev 5272)
@@ -0,0 +1,12 @@
address@hidden mymacro{a, b}
+f \a\ n \b\
address@hidden macro
+
address@hidden oneargmacro{c}
+g \c\ v
address@hidden macro
+
address@hidden  {  arg1, arg2}
+
address@hidden   address@hidden
+

Added: trunk/tp/t/results/macro/form_feeds.pl
===================================================================
--- trunk/tp/t/results/macro/form_feeds.pl                              (rev 0)
+++ trunk/tp/t/results/macro/form_feeds.pl      2013-08-04 19:10:22 UTC (rev 
5272)
@@ -0,0 +1,233 @@
+use vars qw(%result_texis %result_texts %result_trees %result_errors 
+   %result_indices %result_sectioning %result_nodes %result_menus
+   %result_floats %result_converted %result_converted_errors 
+   %result_elements %result_directions_text);
+
+use utf8;
+
+$result_trees{'form_feeds'} = {
+  'contents' => [
+    {
+      'args' => [
+        {
+          'parent' => {},
+          'text' => 'mymacro',
+          'type' => 'macro_name'
+        },
+        {
+          'parent' => {},
+          'text' => 'a',
+          'type' => 'macro_arg'
+        },
+        {
+          'parent' => {},
+          'text' => 'b',
+          'type' => 'macro_arg'
+        }
+      ],
+      'cmdname' => 'macro',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'f \\a\\ n \\b\\',
+          'type' => 'raw'
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'last_raw_newline'
+        }
+      ],
+      'extra' => {
+        'arg_line' => ' mymacro{a, b}
+',
+        'args_index' => {
+          'a' => 0,
+          'b' => 1
+        },
+        'macrobody' => 'f \\a\\ n \\b\\
+',
+        'spaces_after_command' => {
+          'extra' => {
+            'command' => {}
+          },
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line_after_command'
+        }
+      },
+      'line_nr' => {
+        'file_name' => 'macros_form_feed.texi',
+        'line_nr' => 1,
+        'macro' => ''
+      },
+      'parent' => {}
+    },
+    {},
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'empty_line'
+    },
+    {
+      'args' => [
+        {
+          'parent' => {},
+          'text' => 'oneargmacro',
+          'type' => 'macro_name'
+        },
+        {
+          'parent' => {},
+          'text' => 'c',
+          'type' => 'macro_arg'
+        }
+      ],
+      'cmdname' => 'macro',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'g \\c\\ v',
+          'type' => 'raw'
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'last_raw_newline'
+        }
+      ],
+      'extra' => {
+        'arg_line' => ' oneargmacro{c}
+',
+        'args_index' => {
+          'c' => 0
+        },
+        'macrobody' => 'g \\c\\ v
+',
+        'spaces_after_command' => {
+          'extra' => {
+            'command' => {}
+          },
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line_after_command'
+        }
+      },
+      'line_nr' => {
+        'file_name' => 'macros_form_feed.texi',
+        'line_nr' => 5,
+        'macro' => ''
+      },
+      'parent' => {}
+    },
+    {},
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'empty_line'
+    },
+    {
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'f  arg1 n  arg2
+'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'empty_line'
+    },
+    {
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'g   a'
+        },
+        {
+          'cmdname' => '{',
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => 'rgline v
+'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'empty_line'
+    }
+  ],
+  'type' => 'text_root'
+};
+$result_trees{'form_feeds'}{'contents'}[0]{'args'}[0]{'parent'} = 
$result_trees{'form_feeds'}{'contents'}[0];
+$result_trees{'form_feeds'}{'contents'}[0]{'args'}[1]{'parent'} = 
$result_trees{'form_feeds'}{'contents'}[0];
+$result_trees{'form_feeds'}{'contents'}[0]{'args'}[2]{'parent'} = 
$result_trees{'form_feeds'}{'contents'}[0];
+$result_trees{'form_feeds'}{'contents'}[0]{'contents'}[0]{'parent'} = 
$result_trees{'form_feeds'}{'contents'}[0];
+$result_trees{'form_feeds'}{'contents'}[0]{'contents'}[1]{'parent'} = 
$result_trees{'form_feeds'}{'contents'}[0];
+$result_trees{'form_feeds'}{'contents'}[0]{'extra'}{'spaces_after_command'}{'extra'}{'command'}
 = $result_trees{'form_feeds'}{'contents'}[0];
+$result_trees{'form_feeds'}{'contents'}[0]{'extra'}{'spaces_after_command'}{'parent'}
 = $result_trees{'form_feeds'};
+$result_trees{'form_feeds'}{'contents'}[0]{'parent'} = 
$result_trees{'form_feeds'};
+$result_trees{'form_feeds'}{'contents'}[1] = 
$result_trees{'form_feeds'}{'contents'}[0]{'extra'}{'spaces_after_command'};
+$result_trees{'form_feeds'}{'contents'}[2]{'parent'} = 
$result_trees{'form_feeds'};
+$result_trees{'form_feeds'}{'contents'}[3]{'args'}[0]{'parent'} = 
$result_trees{'form_feeds'}{'contents'}[3];
+$result_trees{'form_feeds'}{'contents'}[3]{'args'}[1]{'parent'} = 
$result_trees{'form_feeds'}{'contents'}[3];
+$result_trees{'form_feeds'}{'contents'}[3]{'contents'}[0]{'parent'} = 
$result_trees{'form_feeds'}{'contents'}[3];
+$result_trees{'form_feeds'}{'contents'}[3]{'contents'}[1]{'parent'} = 
$result_trees{'form_feeds'}{'contents'}[3];
+$result_trees{'form_feeds'}{'contents'}[3]{'extra'}{'spaces_after_command'}{'extra'}{'command'}
 = $result_trees{'form_feeds'}{'contents'}[3];
+$result_trees{'form_feeds'}{'contents'}[3]{'extra'}{'spaces_after_command'}{'parent'}
 = $result_trees{'form_feeds'};
+$result_trees{'form_feeds'}{'contents'}[3]{'parent'} = 
$result_trees{'form_feeds'};
+$result_trees{'form_feeds'}{'contents'}[4] = 
$result_trees{'form_feeds'}{'contents'}[3]{'extra'}{'spaces_after_command'};
+$result_trees{'form_feeds'}{'contents'}[5]{'parent'} = 
$result_trees{'form_feeds'};
+$result_trees{'form_feeds'}{'contents'}[6]{'contents'}[0]{'parent'} = 
$result_trees{'form_feeds'}{'contents'}[6];
+$result_trees{'form_feeds'}{'contents'}[6]{'parent'} = 
$result_trees{'form_feeds'};
+$result_trees{'form_feeds'}{'contents'}[7]{'parent'} = 
$result_trees{'form_feeds'};
+$result_trees{'form_feeds'}{'contents'}[8]{'contents'}[0]{'parent'} = 
$result_trees{'form_feeds'}{'contents'}[8];
+$result_trees{'form_feeds'}{'contents'}[8]{'contents'}[1]{'parent'} = 
$result_trees{'form_feeds'}{'contents'}[8];
+$result_trees{'form_feeds'}{'contents'}[8]{'contents'}[2]{'parent'} = 
$result_trees{'form_feeds'}{'contents'}[8];
+$result_trees{'form_feeds'}{'contents'}[8]{'parent'} = 
$result_trees{'form_feeds'};
+$result_trees{'form_feeds'}{'contents'}[9]{'parent'} = 
$result_trees{'form_feeds'};
+
+$result_texis{'form_feeds'} = '@macro mymacro{a, b}
+f \\a\\ n \\b\\
address@hidden macro
+
address@hidden oneargmacro{c}
+g \\c\\ v
address@hidden macro
+
+f  arg1 n  arg2
+
+g   address@hidden v
+
+';
+
+
+$result_texts{'form_feeds'} = '
+
+f  arg1 n  arg2
+
+g   a{rgline v
+
+';
+
+$result_errors{'form_feeds'} = [];
+
+
+1;




reply via email to

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