[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
texinfo/tp TODO Texinfo/Parser.pm Texinfo/Conve...
From: |
Patrice Dumas |
Subject: |
texinfo/tp TODO Texinfo/Parser.pm Texinfo/Conve... |
Date: |
Sun, 31 Jul 2011 01:52:42 +0000 |
CVSROOT: /sources/texinfo
Module name: texinfo
Changes by: Patrice Dumas <pertusus> 11/07/31 01:52:42
Modified files:
tp : TODO
tp/Texinfo : Parser.pm
tp/Texinfo/Convert: HTML.pm
tp/t : 30sectioning.t
Added files:
tp/t/results/sectioning: node_up_external_node.pl
Log message:
Handle better commands in regions not expanded (like @copying and
@titlepage).
Output external manuals as node directions links title. Use NodeUp and
not
Up for link buttons.
No file name in href if footnotestyle is end.
Don't output special page if the corresponding element is the empty
string.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/TODO?cvsroot=texinfo&r1=1.144&r2=1.145
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/Texinfo/Parser.pm?cvsroot=texinfo&r1=1.268&r2=1.269
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/Texinfo/Convert/HTML.pm?cvsroot=texinfo&r1=1.116&r2=1.117
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/30sectioning.t?cvsroot=texinfo&r1=1.44&r2=1.45
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/sectioning/node_up_external_node.pl?cvsroot=texinfo&rev=1.1
Patches:
Index: TODO
===================================================================
RCS file: /sources/texinfo/texinfo/tp/TODO,v
retrieving revision 1.144
retrieving revision 1.145
diff -u -b -r1.144 -r1.145
--- TODO 20 Jul 2011 14:21:50 -0000 1.144
+++ TODO 31 Jul 2011 01:52:42 -0000 1.145
@@ -1,7 +1,7 @@
l 3273 in HTML.pm don't be in preformatted for the description.
but call the function for the other stuff.
-remove _*directions('This' and replace with new API.
+remove _*directions('This' and replace with new API. Done?
There should be an error message (report by Tom Tromey) in
t/results/xtable/text_between_item_itemx.pl
@@ -284,6 +284,11 @@
partly done:
indices/recursive_synindex.texi (only done: @synindex aaa bbb
@synindex bbb aaa)
+indices/index_special_region.texi (in HTML, split output test. For
+ anchor in @titlepage, for example.
+ It is mostly in 25regions.t too)
+ also tests for the footnotes in
+ titlepage/copying.
done: info_coverage
code.texi certainly not needed
Index: Texinfo/Parser.pm
===================================================================
RCS file: /sources/texinfo/texinfo/tp/Texinfo/Parser.pm,v
retrieving revision 1.268
retrieving revision 1.269
diff -u -b -r1.268 -r1.269
--- Texinfo/Parser.pm 14 Jul 2011 18:12:48 -0000 1.268
+++ Texinfo/Parser.pm 31 Jul 2011 01:52:42 -0000 1.269
@@ -957,6 +957,30 @@
}
}
+#Â for debugging
+sub _print_command_args_texi($)
+{
+ my $current = shift;
+ return '' if (!$current->{'cmdname'});
+ my $args = '';
+ my $with_brace;
+ if ($current->{'args'} and @{$current->{'args'}}) {
+ $with_brace
+ = ($current->{'args'}->[0]->{'type'} eq 'brace_command_arg'
+ or $current->{'args'}->[0]->{'type'} eq 'brace_command_context');
+ $args .= '{' if ($with_brace);
+ foreach my $arg (@{$current->{'args'}}) {
+ $args .= Texinfo::Convert::Texinfo::convert($arg).', ';
+ }
+ $args =~ s/, $//;
+ }
+ chomp($args);
+ if ($with_brace) {
+ $args .= '}';
+ }
+ return '@'.$current->{'cmdname'} .$args."\n";
+}
+
sub _print_current_keys($)
{
my $current = shift;
Index: Texinfo/Convert/HTML.pm
===================================================================
RCS file: /sources/texinfo/texinfo/tp/Texinfo/Convert/HTML.pm,v
retrieving revision 1.116
retrieving revision 1.117
diff -u -b -r1.116 -r1.117
--- Texinfo/Convert/HTML.pm 30 Jul 2011 09:46:19 -0000 1.116
+++ Texinfo/Convert/HTML.pm 31 Jul 2011 01:52:42 -0000 1.117
@@ -270,6 +270,7 @@
return $target->{'filename'};
}
}
+ #print STDERR "No filename
".Texinfo::Parser::_print_command_args_texi($command);
return undef;
}
@@ -351,11 +352,24 @@
my $href = '';
my $target_filename = $self->command_filename($command);
- if (defined($target_filename) and
- (!defined($filename)
- or $filename ne $target_filename)) {
+ if (!defined($target_filename)) {
+ # Happens if there are no pages, for example if OUTPUT is set to ''
+ # as in the test cases. Also for things in @titlepage when
+ # titlepage is not output.
+ if ($self->{'pages'} and $self->{'pages'}->[0]
+ and defined($self->{'pages'}->[0]->{'filename'})) {
+ # In that case use the first page.
+ # FIXME error message?
+ #print STDERR "No filename for $target\n";
+ $target_filename = $self->{'pages'}->[0]->{'filename'};
+ }
+ }
+ if (defined($target_filename)) {
+ if (!defined($filename)
+ or $filename ne $target_filename) {
$href .= $target_filename;
}
+ }
$href .= '#' . $target if ($target ne '');
return $href;
}
@@ -839,7 +853,7 @@
[ 'NodeUp', \&_default_node_direction ], ' ',
'Contents', 'Index'],
'LINKS_BUTTONS' => ['Top', 'Index', 'Contents', 'About',
- 'Up', 'NextFile', 'PrevFile'],
+ 'NodeUp', 'NextFile', 'PrevFile'],
# 'TOP_BUTTONS' => ['Back', 'Forward', ' ',
# 'Contents', 'Index', 'About'],
#
@@ -1371,14 +1385,20 @@
return '';
}
- my $document_filename = $self->{'current_filename'};
- my $footnote_filename = $self->command_filename($command);
+ my $document_filename;
+ my $footnote_filename;
+ if ($self->get_conf('footnotestyle') eq 'separate') {
+ $footnote_filename = $self->command_filename($command);
+ $document_filename = $self->{'current_filename'};
$footnote_filename = '' if (!defined($footnote_filename));
$document_filename = '' if (!defined($document_filename));
if ($document_filename eq $footnote_filename) {
$document_filename = $footnote_filename = '';
}
+ } else {
+ $document_filename = $footnote_filename = '';
+ }
my $footnote_text;
if ($args->[0]) {
$footnote_text = $args->[0]->{'normal'};
@@ -2661,7 +2681,7 @@
my $node
=
$self->label_command($root->{'extra'}->{'node_argument'}->{'normalized'});
# This is the node if USE_NODES, otherwise this may be the sectioning
- # if the sectioning command is really associated to the node
+ # command (if the sectioning command is really associated to the node)
my $command = $self->command_element_command($node);
$command = $node if (!$node->{'extra'}->{'associated_section'}
or $node->{'extra'}->{'associated_section'} ne
$command);
@@ -3021,7 +3041,6 @@
if ($self->get_conf('INLINE_CONTENTS')
and ($cmdname eq 'contents' or $cmdname eq 'shortcontents')
and ! $self->get_conf('set'.$cmdname.'aftertitlepage')) {
-# and $self->get_conf('USE_TITLEPAGE_FOR_TITLE'))) {
return $self->_contents_inline_element($cmdname, $command);
}
return '';
@@ -3702,8 +3721,14 @@
my $heading = $self->command_text($element, 'text');
$result .= &{$self->{'heading_text'}}($self, '', $heading, 0)."\n";
- $result .= &{$self->{'special_element_body'}}($self,
+ my $special_element_body .= &{$self->{'special_element_body'}}($self,
$special_element, $element);
+ # This may happen with footnotes in regions that are not expanded,
+ # like @copying or @titlepage
+ if ($special_element_body eq '') {
+ return '';
+ }
+ $result .= $special_element_body;
} elsif (!$element->{'element_prev'}) {
$result .= $self->_print_title();
if (!$element->{'element_next'}) {
@@ -4430,13 +4455,12 @@
and $self->{'special_pages_types'}->{'Footnotes'}) {
# FIXME element and root_command?
return ($self->{'special_pages_types'}->{'Footnotes'});
- }
# } elsif (($current->{'cmdname'} eq 'contents'
# or $current->{'cmdname'} eq 'shortcontents'
# or $current->{'cmdname'} eq 'summarycontents')
# and !$self->get_conf('INLINE_CONTENTS')) {
# setcontentsaftertitlepage
- # }
+ }
}
if ($current->{'parent'}) {
$current = $current->{'parent'};
@@ -4503,7 +4527,7 @@
foreach my $root_command (@{$element->{'contents'}}) {
if ($root_command->{'cmdname'}
and $root_command->{'cmdname'} eq 'node') {
- # Hapens for bogus nodes
+ # Happens for bogus nodes
#if (!defined($self->{'targets'}->{$root_command})
# or
!defined($self->{'targets'}->{$root_command}->{'node_filename'})) {
# print STDERR "BUG: no target/filename($root_command):
".Texinfo::Structuring::_print_root_command_texi($root_command)."\n";
@@ -4635,28 +4659,11 @@
if ($self->get_conf($cmdname)) {
if ($self->get_conf('INLINE_CONTENTS')
or ($self->get_conf('set'.$cmdname.'aftertitlepage'))) {
- # and $self->get_conf('USE_TITLEPAGE_FOR_TITLE'))) {
} else {
$do_special{$type} = 1;
}
}
}
- # if ($self->get_conf('contents')) {
- # if ($self->get_conf('INLINE_CONTENTS')
- # or ($self->get_conf('setcontentsaftertitlepage')
- # and $self->get_conf('USE_TITLEPAGE_FOR_TITLE'))) {
- # } else {
- # $do_special{'Contents'} = 1;
- # }
- # }
- # if ($self->get_conf('shortcontents')) {
- # if ($self->get_conf('INLINE_CONTENTS')
- # or ($self->get_conf('setshortcontentsaftertitlepage')
- # and $self->get_conf('USE_TITLEPAGE_FOR_TITLE'))) {
- # } else {
- # $do_special{'Overview'} = 1;
- # }
- # }
}
if ($self->{'extra'}->{'footnote'}
and $self->get_conf('footnotestyle') eq 'separate'
@@ -4715,6 +4722,7 @@
my $page = {'type' => 'page'};
push @{$page->{'contents'}}, $element;
$page->{'extra'}->{'element'} = $element;
+ $page->{'extra'}->{'special_page'} = $type;
$self->{'special_pages_types'}->{$type} = $page;
$element->{'parent'} = $page;
$self->_set_page_file($page, $filename);
@@ -4729,7 +4737,6 @@
$self->{'ids'}->{$id} = $element;
}
return ($special_elements, $pages);
-
}
sub _prepare_contents_elements($)
@@ -4743,7 +4750,6 @@
if ($self->get_conf($cmdname)) {
my $default_filename;
if ($self->get_conf('set'.$cmdname.'aftertitlepage')) {
- #next unless $self->get_conf('USE_TITLEPAGE_FOR_TITLE');
if ($self->{'pages'}) {
$default_filename = $self->{'pages'}->[0]->{'filename'};
}
@@ -4800,6 +4806,8 @@
$self->{'global_target_elements'}->{'First'} = $elements->[0];
$self->{'global_target_elements'}->{'Last'} = $elements->[-1];
+ # It is always the first printindex, even if it is not output (for example
+ # it is in @copying and @titlepage, which are certainly wrong constructs).
if ($self->{'extra'} and $self->{'extra'}->{'printindex'}) {
my ($page, $element, $root_command)
= $self->_get_page($self->{'extra'}->{'printindex'}->[0]);
@@ -5085,6 +5093,8 @@
return $self->command_href($external_node, $filename);
} elsif ($type eq 'text' or $type eq 'node') {
return $self->command_text($external_node);
+ } elsif ($type eq 'string') {
+ return $self->command_text($external_node, $type);
}
} elsif ($type eq 'node') {
$command = $element_target->{'extra'}->{'node'};
@@ -5612,8 +5622,6 @@
if (!defined($elements)) {
$result = $self->_convert($root);
- #my $footnotes = $self->_footnotes();
- #$result .= $footnotes;
} else {
foreach my $element (@$elements) {
my $element_text = $self->_convert($element);
@@ -5837,6 +5845,17 @@
foreach my $page (@$pages, @$special_pages) {
my $file_fh;
$self->{'current_filename'} = $page->{'filename'};
+ # First do the special pages, to avoid outputting these if they are
+ # empty.
+ my $special_page_content;
+ if ($page->{'extra'} and $page->{'extra'}->{'special_page'}) {
+ $special_page_content = '';
+ foreach my $element (@{$page->{'contents'}}) {
+ $special_page_content .= $self->_convert($element);
+ }
+ next if ($special_page_content eq '');
+ }
+ # Then open the file and output the elements or the special_page_content
if (!$files{$page->{'filename'}}->{'fh'}) {
$file_fh = $self->Texinfo::Common::open_out ($page->{'out_filename'},
$self->{'perl_encoding'});
@@ -5853,10 +5872,14 @@
} else {
$file_fh = $files{$page->{'filename'}}->{'fh'};
}
+ if (defined($special_page_content)) {
+ print $file_fh $special_page_content;
+ } else {
foreach my $element (@{$page->{'contents'}}) {
my $element_text = $self->_convert($element);
print $file_fh $element_text;
}
+ }
$self->{'file_counters'}->{$page->{'filename'}}--;
if ($self->{'file_counters'}->{$page->{'filename'}} == 0) {
# end file
@@ -5871,6 +5894,8 @@
foreach my $label (keys (%{$self->{'labels'}})) {
my $node = $self->{'labels'}->{$label};
my $target = $self->_get_target($node);
+ # filename may not be defined in case of an @anchor or similar in
+ # @titlepage, and @titlepage is not used.
my $filename = $self->command_filename($node);
my $node_filename;
if ($node->{'extra'}->{'normalized'} eq 'Top'
@@ -5884,7 +5909,7 @@
} else {
$node_filename = $target->{'node_filename'};
}
- if ($node_filename ne $filename) {
+ if (defined($filename) and $node_filename ne $filename) {
my $redirection_page
= &{$self->{'node_redirection_page'}}($self, $node);
my $out_filename;
Index: t/30sectioning.t
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/30sectioning.t,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -b -r1.44 -r1.45
--- t/30sectioning.t 27 Jul 2011 00:21:30 -0000 1.44
+++ t/30sectioning.t 31 Jul 2011 01:52:42 -0000 1.45
@@ -308,6 +308,15 @@
'@unnumbered
@unnumbered
'],
+['node_up_external_node',
+'@node Top
+
address@hidden
+* first::
address@hidden menu
+
address@hidden first, (manual1), (manual2) , (manual3)
+', {'test_split' => 'node'}]
);
my @tests_info = (
Index: t/results/sectioning/node_up_external_node.pl
===================================================================
RCS file: t/results/sectioning/node_up_external_node.pl
diff -N t/results/sectioning/node_up_external_node.pl
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ t/results/sectioning/node_up_external_node.pl 31 Jul 2011 01:52:42
-0000 1.1
@@ -0,0 +1,715 @@
+use vars qw(%result_texis %result_texts %result_trees %result_errors
+ %result_indices %result_sectioning %result_nodes %result_menus
+ %result_floats %result_converted %result_converted_errors
+ %result_elements %result_directions_text);
+
+use utf8;
+
+$result_trees{'node_up_external_node'} = [
+ {
+ 'contents' => [
+ {
+ 'contents' => [],
+ 'parent' => {},
+ 'type' => 'text_root'
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'extra' => {
+ 'command' => {}
+ },
+ 'parent' => {},
+ 'text' => ' ',
+ 'type' => 'empty_spaces_after_command'
+ },
+ {
+ 'parent' => {},
+ 'text' => 'Top'
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'spaces_at_end'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'misc_line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ },
+ {
+ 'cmdname' => 'menu',
+ 'contents' => [
+ {
+ 'extra' => {
+ 'command' => {}
+ },
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line_after_command'
+ },
+ {
+ 'args' => [
+ {
+ 'parent' => {},
+ 'text' => '* ',
+ 'type' => 'menu_entry_leading_text'
+ },
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'first'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'menu_entry_node'
+ },
+ {
+ 'parent' => {},
+ 'text' => '::',
+ 'type' => 'menu_entry_separator'
+ },
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => '
+'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'menu_entry_description'
+ }
+ ],
+ 'extra' => {
+ 'menu_entry_description' => {},
+ 'menu_entry_node' => {
+ 'node_content' => [
+ {}
+ ],
+ 'normalized' => 'first'
+ }
+ },
+ 'line_nr' => {
+ 'file_name' => '',
+ 'line_nr' => 4,
+ 'macro' => ''
+ },
+ 'parent' => {},
+ 'type' => 'menu_entry'
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'extra' => {
+ 'command' => {}
+ },
+ 'parent' => {},
+ 'text' => ' ',
+ 'type' => 'empty_spaces_after_command'
+ },
+ {
+ 'parent' => {},
+ 'text' => 'menu'
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'spaces_at_end'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'misc_line_arg'
+ }
+ ],
+ 'cmdname' => 'end',
+ 'extra' => {
+ 'command' => {},
+ 'command_argument' => 'menu',
+ 'text_arg' => 'menu'
+ },
+ 'line_nr' => {
+ 'file_name' => '',
+ 'line_nr' => 5,
+ 'macro' => ''
+ },
+ 'parent' => {}
+ }
+ ],
+ 'extra' => {
+ 'end_command' => {}
+ },
+ 'line_nr' => {
+ 'file_name' => '',
+ 'line_nr' => 3,
+ 'macro' => ''
+ },
+ 'parent' => {}
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {
+ 'node_content' => [
+ {}
+ ],
+ 'nodes_manuals' => [
+ {
+ 'node_content' => [],
+ 'normalized' => 'Top'
+ }
+ ],
+ 'normalized' => 'Top'
+ },
+ 'line_nr' => {
+ 'file_name' => '',
+ 'line_nr' => 1,
+ 'macro' => ''
+ },
+ 'parent' => {}
+ }
+ ],
+ 'extra' => {
+ 'element_command' => {},
+ 'node' => {}
+ },
+ 'type' => 'element'
+ },
+ {
+ 'contents' => [
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'extra' => {
+ 'command' => {}
+ },
+ 'parent' => {},
+ 'text' => ' ',
+ 'type' => 'empty_spaces_after_command'
+ },
+ {
+ 'parent' => {},
+ 'text' => 'first'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'misc_line_arg'
+ },
+ {
+ 'contents' => [
+ {
+ 'text' => ' ',
+ 'type' => 'empty_spaces_before_argument'
+ },
+ {
+ 'parent' => {},
+ 'text' => '(manual1)'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'misc_line_arg'
+ },
+ {
+ 'contents' => [
+ {
+ 'text' => ' ',
+ 'type' => 'empty_spaces_before_argument'
+ },
+ {
+ 'parent' => {},
+ 'text' => '(manual2)'
+ },
+ {
+ 'parent' => {},
+ 'text' => ' ',
+ 'type' => 'spaces_at_end'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'misc_line_arg'
+ },
+ {
+ 'contents' => [
+ {
+ 'text' => ' ',
+ 'type' => 'empty_spaces_before_argument'
+ },
+ {
+ 'parent' => {},
+ 'text' => '(manual3)'
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'spaces_at_end'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'misc_line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'contents' => [],
+ 'extra' => {
+ 'node_content' => [
+ {}
+ ],
+ 'nodes_manuals' => [
+ {
+ 'node_content' => [],
+ 'normalized' => 'first'
+ },
+ {
+ 'manual_content' => [
+ {
+ 'parent' => {},
+ 'text' => 'manual1'
+ }
+ ]
+ },
+ {
+ 'manual_content' => [
+ {
+ 'parent' => {},
+ 'text' => 'manual2'
+ }
+ ]
+ },
+ {
+ 'manual_content' => [
+ {
+ 'parent' => {},
+ 'text' => 'manual3'
+ }
+ ]
+ }
+ ],
+ 'normalized' => 'first'
+ },
+ 'line_nr' => {
+ 'file_name' => '',
+ 'line_nr' => 7,
+ 'macro' => ''
+ },
+ 'parent' => {}
+ }
+ ],
+ 'element_prev' => {},
+ 'extra' => {
+ 'element_command' => {},
+ 'node' => {}
+ },
+ 'type' => 'element'
+ }
+];
+$result_trees{'node_up_external_node'}[0]{'contents'}[0]{'parent'} =
$result_trees{'node_up_external_node'}[0];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'extra'}{'command'}
= $result_trees{'node_up_external_node'}[0]{'contents'}[1];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
= $result_trees{'node_up_external_node'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'args'}[0]{'contents'}[1]{'parent'}
= $result_trees{'node_up_external_node'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'args'}[0]{'contents'}[2]{'parent'}
= $result_trees{'node_up_external_node'}[0]{'contents'}[1]{'args'}[0];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'args'}[0]{'parent'}
= $result_trees{'node_up_external_node'}[0]{'contents'}[1];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[0]{'parent'}
= $result_trees{'node_up_external_node'}[0]{'contents'}[1];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[0]{'extra'}{'command'}
= $result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[0]{'parent'}
= $result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[0]{'parent'}
=
$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[1];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[1]{'contents'}[0]{'parent'}
=
$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[1];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[1]{'parent'}
=
$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[1];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[2]{'parent'}
=
$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[1];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[3]{'contents'}[0]{'parent'}
=
$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[3];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[3]{'parent'}
=
$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[1];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[1]{'extra'}{'menu_entry_description'}
=
$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[3];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[1]{'extra'}{'menu_entry_node'}{'node_content'}[0]
=
$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[1]{'contents'}[0];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[1]{'parent'}
= $result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[2]{'args'}[0]{'contents'}[0]{'extra'}{'command'}
=
$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[2];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[2]{'args'}[0]{'contents'}[0]{'parent'}
=
$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[2]{'args'}[0];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[2]{'args'}[0]{'contents'}[1]{'parent'}
=
$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[2]{'args'}[0];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[2]{'args'}[0]{'contents'}[2]{'parent'}
=
$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[2]{'args'}[0];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[2]{'args'}[0]{'parent'}
=
$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[2];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[2]{'extra'}{'command'}
= $result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[2]{'parent'}
= $result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'extra'}{'end_command'}
=
$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'contents'}[2];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[1]{'parent'}
= $result_trees{'node_up_external_node'}[0]{'contents'}[1];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'contents'}[2]{'parent'}
= $result_trees{'node_up_external_node'}[0]{'contents'}[1];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'extra'}{'node_content'}[0]
=
$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'args'}[0]{'contents'}[1];
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'extra'}{'nodes_manuals'}[0]{'node_content'}
=
$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'extra'}{'node_content'};
+$result_trees{'node_up_external_node'}[0]{'contents'}[1]{'parent'} =
$result_trees{'node_up_external_node'}[0];
+$result_trees{'node_up_external_node'}[0]{'extra'}{'element_command'} =
$result_trees{'node_up_external_node'}[0]{'contents'}[1];
+$result_trees{'node_up_external_node'}[0]{'extra'}{'node'} =
$result_trees{'node_up_external_node'}[0]{'contents'}[1];
+$result_trees{'node_up_external_node'}[1]{'contents'}[0]{'args'}[0]{'contents'}[0]{'extra'}{'command'}
= $result_trees{'node_up_external_node'}[1]{'contents'}[0];
+$result_trees{'node_up_external_node'}[1]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
= $result_trees{'node_up_external_node'}[1]{'contents'}[0]{'args'}[0];
+$result_trees{'node_up_external_node'}[1]{'contents'}[0]{'args'}[0]{'contents'}[1]{'parent'}
= $result_trees{'node_up_external_node'}[1]{'contents'}[0]{'args'}[0];
+$result_trees{'node_up_external_node'}[1]{'contents'}[0]{'args'}[0]{'parent'}
= $result_trees{'node_up_external_node'}[1]{'contents'}[0];
+$result_trees{'node_up_external_node'}[1]{'contents'}[0]{'args'}[1]{'contents'}[1]{'parent'}
= $result_trees{'node_up_external_node'}[1]{'contents'}[0]{'args'}[1];
+$result_trees{'node_up_external_node'}[1]{'contents'}[0]{'args'}[1]{'parent'}
= $result_trees{'node_up_external_node'}[1]{'contents'}[0];
+$result_trees{'node_up_external_node'}[1]{'contents'}[0]{'args'}[2]{'contents'}[1]{'parent'}
= $result_trees{'node_up_external_node'}[1]{'contents'}[0]{'args'}[2];
+$result_trees{'node_up_external_node'}[1]{'contents'}[0]{'args'}[2]{'contents'}[2]{'parent'}
= $result_trees{'node_up_external_node'}[1]{'contents'}[0]{'args'}[2];
+$result_trees{'node_up_external_node'}[1]{'contents'}[0]{'args'}[2]{'parent'}
= $result_trees{'node_up_external_node'}[1]{'contents'}[0];
+$result_trees{'node_up_external_node'}[1]{'contents'}[0]{'args'}[3]{'contents'}[1]{'parent'}
= $result_trees{'node_up_external_node'}[1]{'contents'}[0]{'args'}[3];
+$result_trees{'node_up_external_node'}[1]{'contents'}[0]{'args'}[3]{'contents'}[2]{'parent'}
= $result_trees{'node_up_external_node'}[1]{'contents'}[0]{'args'}[3];
+$result_trees{'node_up_external_node'}[1]{'contents'}[0]{'args'}[3]{'parent'}
= $result_trees{'node_up_external_node'}[1]{'contents'}[0];
+$result_trees{'node_up_external_node'}[1]{'contents'}[0]{'extra'}{'node_content'}[0]
=
$result_trees{'node_up_external_node'}[1]{'contents'}[0]{'args'}[0]{'contents'}[1];
+$result_trees{'node_up_external_node'}[1]{'contents'}[0]{'extra'}{'nodes_manuals'}[0]{'node_content'}
=
$result_trees{'node_up_external_node'}[1]{'contents'}[0]{'extra'}{'node_content'};
+$result_trees{'node_up_external_node'}[1]{'contents'}[0]{'extra'}{'nodes_manuals'}[1]{'manual_content'}[0]{'parent'}
= $result_trees{'node_up_external_node'}[1]{'contents'}[0]{'args'}[1];
+$result_trees{'node_up_external_node'}[1]{'contents'}[0]{'extra'}{'nodes_manuals'}[2]{'manual_content'}[0]{'parent'}
= $result_trees{'node_up_external_node'}[1]{'contents'}[0]{'args'}[2];
+$result_trees{'node_up_external_node'}[1]{'contents'}[0]{'extra'}{'nodes_manuals'}[3]{'manual_content'}[0]{'parent'}
= $result_trees{'node_up_external_node'}[1]{'contents'}[0]{'args'}[3];
+$result_trees{'node_up_external_node'}[1]{'contents'}[0]{'parent'} =
$result_trees{'node_up_external_node'}[1];
+$result_trees{'node_up_external_node'}[1]{'element_prev'} =
$result_trees{'node_up_external_node'}[0];
+$result_trees{'node_up_external_node'}[1]{'extra'}{'element_command'} =
$result_trees{'node_up_external_node'}[1]{'contents'}[0];
+$result_trees{'node_up_external_node'}[1]{'extra'}{'node'} =
$result_trees{'node_up_external_node'}[1]{'contents'}[0];
+
+$result_texis{'node_up_external_node'} = '@node Top
+
address@hidden
+* first::
address@hidden menu
+
address@hidden first, (manual1), (manual2) , (manual3)
+';
+
+
+$result_texts{'node_up_external_node'} = '
+* first::
+
+';
+
+$result_sectioning{'node_up_external_node'} = {};
+
+$result_nodes{'node_up_external_node'} = {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'Top'
+ },
+ 'menu_child' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'first'
+ },
+ 'node_next' => {
+ 'extra' => {
+ 'manual_content' => [
+ {
+ 'text' => 'manual1'
+ }
+ ]
+ }
+ },
+ 'node_prev' => {
+ 'extra' => {
+ 'manual_content' => [
+ {
+ 'text' => 'manual2'
+ }
+ ]
+ }
+ },
+ 'node_up' => {
+ 'extra' => {
+ 'manual_content' => [
+ {
+ 'text' => 'manual3'
+ }
+ ]
+ }
+ }
+ },
+ 'menus' => [
+ {
+ 'cmdname' => 'menu',
+ 'extra' => {
+ 'end_command' => {
+ 'cmdname' => 'end',
+ 'extra' => {
+ 'command' => {},
+ 'command_argument' => 'menu',
+ 'text_arg' => 'menu'
+ }
+ }
+ }
+ }
+ ],
+ 'node_next' => {},
+ 'node_up' => {
+ 'extra' => {
+ 'manual_content' => [
+ {
+ 'text' => 'dir'
+ }
+ ]
+ }
+ }
+};
+$result_nodes{'node_up_external_node'}{'menus'}[0]{'extra'}{'end_command'}{'extra'}{'command'}
= $result_nodes{'node_up_external_node'}{'menus'}[0];
+$result_nodes{'node_up_external_node'}{'node_next'} =
$result_nodes{'node_up_external_node'}{'menu_child'};
+
+$result_menus{'node_up_external_node'} = {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'Top'
+ },
+ 'menu_child' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'first'
+ },
+ 'menu_up' => {},
+ 'menu_up_hash' => {
+ 'Top' => 1
+ }
+ }
+};
+$result_menus{'node_up_external_node'}{'menu_child'}{'menu_up'} =
$result_menus{'node_up_external_node'};
+
+$result_errors{'node_up_external_node'} = [
+ {
+ 'error_line' => ':7: warning: For `first\', up in menu `Top\' and up
`(manual3)\' don\'t match
+',
+ 'file_name' => '',
+ 'line_nr' => 7,
+ 'macro' => '',
+ 'text' => 'For `first\', up in menu `Top\' and up `(manual3)\' don\'t
match',
+ 'type' => 'warning'
+ }
+];
+
+
+$result_elements{'node_up_external_node'} = [
+ {
+ 'extra' => {
+ 'directions' => {
+ 'Forward' => {
+ 'extra' => {
+ 'directions' => {
+ 'Back' => {},
+ 'NodeBack' => {},
+ 'NodeForward' => {
+ 'extra' => {
+ 'manual_content' => [
+ {
+ 'text' => 'manual1'
+ }
+ ]
+ },
+ 'type' => 'external_node'
+ },
+ 'NodeNext' => {
+ 'extra' => {
+ 'manual_content' => []
+ },
+ 'type' => 'external_node'
+ },
+ 'NodePrev' => {
+ 'extra' => {
+ 'manual_content' => [
+ {
+ 'text' => 'manual2'
+ }
+ ]
+ },
+ 'type' => 'external_node'
+ },
+ 'NodeUp' => {
+ 'extra' => {
+ 'manual_content' => [
+ {
+ 'text' => 'manual3'
+ }
+ ]
+ },
+ 'type' => 'external_node'
+ },
+ 'This' => {},
+ 'Up' => {
+ 'extra' => {
+ 'manual_content' => []
+ },
+ 'type' => 'external_node'
+ }
+ },
+ 'element_command' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'first'
+ },
+ 'menu_up' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'Top'
+ },
+ 'menu_child' => {}
+ },
+ 'menu_up_hash' => {
+ 'Top' => 1
+ }
+ },
+ 'node' => {}
+ },
+ 'type' => 'element'
+ },
+ 'NodeForward' => {},
+ 'NodeNext' => {},
+ 'NodeUp' => {
+ 'extra' => {
+ 'manual_content' => [
+ {
+ 'text' => 'dir'
+ }
+ ]
+ },
+ 'type' => 'external_node'
+ },
+ 'This' => {}
+ },
+ 'element_command' => {},
+ 'node' => {}
+ },
+ 'type' => 'element'
+ },
+ {}
+];
+$result_elements{'node_up_external_node'}[0]{'extra'}{'directions'}{'Forward'}{'extra'}{'directions'}{'Back'}
= $result_elements{'node_up_external_node'}[0];
+$result_elements{'node_up_external_node'}[0]{'extra'}{'directions'}{'Forward'}{'extra'}{'directions'}{'NodeBack'}
= $result_elements{'node_up_external_node'}[0];
+$result_elements{'node_up_external_node'}[0]{'extra'}{'directions'}{'Forward'}{'extra'}{'directions'}{'NodeNext'}{'extra'}{'manual_content'}
=
$result_elements{'node_up_external_node'}[0]{'extra'}{'directions'}{'Forward'}{'extra'}{'directions'}{'NodeForward'}{'extra'}{'manual_content'};
+$result_elements{'node_up_external_node'}[0]{'extra'}{'directions'}{'Forward'}{'extra'}{'directions'}{'This'}
=
$result_elements{'node_up_external_node'}[0]{'extra'}{'directions'}{'Forward'};
+$result_elements{'node_up_external_node'}[0]{'extra'}{'directions'}{'Forward'}{'extra'}{'directions'}{'Up'}{'extra'}{'manual_content'}
=
$result_elements{'node_up_external_node'}[0]{'extra'}{'directions'}{'Forward'}{'extra'}{'directions'}{'NodeUp'}{'extra'}{'manual_content'};
+$result_elements{'node_up_external_node'}[0]{'extra'}{'directions'}{'Forward'}{'extra'}{'element_command'}{'menu_up'}{'menu_child'}
=
$result_elements{'node_up_external_node'}[0]{'extra'}{'directions'}{'Forward'}{'extra'}{'element_command'};
+$result_elements{'node_up_external_node'}[0]{'extra'}{'directions'}{'Forward'}{'extra'}{'node'}
=
$result_elements{'node_up_external_node'}[0]{'extra'}{'directions'}{'Forward'}{'extra'}{'element_command'};
+$result_elements{'node_up_external_node'}[0]{'extra'}{'directions'}{'NodeForward'}
=
$result_elements{'node_up_external_node'}[0]{'extra'}{'directions'}{'Forward'};
+$result_elements{'node_up_external_node'}[0]{'extra'}{'directions'}{'NodeNext'}
=
$result_elements{'node_up_external_node'}[0]{'extra'}{'directions'}{'Forward'};
+$result_elements{'node_up_external_node'}[0]{'extra'}{'directions'}{'This'} =
$result_elements{'node_up_external_node'}[0];
+$result_elements{'node_up_external_node'}[0]{'extra'}{'element_command'} =
$result_elements{'node_up_external_node'}[0]{'extra'}{'directions'}{'Forward'}{'extra'}{'element_command'}{'menu_up'};
+$result_elements{'node_up_external_node'}[0]{'extra'}{'node'} =
$result_elements{'node_up_external_node'}[0]{'extra'}{'directions'}{'Forward'}{'extra'}{'element_command'}{'menu_up'};
+$result_elements{'node_up_external_node'}[1] =
$result_elements{'node_up_external_node'}[0]{'extra'}{'directions'}{'Forward'};
+
+
+
+$result_directions_text{'node_up_external_node'} = 'element: @node Top
+ Forward: @node first
+ NodeForward: @node first
+ NodeNext: @node first
+ NodeUp: (dir)
+ This: @node Top
+element: @node first
+ Back: @node Top
+ NodeBack: @node Top
+ NodeForward: (manual1)
+ NodeNext: (manual1)
+ NodePrev: (manual2)
+ NodeUp: (manual3)
+ This: @node first
+ Up: (manual3)
+';
+
+
+$result_converted{'plaintext'}->{'node_up_external_node'} = '* Menu:
+
+* first::
+
+';
+
+
+$result_converted{'html'}->{'node_up_external_node'} = '<!DOCTYPE html PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by texi2html, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>Untitled Document</title>
+
+<meta name="description" content="Untitled Document">
+<meta name="keywords" content="Untitled Document">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="texi2html">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link href="#Top" rel="start" title="Top">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smalllisp {margin-left: 3.2em}
+pre.display {font-family: serif}
+pre.format {font-family: serif}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: serif; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: serif; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nocodebreak {white-space:pre}
+span.nolinebreak {white-space:pre}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF"
vlink="#800080" alink="#FF0000">
+
+<a name="Top"></a>
+<div class="header">
+<p>
+Next: <a href="#first" accesskey="n" rel="next">first</a>, Up: <a
href="dir.html#Top" accesskey="u" rel="up">(dir)</a> </p>
+</div>
+<h1 class="node-heading">Top</h1>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">• <a href="#first"
accesskey="1">first</a>:</td><td> </td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="first"></a>
+<div class="header">
+<p>
+Next: <a href="manual1.html#Top" accesskey="n" rel="next">(manual1)</a>,
Previous: <a href="manual2.html#Top" accesskey="p"
rel="previous">(manual2)</a>, Up: <a href="manual3.html#Top" accesskey="u"
rel="up">(manual3)</a> </p>
+</div>
+<h3 class="node-heading">first</h3>
+<hr>
+<p>
+
+
+</p>
+</body>
+</html>
+';
+
+$result_converted_errors{'html'}->{'node_up_external_node'} = [
+ {
+ 'error_line' => 'warning: Must specify a title with a title command or @top
+',
+ 'text' => 'Must specify a title with a title command or @top',
+ 'type' => 'warning'
+ }
+];
+
+
+1;