[Top][All Lists]
[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 23:10:35 +0000 |
CVSROOT: /sources/texinfo
Module name: texinfo
Changes by: Patrice Dumas <pertusus> 10/10/09 23:10:34
Modified files:
tp/Texinfo : Parser.pm
tp/t : 60macro.t
tp/t/results/coverage: preformatted.pl
tp/t/results/macro: macro_in_menu.pl
Log message:
Handle macro for menu entry beginning.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/Texinfo/Parser.pm?cvsroot=texinfo&r1=1.54&r2=1.55
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/60macro.t?cvsroot=texinfo&r1=1.14&r2=1.15
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/coverage/preformatted.pl?cvsroot=texinfo&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/macro/macro_in_menu.pl?cvsroot=texinfo&r1=1.1&r2=1.2
Patches:
Index: Texinfo/Parser.pm
===================================================================
RCS file: /sources/texinfo/texinfo/tp/Texinfo/Parser.pm,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -b -r1.54 -r1.55
--- Texinfo/Parser.pm 9 Oct 2010 18:15:15 -0000 1.54
+++ Texinfo/Parser.pm 9 Oct 2010 23:10:34 -0000 1.55
@@ -1102,7 +1102,11 @@
or $current->{'contents'}->[-1]->{'cmdname'} eq 'comment')) {
$end_comment = pop @{$current->{'contents'}};
}
- if (address@hidden>{'contents'}}) {
+ if (address@hidden>{'contents'}}
+ # empty if only the end of line or spaces
+ or (@{$current->{'contents'}} == 1
+ and defined($current->{'contents'}->[-1]->{'text'})
+ and $current->{'contents'}->[-1]->{'text'} !~ /\S/)) {
$empty_menu_entry_node = 1;
push @{$current->{'contents'}}, $end_comment if ($end_comment);
}
@@ -1322,41 +1326,13 @@
)
# not def line
and $self->{'context_stack'}->[-1] ne 'def') {
- print STDERR "EMPTY LINE or COMMAND\n" if ($self->{'debug'});
+ print STDERR "BEGIN LINE\n" if ($self->{'debug'});
$line =~ s/([ \t]*)//;
push @{$current->{'contents'}}, { 'type' => 'empty_line',
'text' => $1,
'parent' => $current };
}
- 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') {
- my $menu = $current->{'parent'};
- pop @{$menu->{'contents'}} if (address@hidden>{'contents'}});
- $current = $menu;
- } else {
- # first parent is menu_entry
- $current = $current->{'parent'}->{'parent'};
- }
- push @{$current->{'contents'}}, { 'type' => 'menu_entry',
- 'parent' => $current,
- };
- $current = $current->{'contents'}->[-1];
- $current->{'args'} = [ { 'type' => 'menu_entry_leading_text',
- 'text' => $leading_text,
- 'parent' => $current },
- { 'type' => 'menu_entry_name',
- 'contents' => [],
- 'parent' => $current } ];
- $current = $current->{'args'}->[-1];
- }
- }
while (1) {
# in a raw or ignored conditional block command
@@ -1549,6 +1525,50 @@
$current->{'cmdname'}), $line_nr);
$current = $current->{'parent'};
}
+ # maybe a menu entry beginning
+ } elsif ($line =~ /^\*/ and $current->{'type'}
+ and ($current->{'type'} eq 'menu_comment'
+ or $current->{'type'} eq 'menu_entry_description')
+ and @{$current->{'contents'}}
+ and $current->{'contents'}->[-1]->{'type'}
+ and $current->{'contents'}->[-1]->{'type'} eq 'empty_line'
+ and $current->{'contents'}->[-1]->{'text'} eq '') {
+ print STDERR "MENU STAR\n" if ($self->{'debug'});
+ _abort_empty_line ($self, $current);
+ $line =~ s/^\*//;
+ push @{$current->{'contents'}}, { 'type' => 'menu_star',
+ 'text' => '*' };
+ } elsif ($line =~ /^\s+/ and @{$current->{'contents'}}
+ and $current->{'contents'}->[-1]->{'type'}
+ and $current->{'contents'}->[-1]->{'type'} eq 'menu_star') {
+ print STDERR "MENU ENTRY (certainly)\n" if ($self->{'debug'});
+ pop @{$current->{'contents'}};
+ $line =~ s/^(\s+)//;
+ my $leading_text = '*' . $1;
+ if ($current->{'type'} eq 'menu_comment') {
+ my $menu = $current->{'parent'};
+ pop @{$menu->{'contents'}} if (address@hidden>{'contents'}});
+ $current = $menu;
+ } else {
+ # first parent is menu_entry
+ $current = $current->{'parent'}->{'parent'};
+ }
+ push @{$current->{'contents'}}, { 'type' => 'menu_entry',
+ 'parent' => $current,
+ };
+ $current = $current->{'contents'}->[-1];
+ $current->{'args'} = [ { 'type' => 'menu_entry_leading_text',
+ 'text' => $leading_text,
+ 'parent' => $current },
+ { 'type' => 'menu_entry_name',
+ 'contents' => [],
+ 'parent' => $current } ];
+ $current = $current->{'args'}->[-1];
+ } elsif (@{$current->{'contents'}}
+ and $current->{'contents'}->[-1]->{'type'}
+ and $current->{'contents'}->[-1]->{'type'} eq 'menu_star') {
+ print STDERR "ABORT MENU STAR\n" if ($self->{'debug'});
+ delete $current->{'contents'}->[-1]->{'type'};
# REMACRO
} elsif ($line =~ s/^\@(["'address@hidden,\.!\?\s\*\-\^`=:\|\/\\])//o
or $line =~ s/^\@([[:alnum:]][[:alnum:]-]*)//o) {
@@ -1984,7 +2004,7 @@
'parent' => $current };
# end of the menu_entry_name, open the menu_entry_node.
} else {
- $line =~ s/^(\s*)//;
+ $line =~ s/^([ \t]*)//;
$separator .= $1;
$current = $current->{'parent'};
push @{$current->{'args'}}, { 'type' => 'menu_entry_separator',
Index: t/60macro.t
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/60macro.t,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- t/60macro.t 9 Oct 2010 18:15:15 -0000 1.14
+++ t/60macro.t 9 Oct 2010 23:10:34 -0000 1.15
@@ -29,7 +29,7 @@
['empty_end','@macro foo {aaa, }
in foo
@end macro'],
-[ 'bad_argument', '@macro
+['bad_argument', '@macro
in macro
@end macro
@@ -201,7 +201,12 @@
@space{} text after space.
'],
['macro_in_menu',
-'@macro star
+'
address@hidden star
+*
address@hidden macro
+
address@hidden star-spaces
*
@end macro
@@ -209,14 +214,21 @@
@end macro
address@hidden space
+
address@hidden macro
+
@macro two-colon
::
@end macro
@menu
address@hidden address@hidden description
address@hidden address@hidden description
@spaces{}
menu comment
address@hidden node::
address@hidden@space{}other node::
+* 3rd node: address@hidden
@end menu
'],
['nested_macro_call',
Index: t/results/coverage/preformatted.pl
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/results/coverage/preformatted.pl,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- t/results/coverage/preformatted.pl 9 Oct 2010 17:51:37 -0000 1.2
+++ t/results/coverage/preformatted.pl 9 Oct 2010 23:10:34 -0000 1.3
@@ -19,7 +19,8 @@
{
'parent' => {},
'text' => '
-'
+',
+ 'type' => 'empty_line'
},
{
'parent' => {},
@@ -84,7 +85,8 @@
{
'parent' => {},
'text' => '
-'
+',
+ 'type' => 'empty_line'
},
{
'parent' => {},
Index: t/results/macro/macro_in_menu.pl
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/results/macro/macro_in_menu.pl,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- t/results/macro/macro_in_menu.pl 9 Oct 2010 18:15:15 -0000 1.1
+++ t/results/macro/macro_in_menu.pl 9 Oct 2010 23:10:34 -0000 1.2
@@ -3,6 +3,12 @@
$result_trees{'macro_in_menu'} = {
'contents' => [
{
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ },
+ {
'args' => [
{
'parent' => {},
@@ -37,6 +43,37 @@
'args' => [
{
'parent' => {},
+ 'text' => 'star-spaces',
+ 'type' => 'macro_name'
+ }
+ ],
+ 'cmdname' => 'macro',
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => '*
+',
+ 'type' => 'raw'
+ }
+ ],
+ 'parent' => {},
+ 'special' => {
+ 'macro_line' => ' star-spaces
+',
+ 'macrobody' => '*
+'
+ }
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ },
+ {
+ 'args' => [
+ {
+ 'parent' => {},
'text' => 'spaces',
'type' => 'macro_name'
}
@@ -68,6 +105,37 @@
'args' => [
{
'parent' => {},
+ 'text' => 'space',
+ 'type' => 'macro_name'
+ }
+ ],
+ 'cmdname' => 'macro',
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'raw'
+ }
+ ],
+ 'parent' => {},
+ 'special' => {
+ 'macro_line' => ' space
+',
+ 'macrobody' => '
+'
+ }
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ },
+ {
+ 'args' => [
+ {
+ 'parent' => {},
'text' => 'two-colon',
'type' => 'macro_name'
}
@@ -99,51 +167,161 @@
'cmdname' => 'menu',
'contents' => [
{
+ 'args' => [
+ {
+ 'parent' => {},
+ 'text' => '* ',
+ 'type' => 'menu_entry_leading_text'
+ },
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'menu entry'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'menu_entry_node'
+ },
+ {
+ 'parent' => {},
+ 'text' => '::',
+ 'type' => 'menu_entry_separator'
+ },
+ {
'contents' => [
{
'parent' => {},
- 'text' => '* menu entry:: description
+ 'text' => ' description
'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'menu_entry_description'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'menu_entry'
},
{
'parent' => {},
'text' => '
',
- 'type' => 'empty_line'
+ 'type' => 'after_description_line'
},
{
+ 'contents' => [
+ {
'parent' => {},
'text' => 'menu comment
'
+ },
+ {
+ 'text' => '* node::
+'
+ },
+ {
+ 'text' => '* other node::
+'
}
],
'parent' => {},
'type' => 'menu_comment'
+ },
+ {
+ 'args' => [
+ {
+ 'parent' => {},
+ 'text' => '* ',
+ 'type' => 'menu_entry_leading_text'
+ },
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => '3rd node'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'menu_entry_name'
+ },
+ {
+ 'parent' => {},
+ 'text' => ': ',
+ 'type' => 'menu_entry_separator'
+ },
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'entry. description
+'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'menu_entry_node'
+ },
+ {
+ 'contents' => [],
+ 'parent' => {},
+ 'type' => 'menu_entry_description'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'menu_entry'
}
],
'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]{'args'}[0]{'parent'} =
$result_trees{'macro_in_menu'}{'contents'}[1];
+$result_trees{'macro_in_menu'}{'contents'}[1]{'contents'}[0]{'parent'} =
$result_trees{'macro_in_menu'}{'contents'}[1];
$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]{'args'}[0]{'parent'} =
$result_trees{'macro_in_menu'}{'contents'}[3];
+$result_trees{'macro_in_menu'}{'contents'}[3]{'contents'}[0]{'parent'} =
$result_trees{'macro_in_menu'}{'contents'}[3];
$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]{'args'}[0]{'parent'} =
$result_trees{'macro_in_menu'}{'contents'}[5];
+$result_trees{'macro_in_menu'}{'contents'}[5]{'contents'}[0]{'parent'} =
$result_trees{'macro_in_menu'}{'contents'}[5];
$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_trees{'macro_in_menu'}{'contents'}[7]{'args'}[0]{'parent'} =
$result_trees{'macro_in_menu'}{'contents'}[7];
+$result_trees{'macro_in_menu'}{'contents'}[7]{'contents'}[0]{'parent'} =
$result_trees{'macro_in_menu'}{'contents'}[7];
+$result_trees{'macro_in_menu'}{'contents'}[7]{'parent'} =
$result_trees{'macro_in_menu'};
+$result_trees{'macro_in_menu'}{'contents'}[8]{'parent'} =
$result_trees{'macro_in_menu'};
+$result_trees{'macro_in_menu'}{'contents'}[9]{'args'}[0]{'parent'} =
$result_trees{'macro_in_menu'}{'contents'}[9];
+$result_trees{'macro_in_menu'}{'contents'}[9]{'contents'}[0]{'parent'} =
$result_trees{'macro_in_menu'}{'contents'}[9];
+$result_trees{'macro_in_menu'}{'contents'}[9]{'parent'} =
$result_trees{'macro_in_menu'};
+$result_trees{'macro_in_menu'}{'contents'}[10]{'parent'} =
$result_trees{'macro_in_menu'};
+$result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[0]{'args'}[0]{'parent'}
= $result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[0];
+$result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[0]{'args'}[1]{'contents'}[0]{'parent'}
= $result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[0]{'args'}[1];
+$result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[0]{'args'}[1]{'parent'}
= $result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[0];
+$result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[0]{'args'}[2]{'parent'}
= $result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[0];
+$result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[0]{'args'}[3]{'contents'}[0]{'parent'}
= $result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[0]{'args'}[3];
+$result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[0]{'args'}[3]{'parent'}
= $result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[0];
+$result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[0]{'parent'} =
$result_trees{'macro_in_menu'}{'contents'}[11];
+$result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[1]{'parent'} =
$result_trees{'macro_in_menu'}{'contents'}[11];
+$result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[2]{'contents'}[0]{'parent'}
= $result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[2];
+$result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[2]{'parent'} =
$result_trees{'macro_in_menu'}{'contents'}[11];
+$result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[3]{'args'}[0]{'parent'}
= $result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[3];
+$result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[3]{'args'}[1]{'contents'}[0]{'parent'}
= $result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[3]{'args'}[1];
+$result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[3]{'args'}[1]{'parent'}
= $result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[3];
+$result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[3]{'args'}[2]{'parent'}
= $result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[3];
+$result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[3]{'args'}[3]{'contents'}[0]{'parent'}
= $result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[3]{'args'}[3];
+$result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[3]{'args'}[3]{'parent'}
= $result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[3];
+$result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[3]{'args'}[4]{'parent'}
= $result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[3];
+$result_trees{'macro_in_menu'}{'contents'}[11]{'contents'}[3]{'parent'} =
$result_trees{'macro_in_menu'}{'contents'}[11];
+$result_trees{'macro_in_menu'}{'contents'}[11]{'parent'} =
$result_trees{'macro_in_menu'};
+
+$result_texts{'macro_in_menu'} = '
address@hidden star
+*
address@hidden macro
-$result_texts{'macro_in_menu'} = '@macro star
address@hidden star-spaces
*
@end macro
@@ -151,6 +329,10 @@
@end macro
address@hidden space
+
address@hidden macro
+
@macro two-colon
::
@end macro
@@ -159,6 +341,9 @@
* menu entry:: description
menu comment
+* node::
+* other node::
+* 3rd node: entry. description
@end menu
';