[Top][All Lists]
[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'
+ }
+];
+
+