texinfo-commits
[Top][All Lists]
Advanced

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

texinfo/tp Texinfo/Parser.pm t/02coverage.t t/r...


From: Patrice Dumas
Subject: texinfo/tp Texinfo/Parser.pm t/02coverage.t t/r...
Date: Tue, 12 Oct 2010 19:15:25 +0000

CVSROOT:        /sources/texinfo
Module name:    texinfo
Changes by:     Patrice Dumas <pertusus>        10/10/12 19:15:25

Modified files:
        tp/Texinfo     : Parser.pm 
        tp/t           : 02coverage.t 
Added files:
        tp/t/results/coverage: math.pl 

Log message:
        Handle right @math and @\.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/Texinfo/Parser.pm?cvsroot=texinfo&r1=1.64&r2=1.65
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/02coverage.t?cvsroot=texinfo&r1=1.14&r2=1.15
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/coverage/math.pl?cvsroot=texinfo&rev=1.1

Patches:
Index: Texinfo/Parser.pm
===================================================================
RCS file: /sources/texinfo/texinfo/tp/Texinfo/Parser.pm,v
retrieving revision 1.64
retrieving revision 1.65
diff -u -b -r1.64 -r1.65
--- Texinfo/Parser.pm   12 Oct 2010 16:45:07 -0000      1.64
+++ Texinfo/Parser.pm   12 Oct 2010 19:15:24 -0000      1.65
@@ -77,7 +77,7 @@
 my %no_brace_commands;             # commands never taking braces
 
 foreach my $no_brace_command ('*',' ',"\t","\n",'-', '|', '/',':','!',
-                              '?','.','@','}','{',) {
+                              '?','.','@','}','{','\\') {
   $no_brace_commands{$no_brace_command} = 1;
 }
 
@@ -225,10 +225,17 @@
   $brace_commands{$accent_command} = 1;
 }
 
-foreach my $one_arg_command 
('asis','b','cite','clicksequence','click','code','command','ctrl','dfn','dmn','emph','env','file','headitemfont','i','slanted','sansserif','kbd','key','math','option','r','samp','sc','strong','t','indicateurl','var','verb','titlefont','w','hyphenation','anchor','footnote','shortcaption','caption','dotless')
 {
+foreach my $one_arg_command 
('asis','b','cite','clicksequence','click','code','command','ctrl','dfn','dmn','emph','env','file','headitemfont','i','slanted','sansserif','kbd','key',,'option','r','samp','sc','strong','t','indicateurl','var','verb','titlefont','w','hyphenation','anchor','dotless')
 {
   $brace_commands{$one_arg_command} = 1;
 }
 
+# Commands that enclose full texts
+my %context_brace_commands;
+foreach my $context_brace_command ('footnote', 'caption', 'shortcaption', 
'math') {
+  $context_brace_commands{$context_brace_command} = $context_brace_command;
+  $brace_commands{$context_brace_command} = 1;
+}
+
 foreach my $two_arg_command('email','acronym','abbr') {
   $brace_commands{$two_arg_command} = 2;
 }
@@ -241,14 +248,6 @@
   $brace_commands{$five_arg_command} = 5;
 }
 
-# Commands that enclose full texts
-my %context_brace_commands;
-foreach my $context_brace_command ('footnote', 'caption', 'shortcaption') {
-  $context_brace_commands{$context_brace_command} = $context_brace_command;
-}
-
-$context_brace_commands{'math'} = 'math';
-
 my %no_paragraph_contexts;
 foreach my $no_paragraph_context ('math', 'preformatted', 'menu', 'def') {
   $no_paragraph_contexts{$no_paragraph_context} = 1;
@@ -2044,6 +2043,11 @@
         } elsif ($no_brace_commands{$command}) {
           push @{$current->{'contents'}},
                  { 'cmdname' => $command, 'parent' => $current };
+          # FIXME generalize?
+          if ($command eq '\\' and $self->{'context_stack'}->[-1] ne 'math') {
+            _line_warn  ($self, sprintf($self->__("address@hidden should only 
appear in math context"), 
+                                        $command), $line_nr);
+          }
           if ($command eq "\n") {
             $current = _end_line($self, $current, $line_nr);
             last;
@@ -2071,7 +2075,6 @@
               $current->{'remaining_args'} = 0;
             }
             $current = $current->{'args'}->[-1];
-            # FIXME don't use type to distinguish context_brace_commands.
             if ($context_brace_commands{$command}) {
               push @{$self->{'context_stack'}}, 
$current->{'parent'}->{'cmdname'};
             } else {
@@ -2080,11 +2083,12 @@
             print STDERR "OPENED address@hidden>{'parent'}->{'cmdname'}, 
remaining: $current->{'parent'}->{'remaining_args'}, "
               .($current->{'type'} ? "type: $current->{'type'}" : '')."\n"
                if ($self->{'debug'});
-          } elsif ($current->{'parent'} 
+          } elsif (($current->{'parent'} 
               and (($current->{'parent'}->{'cmdname'}
                      and $current->{'parent'}->{'cmdname'} eq 'multitable')
                    or ($current->{'parent'}->{'type'} 
-                       and $current->{'parent'}->{'type'} eq 'def_line'))) {
+                             and $current->{'parent'}->{'type'} eq 
'def_line')))
+                   or $self->{'context_stack'}->[-1] eq 'math') {
             push @{$current->{'contents'}},
                  { 'type' => 'bracketed', 'contents' => [],
                    'parent' => $current };

Index: t/02coverage.t
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/02coverage.t,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- t/02coverage.t      10 Oct 2010 23:23:03 -0000      1.14
+++ t/02coverage.t      12 Oct 2010 19:15:25 -0000      1.15
@@ -24,6 +24,20 @@
 
 
 '],
+['math',
+'Simple math
address@hidden y}}
+
+Math with @@-command
address@hidden@code{math code} a < b}
+
+Complex
address@hidden address@hidden \hbox{ code }}} @\i \sum_{i}{\underline{f}}}
+
+@@\ outside of math
address@hidden
+
+'],
 ['block_commands','
 @group
 in group

Index: t/results/coverage/math.pl
===================================================================
RCS file: t/results/coverage/math.pl
diff -N t/results/coverage/math.pl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ t/results/coverage/math.pl  12 Oct 2010 19:15:25 -0000      1.1
@@ -0,0 +1,354 @@
+use vars qw(%result_texts %result_trees %result_errors);
+
+$result_trees{'math'} = {
+  'contents' => [
+    {
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'Simple math
+'
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => 'x^i'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'bracketed'
+                },
+                {
+                  'parent' => {},
+                  'text' => '\\over'
+                },
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => '\\tan y'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'bracketed'
+                }
+              ],
+              'parent' => {}
+            }
+          ],
+          'cmdname' => 'math',
+          'contents' => [],
+          'parent' => {},
+          'remaining_args' => 0
+        },
+        {
+          'parent' => {},
+          'text' => '
+'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'empty_line'
+    },
+    {
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'Math with '
+        },
+        {
+          'cmdname' => '@',
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => '-command
+'
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'args' => [
+                    {
+                      'contents' => [
+                        {
+                          'parent' => {},
+                          'text' => 'math code'
+                        }
+                      ],
+                      'parent' => {},
+                      'type' => 'brace_command_arg'
+                    }
+                  ],
+                  'cmdname' => 'code',
+                  'contents' => [],
+                  'parent' => {},
+                  'remaining_args' => 0
+                },
+                {
+                  'parent' => {},
+                  'text' => ' a < b'
+                }
+              ],
+              'parent' => {}
+            }
+          ],
+          'cmdname' => 'math',
+          'contents' => [],
+          'parent' => {},
+          'remaining_args' => 0
+        },
+        {
+          'parent' => {},
+          'text' => '
+'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'empty_line'
+    },
+    {
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => 'Complex
+'
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => ' \\underline'
+                },
+                {
+                  'contents' => [
+                    {
+                      'args' => [
+                        {
+                          'contents' => [
+                            {
+                              'parent' => {},
+                              'text' => 'math \\hbox'
+                            },
+                            {
+                              'contents' => [
+                                {
+                                  'parent' => {},
+                                  'text' => ' code '
+                                }
+                              ],
+                              'parent' => {},
+                              'type' => 'bracketed'
+                            }
+                          ],
+                          'parent' => {},
+                          'type' => 'brace_command_arg'
+                        }
+                      ],
+                      'cmdname' => 'code',
+                      'contents' => [],
+                      'parent' => {},
+                      'remaining_args' => 0
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'bracketed'
+                },
+                {
+                  'parent' => {},
+                  'text' => ' '
+                },
+                {
+                  'cmdname' => '\\',
+                  'parent' => {}
+                },
+                {
+                  'parent' => {},
+                  'text' => 'i \\sum_'
+                },
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => 'i'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'bracketed'
+                },
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => '\\underline'
+                    },
+                    {
+                      'contents' => [
+                        {
+                          'parent' => {},
+                          'text' => 'f'
+                        }
+                      ],
+                      'parent' => {},
+                      'type' => 'bracketed'
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'bracketed'
+                }
+              ],
+              'parent' => {}
+            }
+          ],
+          'cmdname' => 'math',
+          'contents' => [],
+          'parent' => {},
+          'remaining_args' => 0
+        },
+        {
+          'parent' => {},
+          'text' => '
+'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'empty_line'
+    },
+    {
+      'contents' => [
+        {
+          'cmdname' => '@',
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => '\\ outside of math
+'
+        },
+        {
+          'cmdname' => '\\',
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => '
+'
+        }
+      ],
+      'parent' => {},
+      'type' => 'paragraph'
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'empty_line'
+    }
+  ]
+};
+$result_trees{'math'}{'contents'}[0]{'contents'}[0]{'parent'} = 
$result_trees{'math'}{'contents'}[0];
+$result_trees{'math'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'math'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0];
+$result_trees{'math'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'math'}{'contents'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'math'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'math'}{'contents'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'math'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[2]{'contents'}[0]{'parent'}
 = 
$result_trees{'math'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[2];
+$result_trees{'math'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[2]{'parent'}
 = $result_trees{'math'}{'contents'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'math'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'parent'} = 
$result_trees{'math'}{'contents'}[0]{'contents'}[1];
+$result_trees{'math'}{'contents'}[0]{'contents'}[1]{'parent'} = 
$result_trees{'math'}{'contents'}[0];
+$result_trees{'math'}{'contents'}[0]{'contents'}[2]{'parent'} = 
$result_trees{'math'}{'contents'}[0];
+$result_trees{'math'}{'contents'}[0]{'parent'} = $result_trees{'math'};
+$result_trees{'math'}{'contents'}[1]{'parent'} = $result_trees{'math'};
+$result_trees{'math'}{'contents'}[2]{'contents'}[0]{'parent'} = 
$result_trees{'math'}{'contents'}[2];
+$result_trees{'math'}{'contents'}[2]{'contents'}[1]{'parent'} = 
$result_trees{'math'}{'contents'}[2];
+$result_trees{'math'}{'contents'}[2]{'contents'}[2]{'parent'} = 
$result_trees{'math'}{'contents'}[2];
+$result_trees{'math'}{'contents'}[2]{'contents'}[3]{'args'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'math'}{'contents'}[2]{'contents'}[3]{'args'}[0]{'contents'}[0]{'args'}[0];
+$result_trees{'math'}{'contents'}[2]{'contents'}[3]{'args'}[0]{'contents'}[0]{'args'}[0]{'parent'}
 = 
$result_trees{'math'}{'contents'}[2]{'contents'}[3]{'args'}[0]{'contents'}[0];
+$result_trees{'math'}{'contents'}[2]{'contents'}[3]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'math'}{'contents'}[2]{'contents'}[3]{'args'}[0];
+$result_trees{'math'}{'contents'}[2]{'contents'}[3]{'args'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'math'}{'contents'}[2]{'contents'}[3]{'args'}[0];
+$result_trees{'math'}{'contents'}[2]{'contents'}[3]{'args'}[0]{'parent'} = 
$result_trees{'math'}{'contents'}[2]{'contents'}[3];
+$result_trees{'math'}{'contents'}[2]{'contents'}[3]{'parent'} = 
$result_trees{'math'}{'contents'}[2];
+$result_trees{'math'}{'contents'}[2]{'contents'}[4]{'parent'} = 
$result_trees{'math'}{'contents'}[2];
+$result_trees{'math'}{'contents'}[2]{'parent'} = $result_trees{'math'};
+$result_trees{'math'}{'contents'}[3]{'parent'} = $result_trees{'math'};
+$result_trees{'math'}{'contents'}[4]{'contents'}[0]{'parent'} = 
$result_trees{'math'}{'contents'}[4];
+$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0];
+$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[1]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[1]{'contents'}[0]{'args'}[0];
+$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[1]{'contents'}[0]{'args'}[0]{'contents'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[1]{'contents'}[0]{'args'}[0]{'contents'}[1];
+$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[1]{'contents'}[0]{'args'}[0]{'contents'}[1]{'parent'}
 = 
$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[1]{'contents'}[0]{'args'}[0];
+$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[1]{'contents'}[0]{'args'}[0]{'parent'}
 = 
$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[1]{'contents'}[0];
+$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[1];
+$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0];
+$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[2]{'parent'}
 = $result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0];
+$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[3]{'parent'}
 = $result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0];
+$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[4]{'parent'}
 = $result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0];
+$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[5]{'contents'}[0]{'parent'}
 = 
$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[5];
+$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[5]{'parent'}
 = $result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0];
+$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[6]{'contents'}[0]{'parent'}
 = 
$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[6];
+$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[6]{'contents'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[6]{'contents'}[1];
+$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[6]{'contents'}[1]{'parent'}
 = 
$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[6];
+$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'contents'}[6]{'parent'}
 = $result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0];
+$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'args'}[0]{'parent'} = 
$result_trees{'math'}{'contents'}[4]{'contents'}[1];
+$result_trees{'math'}{'contents'}[4]{'contents'}[1]{'parent'} = 
$result_trees{'math'}{'contents'}[4];
+$result_trees{'math'}{'contents'}[4]{'contents'}[2]{'parent'} = 
$result_trees{'math'}{'contents'}[4];
+$result_trees{'math'}{'contents'}[4]{'parent'} = $result_trees{'math'};
+$result_trees{'math'}{'contents'}[5]{'parent'} = $result_trees{'math'};
+$result_trees{'math'}{'contents'}[6]{'contents'}[0]{'parent'} = 
$result_trees{'math'}{'contents'}[6];
+$result_trees{'math'}{'contents'}[6]{'contents'}[1]{'parent'} = 
$result_trees{'math'}{'contents'}[6];
+$result_trees{'math'}{'contents'}[6]{'contents'}[2]{'parent'} = 
$result_trees{'math'}{'contents'}[6];
+$result_trees{'math'}{'contents'}[6]{'contents'}[3]{'parent'} = 
$result_trees{'math'}{'contents'}[6];
+$result_trees{'math'}{'contents'}[6]{'parent'} = $result_trees{'math'};
+$result_trees{'math'}{'contents'}[7]{'parent'} = $result_trees{'math'};
+
+$result_texts{'math'} = 'Simple math
address@hidden y}}
+
+Math with @@-command
address@hidden@code{math code} a < b}
+
+Complex
address@hidden address@hidden \\hbox{ code }}} @\\i \\sum_{i}{\\underline{f}}}
+
+@@\\ outside of math
address@hidden
+
+';
+
+$result_errors{'math'} = [
+  {
+    'error_line' => ':11: warning: @\\ should only appear in math context
+',
+    'file_name' => '',
+    'line_nr' => 11,
+    'macro' => '',
+    'text' => '@\\ should only appear in math context',
+    'type' => 'warning'
+  }
+];
+
+



reply via email to

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