[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 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'} = [];
+
+