texinfo-commits
[Top][All Lists]
Advanced

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

texinfo/tp Texinfo/Parser.pm t/22xtable.t t/res...


From: Patrice Dumas
Subject: texinfo/tp Texinfo/Parser.pm t/22xtable.t t/res...
Date: Fri, 03 Dec 2010 23:26:54 +0000

CVSROOT:        /sources/texinfo
Module name:    texinfo
Changes by:     Patrice Dumas <pertusus>        10/12/03 23:26:53

Modified files:
        tp/Texinfo     : Parser.pm 
        tp/t           : 22xtable.t 
        tp/t/results/itemize: accent_argument.pl 
Added files:
        tp/t/results/xtable: accent_on_table_line.pl 

Log message:
        Check that command argument for @itemize or @*table is on the 
        @-command line.
        Avoid accent commands as argument for @itemize or @*table.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/Texinfo/Parser.pm?cvsroot=texinfo&r1=1.157&r2=1.158
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/22xtable.t?cvsroot=texinfo&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/itemize/accent_argument.pl?cvsroot=texinfo&r1=1.20&r2=1.21
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/xtable/accent_on_table_line.pl?cvsroot=texinfo&rev=1.1

Patches:
Index: Texinfo/Parser.pm
===================================================================
RCS file: /sources/texinfo/texinfo/tp/Texinfo/Parser.pm,v
retrieving revision 1.157
retrieving revision 1.158
diff -u -b -r1.157 -r1.158
--- Texinfo/Parser.pm   3 Dec 2010 00:55:07 -0000       1.157
+++ Texinfo/Parser.pm   3 Dec 2010 23:26:52 -0000       1.158
@@ -2556,7 +2556,9 @@
             $self->{'definfoenclose'}->{$current->{'cmdname'}})
            and $line !~ /^{/) {
         # special case for @-command as argument of @itemize or @*table.
-        if ($current->{'parent'} and $current->{'parent'}->{'parent'} 
+        if ($current->{'parent'} and $current->{'parent'}->{'type'}
+            and $current->{'parent'}->{'type'} eq 'block_line_arg'
+            and $current->{'parent'}->{'parent'} 
             and $current->{'parent'}->{'parent'}->{'cmdname'} and
            ($current->{'parent'}->{'parent'}->{'cmdname'} eq 'itemize'
              or 
$item_line_commands{$current->{'parent'}->{'parent'}->{'cmdname'}})
@@ -2566,12 +2568,18 @@
                    and $current->{'parent'}->{'contents'}->[0]->{'text'}
                                       =~ /^[^\S\n]*/))) {
           delete $current->{'contents'};
+          if ($accent_commands{$current->{'cmdname'}}) {
+            _line_warn ($self, sprintf($self->
+              __("Accent command address@hidden' not allowed as address@hidden 
argument"),
+              $current->{'cmdname'}, 
$current->{'parent'}->{'parent'}->{'cmdname'}),
+              $line_nr);
+          } else {
           print STDERR "FOR PARENT 
address@hidden>{'parent'}->{'parent'}->{'cmdname'} command_as_argument 
$current->{'cmdname'}\n" if ($self->{'debug'});
           $current->{'type'} = 'command_as_argument';
           $current->{'parent'}->{'parent'}->{'extra'}->{'command_as_argument'} 
             = $current->{'cmdname'};
+          }
           $current = $current->{'parent'};
-
         # now accent commands
         } elsif ($accent_commands{$current->{'cmdname'}}) {
           if ($line =~ /^[^\S\n]/) {

Index: t/22xtable.t
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/22xtable.t,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- t/22xtable.t        24 Oct 2010 08:45:27 -0000      1.1
+++ t/22xtable.t        3 Dec 2010 23:26:53 -0000       1.2
@@ -3,6 +3,15 @@
 require 't/test_utils.pl';
 
 my @test_cases = (
+['accent_on_table_line',
+'@table @~
address@hidden first item
address@hidden no at-command @code{code}
address@hidden table
+']
+);
+
+my @test_invalid = (
 ['lone_end_table',
 'Text.
 @end table
@@ -22,11 +31,15 @@
 
 @item item
 @end table
-']
+'],
 );
 
+foreach my $test (@test_cases) {
+  $test->[2]->{'test_formats'} = ['plaintext'];
+}
+
 our ($arg_test_case, $arg_generate, $arg_debug);
 
-run_all ('xtable', address@hidden, $arg_test_case,
+run_all ('xtable', address@hidden, @test_invalid], $arg_test_case,
    $arg_generate, $arg_debug);
 

Index: t/results/itemize/accent_argument.pl
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/results/itemize/accent_argument.pl,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -b -r1.20 -r1.21
--- t/results/itemize/accent_argument.pl        22 Nov 2010 23:52:42 -0000      
1.20
+++ t/results/itemize/accent_argument.pl        3 Dec 2010 23:26:53 -0000       
1.21
@@ -15,8 +15,7 @@
             },
             {
               'cmdname' => '~',
-              'parent' => {},
-              'type' => 'command_as_argument'
+              'parent' => {}
             },
             {
               'args' => [
@@ -73,8 +72,7 @@
           [
             {}
           ]
-        ],
-        'command_as_argument' => '~'
+        ]
       },
       'parent' => {}
     },
@@ -101,8 +99,7 @@
             },
             {
               'cmdname' => '~',
-              'parent' => {},
-              'type' => 'command_as_argument'
+              'parent' => {}
             },
             {
               'parent' => {},
@@ -153,8 +150,7 @@
           [
             {}
           ]
-        ],
-        'command_as_argument' => '~'
+        ]
       },
       'parent' => {}
     },
@@ -209,7 +205,26 @@
 item
 ';
 
-$result_errors{'accent_argument'} = [];
+$result_errors{'accent_argument'} = [
+  {
+    'error_line' => ':1: warning: Accent command address@hidden' not allowed 
as @itemize argument
+',
+    'file_name' => '',
+    'line_nr' => 1,
+    'macro' => '',
+    'text' => 'Accent command address@hidden' not allowed as @itemize 
argument',
+    'type' => 'warning'
+  },
+  {
+    'error_line' => ':5: warning: Accent command address@hidden' not allowed 
as @itemize argument
+',
+    'file_name' => '',
+    'line_nr' => 5,
+    'macro' => '',
+    'text' => 'Accent command address@hidden' not allowed as @itemize 
argument',
+    'type' => 'warning'
+  }
+];
 
 
 

Index: t/results/xtable/accent_on_table_line.pl
===================================================================
RCS file: t/results/xtable/accent_on_table_line.pl
diff -N t/results/xtable/accent_on_table_line.pl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ t/results/xtable/accent_on_table_line.pl    3 Dec 2010 23:26:53 -0000       
1.1
@@ -0,0 +1,193 @@
+use vars qw(%result_texis %result_texts %result_trees %result_errors 
+   %result_indices %result_sectioning %result_nodes %result_menus
+   %result_floats %result_converted);
+
+$result_trees{'accent_on_table_line'} = {
+  'contents' => [
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => ' ',
+              'type' => 'empty_spaces_after_command'
+            },
+            {
+              'cmdname' => '~',
+              'parent' => {}
+            },
+            {
+              'parent' => {},
+              'text' => '
+',
+              'type' => 'space_at_end_block_command'
+            }
+          ],
+          'parent' => {},
+          'type' => 'block_line_arg'
+        }
+      ],
+      'cmdname' => 'table',
+      'contents' => [
+        {
+          'contents' => [],
+          'parent' => {},
+          'type' => 'before_item'
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => ' ',
+                  'type' => 'empty_spaces_after_command'
+                },
+                {
+                  'parent' => {},
+                  'text' => 'first item'
+                },
+                {
+                  'parent' => {},
+                  'text' => '
+',
+                  'type' => 'spaces_at_end'
+                }
+              ],
+              'parent' => {},
+              'type' => 'misc_line_arg'
+            }
+          ],
+          'cmdname' => 'item',
+          'extra' => {
+            'misc_content' => [
+              {}
+            ]
+          },
+          'parent' => {}
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => ' ',
+                  'type' => 'empty_spaces_after_command'
+                },
+                {
+                  'parent' => {},
+                  'text' => 'no at-command '
+                },
+                {
+                  'args' => [
+                    {
+                      'contents' => [
+                        {
+                          'parent' => {},
+                          'text' => 'code'
+                        }
+                      ],
+                      'parent' => {},
+                      'type' => 'brace_command_arg'
+                    }
+                  ],
+                  'cmdname' => 'code',
+                  'contents' => [],
+                  'parent' => {}
+                },
+                {
+                  'parent' => {},
+                  'text' => '
+',
+                  'type' => 'spaces_at_end'
+                }
+              ],
+              'parent' => {},
+              'type' => 'misc_line_arg'
+            }
+          ],
+          'cmdname' => 'item',
+          'extra' => {
+            'misc_content' => [
+              {},
+              {}
+            ]
+          },
+          'parent' => {}
+        }
+      ],
+      'extra' => {
+        'block_command_line_contents' => [
+          [
+            {}
+          ]
+        ]
+      },
+      'parent' => {}
+    },
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'empty_line_after_command'
+    }
+  ],
+  'type' => 'text_root'
+};
+$result_trees{'accent_on_table_line'}{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'accent_on_table_line'}{'contents'}[0]{'args'}[0];
+$result_trees{'accent_on_table_line'}{'contents'}[0]{'args'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'accent_on_table_line'}{'contents'}[0]{'args'}[0];
+$result_trees{'accent_on_table_line'}{'contents'}[0]{'args'}[0]{'contents'}[2]{'parent'}
 = $result_trees{'accent_on_table_line'}{'contents'}[0]{'args'}[0];
+$result_trees{'accent_on_table_line'}{'contents'}[0]{'args'}[0]{'parent'} = 
$result_trees{'accent_on_table_line'}{'contents'}[0];
+$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[0]{'parent'} 
= $result_trees{'accent_on_table_line'}{'contents'}[0];
+$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[1]{'parent'}
 = 
$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[2]{'parent'}
 = 
$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'parent'}
 = $result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[1];
+$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[1]{'extra'}{'misc_content'}[0]
 = 
$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[1]{'args'}[0]{'contents'}[1];
+$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[1]{'parent'} 
= $result_trees{'accent_on_table_line'}{'contents'}[0];
+$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[2]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[2]{'args'}[0];
+$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[2]{'args'}[0]{'contents'}[1]{'parent'}
 = 
$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[2]{'args'}[0];
+$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[2]{'args'}[0]{'contents'}[2]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[2]{'args'}[0]{'contents'}[2]{'args'}[0];
+$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[2]{'args'}[0]{'contents'}[2]{'args'}[0]{'parent'}
 = 
$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[2]{'args'}[0]{'contents'}[2];
+$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[2]{'args'}[0]{'contents'}[2]{'parent'}
 = 
$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[2]{'args'}[0];
+$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[2]{'args'}[0]{'contents'}[3]{'parent'}
 = 
$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[2]{'args'}[0];
+$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[2]{'args'}[0]{'parent'}
 = $result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[2];
+$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[2]{'extra'}{'misc_content'}[0]
 = 
$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[2]{'args'}[0]{'contents'}[1];
+$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[2]{'extra'}{'misc_content'}[1]
 = 
$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[2]{'args'}[0]{'contents'}[2];
+$result_trees{'accent_on_table_line'}{'contents'}[0]{'contents'}[2]{'parent'} 
= $result_trees{'accent_on_table_line'}{'contents'}[0];
+$result_trees{'accent_on_table_line'}{'contents'}[0]{'extra'}{'block_command_line_contents'}[0][0]
 = 
$result_trees{'accent_on_table_line'}{'contents'}[0]{'args'}[0]{'contents'}[1];
+$result_trees{'accent_on_table_line'}{'contents'}[0]{'parent'} = 
$result_trees{'accent_on_table_line'};
+$result_trees{'accent_on_table_line'}{'contents'}[1]{'parent'} = 
$result_trees{'accent_on_table_line'};
+
+$result_texis{'accent_on_table_line'} = '@table @~
address@hidden first item
address@hidden no at-command @code{code}
address@hidden table
+';
+
+
+$result_texts{'accent_on_table_line'} = 'first item
+no at-command code
+';
+
+$result_errors{'accent_on_table_line'} = [
+  {
+    'error_line' => ':1: warning: Accent command address@hidden' not allowed 
as @table argument
+',
+    'file_name' => '',
+    'line_nr' => 1,
+    'macro' => '',
+    'text' => 'Accent command address@hidden' not allowed as @table argument',
+    'type' => 'warning'
+  }
+];
+
+
+
+$result_converted{'plaintext'}->{'accent_on_table_line'} = 'first item
+no at-command `code\'
+';
+
+1;



reply via email to

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