texinfo-commits
[Top][All Lists]
Advanced

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

texinfo/tp Texinfo/Parser.pm t/60macro.t t/resu...


From: Patrice Dumas
Subject: texinfo/tp Texinfo/Parser.pm t/60macro.t t/resu...
Date: Sat, 09 Oct 2010 18:15:15 +0000

CVSROOT:        /sources/texinfo
Module name:    texinfo
Changes by:     Patrice Dumas <pertusus>        10/10/09 18:15:15

Modified files:
        tp/Texinfo     : Parser.pm 
        tp/t           : 60macro.t 
Added files:
        tp/t/results/macro: macro_in_menu.pl 

Log message:
        Handle user macros in menu empty lines.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/Texinfo/Parser.pm?cvsroot=texinfo&r1=1.53&r2=1.54
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/60macro.t?cvsroot=texinfo&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/macro/macro_in_menu.pl?cvsroot=texinfo&rev=1.1

Patches:
Index: Texinfo/Parser.pm
===================================================================
RCS file: /sources/texinfo/texinfo/tp/Texinfo/Parser.pm,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -b -r1.53 -r1.54
--- Texinfo/Parser.pm   9 Oct 2010 17:51:36 -0000       1.53
+++ Texinfo/Parser.pm   9 Oct 2010 18:15:15 -0000       1.54
@@ -1070,15 +1070,25 @@
   if ($current->{'contents'} and @{$current->{'contents'}} 
       and $current->{'contents'}->[-1]->{'type'} 
       and $current->{'contents'}->[-1]->{'type'} eq 'empty_line') {
-    my $empty_line;
     print STDERR "END EMPTY LINE\n" if ($self->{'debug'});
     if ($current->{'type'} and $current->{'type'} eq 'paragraph') {
-      $empty_line = pop @{$current->{'contents'}};
-    }
+      my $empty_line = pop @{$current->{'contents'}};
     $current = _end_paragraph($self, $current, $line_nr);
-    if ($empty_line) {
       push @{$current->{'contents'}}, $empty_line;
       $empty_line->{'parent'} = $current;
+    } elsif ($current->{'type'} 
+               and $current->{'type'} eq 'menu_entry_description') {
+      # first parent is menu_entry
+      my $empty_line = pop @{$current->{'contents'}};
+      $current = $current->{'parent'}->{'parent'};
+      
+      push @{$current->{'contents'}}, { 'type' => 'after_description_line', 
+                                        'text' => $empty_line->{'text'},
+                                        'parent' => $current };
+      push @{$current->{'contents'}}, { 'type' => 'menu_comment',
+                                        'parent' => $current,
+                                        'contents' => [] };
+      $current = $current->{'contents'}->[-1];
     }
   } elsif ($current->{'type'} 
     and ($current->{'type'} eq 'menu_entry_name'
@@ -1310,29 +1320,20 @@
            ($current->{'parent'} and $current->{'parent'}->{'cmdname'}
             and $current->{'parent'}->{'cmdname'} eq 'verb')
           )
-        # not in math or preformatted or def line
-        and !$no_paragraph_contexts{$self->{'context_stack'}->[-1]}) {
+        # not def line
+        and $self->{'context_stack'}->[-1] ne 'def') {
       print STDERR "EMPTY LINE or COMMAND\n" if ($self->{'debug'});
       $line =~ s/([ \t]*)//;
       push @{$current->{'contents'}}, { 'type' => 'empty_line', 
                                         'text' => $1,
                                         'parent' => $current };
-    } elsif ($line !~ /\S/ and $current->{'type'} 
-               and $current->{'type'} eq 'menu_entry_description') {
-      # first parent is menu_entry
-      $current = $current->{'parent'}->{'parent'};
-      push @{$current->{'contents'}}, { 'type' => 'after_description_line', 
-                                        'text' => $line,
-                                        'parent' => $current };
-      push @{$current->{'contents'}}, { 'type' => 'menu_comment',
-                                        'parent' => $current,
-                                        'contents' => [] };
-      $current = $current->{'contents'}->[-1];
-      next;
-    } elsif ($current->{'type'} 
+    }
+
+    if ($current->{'type'} 
               and ($current->{'type'} eq 'menu_comment'
                     or $current->{'type'} eq 'menu_entry_description')) {
       if ($line =~ s/^(\*\s+)//) {
+        _abort_empty_line ($self, $current);
         print STDERR "MENU ENTRY (certainly)\n" if ($self->{'debug'});
         my $leading_text = $1;
         if ($current->{'type'} eq 'menu_comment') {

Index: t/60macro.t
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/60macro.t,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- t/60macro.t 9 Oct 2010 13:25:53 -0000       1.13
+++ t/60macro.t 9 Oct 2010 18:15:15 -0000       1.14
@@ -200,6 +200,25 @@
 
 @space{} text after space.
 '],
+['macro_in_menu',
+'@macro star
+* 
address@hidden macro
+
address@hidden spaces
+  
address@hidden macro
+
address@hidden two-colon
+::
address@hidden macro
+
address@hidden
address@hidden address@hidden description
address@hidden
+menu comment
address@hidden menu
+'],
 ['nested_macro_call',
 '@macro machin{}
 (machin)

Index: t/results/macro/macro_in_menu.pl
===================================================================
RCS file: t/results/macro/macro_in_menu.pl
diff -N t/results/macro/macro_in_menu.pl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ t/results/macro/macro_in_menu.pl    9 Oct 2010 18:15:15 -0000       1.1
@@ -0,0 +1,167 @@
+use vars qw(%result_texts %result_trees %result_errors);
+
+$result_trees{'macro_in_menu'} = {
+  'contents' => [
+    {
+      'args' => [
+        {
+          'parent' => {},
+          'text' => 'star',
+          'type' => 'macro_name'
+        }
+      ],
+      'cmdname' => 'macro',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '* 
+',
+          'type' => 'raw'
+        }
+      ],
+      'parent' => {},
+      'special' => {
+        'macro_line' => ' star
+',
+        'macrobody' => '* 
+'
+      }
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'empty_line'
+    },
+    {
+      'args' => [
+        {
+          'parent' => {},
+          'text' => 'spaces',
+          'type' => 'macro_name'
+        }
+      ],
+      'cmdname' => 'macro',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '  
+',
+          'type' => 'raw'
+        }
+      ],
+      'parent' => {},
+      'special' => {
+        'macro_line' => ' spaces
+',
+        'macrobody' => '  
+'
+      }
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'empty_line'
+    },
+    {
+      'args' => [
+        {
+          'parent' => {},
+          'text' => 'two-colon',
+          'type' => 'macro_name'
+        }
+      ],
+      'cmdname' => 'macro',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '::
+',
+          'type' => 'raw'
+        }
+      ],
+      'parent' => {},
+      'special' => {
+        'macro_line' => ' two-colon
+',
+        'macrobody' => '::
+'
+      }
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'empty_line'
+    },
+    {
+      'cmdname' => 'menu',
+      'contents' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => '* menu entry:: description
+'
+            },
+            {
+              'parent' => {},
+              'text' => '  
+',
+              'type' => 'empty_line'
+            },
+            {
+              'parent' => {},
+              'text' => 'menu comment
+'
+            }
+          ],
+          'parent' => {},
+          'type' => 'menu_comment'
+        }
+      ],
+      'parent' => {}
+    }
+  ]
+};
+$result_trees{'macro_in_menu'}{'contents'}[0]{'args'}[0]{'parent'} = 
$result_trees{'macro_in_menu'}{'contents'}[0];
+$result_trees{'macro_in_menu'}{'contents'}[0]{'contents'}[0]{'parent'} = 
$result_trees{'macro_in_menu'}{'contents'}[0];
+$result_trees{'macro_in_menu'}{'contents'}[0]{'parent'} = 
$result_trees{'macro_in_menu'};
+$result_trees{'macro_in_menu'}{'contents'}[1]{'parent'} = 
$result_trees{'macro_in_menu'};
+$result_trees{'macro_in_menu'}{'contents'}[2]{'args'}[0]{'parent'} = 
$result_trees{'macro_in_menu'}{'contents'}[2];
+$result_trees{'macro_in_menu'}{'contents'}[2]{'contents'}[0]{'parent'} = 
$result_trees{'macro_in_menu'}{'contents'}[2];
+$result_trees{'macro_in_menu'}{'contents'}[2]{'parent'} = 
$result_trees{'macro_in_menu'};
+$result_trees{'macro_in_menu'}{'contents'}[3]{'parent'} = 
$result_trees{'macro_in_menu'};
+$result_trees{'macro_in_menu'}{'contents'}[4]{'args'}[0]{'parent'} = 
$result_trees{'macro_in_menu'}{'contents'}[4];
+$result_trees{'macro_in_menu'}{'contents'}[4]{'contents'}[0]{'parent'} = 
$result_trees{'macro_in_menu'}{'contents'}[4];
+$result_trees{'macro_in_menu'}{'contents'}[4]{'parent'} = 
$result_trees{'macro_in_menu'};
+$result_trees{'macro_in_menu'}{'contents'}[5]{'parent'} = 
$result_trees{'macro_in_menu'};
+$result_trees{'macro_in_menu'}{'contents'}[6]{'contents'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'macro_in_menu'}{'contents'}[6]{'contents'}[0];
+$result_trees{'macro_in_menu'}{'contents'}[6]{'contents'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'macro_in_menu'}{'contents'}[6]{'contents'}[0];
+$result_trees{'macro_in_menu'}{'contents'}[6]{'contents'}[0]{'contents'}[2]{'parent'}
 = $result_trees{'macro_in_menu'}{'contents'}[6]{'contents'}[0];
+$result_trees{'macro_in_menu'}{'contents'}[6]{'contents'}[0]{'parent'} = 
$result_trees{'macro_in_menu'}{'contents'}[6];
+$result_trees{'macro_in_menu'}{'contents'}[6]{'parent'} = 
$result_trees{'macro_in_menu'};
+
+$result_texts{'macro_in_menu'} = '@macro star
+* 
address@hidden macro
+
address@hidden spaces
+  
address@hidden macro
+
address@hidden two-colon
+::
address@hidden macro
+
address@hidden
+* menu entry:: description
+  
+menu comment
address@hidden menu
+';
+
+$result_errors{'macro_in_menu'} = [];
+
+



reply via email to

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