[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
texinfo/tp texi2any.pl Texinfo/Convert/Info.pm ...
From: |
Patrice Dumas |
Subject: |
texinfo/tp texi2any.pl Texinfo/Convert/Info.pm ... |
Date: |
Sat, 29 Jan 2011 23:57:23 +0000 |
CVSROOT: /sources/texinfo
Module name: texinfo
Changes by: Patrice Dumas <pertusus> 11/01/29 23:57:22
Modified files:
tp : texi2any.pl
tp/Texinfo/Convert: Info.pm Plaintext.pm
tp/t : test_utils.pl
tp/t/results/def: all_commands_delimiters_printindex.pl
all_commands_printindex.pl
Added files:
tp/t/results/info_tests: paragraphindent_and_preamble.pl
Log message:
Global multiple commands are only set for @copying formatting.
Handle files tests more like normal tests (currently no file tests
in the test suite...).
output() for info returns the result instead of outputting to a file
if 'OUTFILE' is set to ''.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/texi2any.pl?cvsroot=texinfo&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/Texinfo/Convert/Info.pm?cvsroot=texinfo&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/Texinfo/Convert/Plaintext.pm?cvsroot=texinfo&r1=1.59&r2=1.60
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/test_utils.pl?cvsroot=texinfo&r1=1.66&r2=1.67
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/def/all_commands_delimiters_printindex.pl?cvsroot=texinfo&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/def/all_commands_printindex.pl?cvsroot=texinfo&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/info_tests/paragraphindent_and_preamble.pl?cvsroot=texinfo&rev=1.1
Patches:
Index: texi2any.pl
===================================================================
RCS file: /sources/texinfo/texinfo/tp/texi2any.pl,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- texi2any.pl 28 Jan 2011 22:33:30 -0000 1.10
+++ texi2any.pl 29 Jan 2011 23:57:21 -0000 1.11
@@ -343,7 +343,12 @@
my @css_files = ();
my @css_refs = ();
-my $converter_default_options = {};
+# defaults for options relevant in the main program, and not undef.
+#Â Others are set in the converters.
+#Â Other relevant options (undef) are NO_WARN FORCE OUTFILE
+
+my $converter_default_options = {'ERROR_LIMIT' => 100};
+
my $parser_default_options = {'expanded_formats' => [], 'values' => {}};
Texinfo::Config::_load_config($converter_default_options);
@@ -369,6 +374,7 @@
warn sprintf(__p("warning: warning_message", "warning: %s\n"), $text);
}
+
my $result_options = Getopt::Long::GetOptions (
'macro-expand|E=s' => sub { push @texi2dvi_args, '-E';
$macro_expand = $_[1]; },
Index: Texinfo/Convert/Info.pm
===================================================================
RCS file: /sources/texinfo/texinfo/tp/Texinfo/Convert/Info.pm,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- Texinfo/Convert/Info.pm 29 Jan 2011 14:04:37 -0000 1.16
+++ Texinfo/Convert/Info.pm 29 Jan 2011 23:57:21 -0000 1.17
@@ -54,7 +54,7 @@
my $self = shift;
my $root = shift;
- my $result = '';
+ my $result;
push @{$self->{'count_context'}}, {'lines' => 0, 'bytes' => 0,
'locations' => []};
@@ -71,34 +71,49 @@
my $header_bytes = $self->count_bytes($header);
my $elements = Texinfo::Structuring::split_by_node($root);
- my $fh = $self->Texinfo::Common::open_out ($self->{'output_file'},
+ my $fh;
+ if (! $self->{'output_file'} eq '') {
+ $fh = $self->Texinfo::Common::open_out ($self->{'output_file'},
$self->{'encoding'});
if (!$fh) {
$self->document_error(sprintf($self->__("Could not open %s for writing:
$!"),
$self->{'output_file'}));
return undef;
}
+ }
if (!defined($elements)) {
$self->document_warn($self->__("Document without nodes."));
- ($result) = $self->_convert($root);
+ my $output = $header.$self->_convert($root);
my ($footnotes) = $self->_footnotes();
- $result .= $footnotes;
- print $fh $result;
+ $output .= $footnotes;
+ if ($fh) {
+ print $fh $output;
close ($fh);
} else {
+ $result = $output;
+ }
+ } else {
my $out_file_nr = 1;
my @indirect_files;
+ if ($fh) {
print $fh $header;
+ } else {
+ $result = $header;
+ }
$self->{'count_context'}->[-1]->{'bytes'} += $header_bytes;
my $first_node_bytes_count = $header_bytes;
my @nodes = @$elements;
while (@nodes) {
my $node = shift @nodes;
- my ($node_text) = $self->_convert_node($node);
+ my $node_text = $self->_convert_node($node);
+ if ($fh) {
print $fh $node_text;
+ } else {
+ $result .= $node_text;
+ }
if (defined($self->{'SPLIT_SIZE'})
and $self->{'count_context'}->[-1]->{'bytes'} >
- $out_file_nr * $self->{'SPLIT_SIZE'} and @nodes) {
+ $out_file_nr * $self->{'SPLIT_SIZE'} and @nodes and $fh) {
close ($fh);
if ($out_file_nr == 1) {
unless (rename ($self->{'output_file'},
@@ -128,8 +143,8 @@
$self->{'count_context'}->[-1]->{'bytes'}];
#print STDERR join(' --> ', @{$indirect_files[-1]}) ."\n";
}
- #$result .= $node_text;
}
+ my $tag_text = '';
if ($out_file_nr > 1) {
close ($fh);
$fh = $self->Texinfo::Common::open_out($self->{'output_file'},
@@ -140,15 +155,15 @@
$self->{'output_file'}.'-'.$out_file_nr));
return undef;
}
- print $fh $header;
- print $fh "\x{1F}\nIndirect:";
+ $tag_text = $header;
+ $tag_text .= "\x{1F}\nIndirect:";
foreach my $indirect (@indirect_files) {
- print $fh "\n$indirect->[0]: $indirect->[1]";
+ $tag_text .= "\n$indirect->[0]: $indirect->[1]";
}
}
- print $fh "\n\x{1F}\nTag Table:\n";
+ $tag_text .= "\n\x{1F}\nTag Table:\n";
if ($out_file_nr > 1) {
- print $fh "(Indirect)\n";
+ $tag_text .= "(Indirect)\n";
}
foreach my $label (@{$self->{'count_context'}->[-1]->{'locations'}}) {
next unless ($label->{'root'});
@@ -156,16 +171,21 @@
$prefix = 'Node' if ($label->{'root'}->{'cmdname'} eq 'node');
my ($label_text) = $self->convert_line({'type' => 'code',
'contents' => $label->{'root'}->{'extra'}->{'node_content'}});
- print $fh "$prefix: $label_text\x{7F}$label->{'bytes'}\n";
+ $tag_text .= "$prefix: $label_text\x{7F}$label->{'bytes'}\n";
}
- print $fh "\x{1F}\nEnd Tag Table\n";
+ $tag_text .= "\x{1F}\nEnd Tag Table\n";
my $coding = $self->{'encoding'};
$coding = $self->{'documentencoding'} if (!defined($coding));
if ($coding and $coding ne 'us-ascii') {
- print $fh "\n\x{1F}\nLocal Variables:\ncoding: $coding\nEnd:\n";
+ $tag_text .= "\n\x{1F}\nLocal Variables:\ncoding: $coding\nEnd:\n";
}
+ if ($fh) {
+ print $fh $tag_text;
+ } else {
+ $result .= $tag_text;
}
- return $self;
+ }
+ return $result;
}
#Â this also determines the output file
@@ -219,9 +239,11 @@
$self->{'empty_lines_count'} = 1;
if ($self->{'extra'} and $self->{'extra'}->{'copying'}) {
+ $self->_set_global_multiple_commands();
my $copying = $self->_convert({'contents' =>
$self->{'extra'}->{'copying'}->{'contents'}});
$result .= $copying;
+ $self->_unset_global_multiple_commands();
}
if ($self->{'info'}->{'dircategory_direntry'}) {
$self->{'ignored_commands'}->{'direntry'} = 0;
@@ -243,18 +265,6 @@
return $result;
}
-sub count_bytes($$)
-{
- my $self = shift;
- my $string = shift;
-
- if ($self->{'output_encoding'} and $self->{'output_encoding'} ne 'us-ascii')
{
- return length(Encode::encode($self->{'output_encoding'}, $string));
- } else {
- return length($string);
- }
-}
-
sub _contents($$$)
{
my $self = shift;
Index: Texinfo/Convert/Plaintext.pm
===================================================================
RCS file: /sources/texinfo/texinfo/tp/Texinfo/Convert/Plaintext.pm,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -b -r1.59 -r1.60
--- Texinfo/Convert/Plaintext.pm 29 Jan 2011 14:04:37 -0000 1.59
+++ Texinfo/Convert/Plaintext.pm 29 Jan 2011 23:57:21 -0000 1.60
@@ -300,6 +300,34 @@
}
}
+sub _set_global_multiple_commands($)
+{
+ my $converter = shift;
+
+ foreach my $global_command (@informative_global_commands) {
+ if (defined($converter->{'extra'}->{$global_command})
+ and ref($converter->{'extra'}->{$global_command}) eq 'ARRAY') {
+ my $root = $converter->{'extra'}->{$global_command}->[0];
+ $converter->_informative_command($root);
+ }
+ }
+}
+
+sub _unset_global_multiple_commands($)
+{
+ my $converter = shift;
+
+ foreach my $global_command (@informative_global_commands) {
+ if (defined($converter->{'extra'}->{$global_command})
+ and ref($converter->{'extra'}->{$global_command}) eq 'ARRAY') {
+ my $root = $converter->{'extra'}->{$global_command}->[0];
+ next if ($converter->{'set'}->{$root->{'cmdname'}}
+ or !exists($defaults{$root->{'cmdname'}}));
+ $converter->{$root->{'cmdname'}} = $defaults{$root->{'cmdname'}};
+ }
+ }
+}
+
sub converter(;$)
{
my $class = shift;
@@ -348,12 +376,14 @@
foreach my $global_command (@informative_global_commands) {
if (defined($converter->{'extra'}->{$global_command})) {
my $root = $converter->{'extra'}->{$global_command};
- if (ref($root) eq 'ARRAY') {
- $root = $converter->{'extra'}->{$global_command}->[0];
- }
+ #if (ref($root) eq 'ARRAY') {
+ # $root = $converter->{'extra'}->{$global_command}->[0];
+ #}
+ if (ref($root) ne 'ARRAY') {
$converter->_informative_command($root);
}
}
+ }
delete $conf->{'parser'};
}
foreach my $key (keys(%$conf)) {
@@ -1720,6 +1750,15 @@
$self->{'empty_lines_count'} = 0;
my $conf;
# indent. Not first paragraph.
+ if ($self->{'DEBUG'}) {
+ print STDERR "OPEN PARA ($self->{'format_context'}->[-1]->{'cmdname'})
"
+ . "cnt ".
+ (defined($self->{'format_context'}->[-1]->{'counter'}) ?
+ $self->{'format_context'}->[-1]->{'counter'} : 'UNDEF'). ' '
+ . "para cnt $self->{'format_context'}->[-1]->{'paragraph_count'} "
+ . "fparaindent $self->{'firstparagraphindent'} "
+ . "paraindent $self->{'paragraphindent'}\n";
+ }
if ($self->{'format_context'}->[-1]->{'cmdname'} eq '_top_format'
and ($self->{'format_context'}->[-1]->{'paragraph_count'}
or $self->{'firstparagraphindent'} eq 'insert')
Index: t/test_utils.pl
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/test_utils.pl,v
retrieving revision 1.66
retrieving revision 1.67
diff -u -b -r1.66 -r1.67
--- t/test_utils.pl 23 Jan 2011 21:18:26 -0000 1.66
+++ t/test_utils.pl 29 Jan 2011 23:57:21 -0000 1.67
@@ -196,8 +196,10 @@
my $parser = shift;
my $converter =
Texinfo::Convert::Info->converter ({'DEBUG' => $self->{'DEBUG'},
- 'parser' => $parser });
- my $result = $converter->convert($tree);
+ 'parser' => $parser,
+ 'OUTFILE' => ''});
+ my $result = $converter->output($tree);
+ die if (!defined($result));
my ($errors, $error_nrs) = $converter->errors();
return ($errors, $result);
}
@@ -225,13 +227,16 @@
my $tests_count = 0;
- if (ref($test_case) eq 'ARRAY') {
$test_name = shift @$test_case;
+ die if (!defined($test_name));
$test_text = shift @$test_case;
$parser_options = shift @$test_case if (@$test_case);
- } else {
- $test_name = basename($test_case, '.texi');
+ my $test_file;
+ if ($parser_options->{'test_file'}) {
+ $test_file = $parser_options->{'test_file'};
+ delete $parser_options->{'test_file'};
}
+
my @tested_formats;
if ($parser_options and $parser_options->{'test_formats'}) {
push @tested_formats, @{$parser_options->{'test_formats'}};
@@ -252,10 +257,10 @@
$initial_merged_indices = { %{$initial_merged_indices} };
print STDERR " TEST $test_name\n" if ($self->{'DEBUG'});
my $result;
- if (ref($test_case) eq 'ARRAY') {
+ if (!$test_file) {
$result = $parser->parse_texi_text($test_text, 1);
} else {
- $result = $parser->parse_texi_file($test_case);
+ $result = $parser->parse_texi_file($test_file);
}
my $floats = $parser->floats_information();
@@ -501,7 +506,8 @@
}
my $test_nrs = 0;
foreach my $test_case (@$ran_tests) {
- $test_nrs += $test->test($test_case);
+ my $test_name = basename($test_case, '.texi');
+ $test_nrs += $test->test([$test_name, undef, {'test_file' => $test_case}]);
}
if ($generate or $arg_complete) {
Index: t/results/def/all_commands_delimiters_printindex.pl
===================================================================
RCS file:
/sources/texinfo/texinfo/tp/t/results/def/all_commands_delimiters_printindex.pl,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- t/results/def/all_commands_delimiters_printindex.pl 20 Jan 2011 00:38:32
-0000 1.3
+++ t/results/def/all_commands_delimiters_printindex.pl 29 Jan 2011 23:57:21
-0000 1.4
@@ -12507,7 +12507,9 @@
-$result_converted{'info'}->{'all_commands_delimiters_printindex'} = '
+$result_converted{'info'}->{'all_commands_delimiters_printindex'} = 'This is ,
produced by makeinfo version 4.13 from .
+
+
File: , Node: Top, Up: (dir)
-- Command: FORWARD--CHAR NCHARS argument2 argument3 (arg in brace,
@@ -12679,6 +12681,12 @@
* enable: Top. (line 20)
* fill-column: Top. (line 6)
+
+
+Tag Table:
+Node: Top86
+
+End Tag Table
';
1;
Index: t/results/def/all_commands_printindex.pl
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/results/def/all_commands_printindex.pl,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- t/results/def/all_commands_printindex.pl 20 Jan 2011 00:38:32 -0000
1.3
+++ t/results/def/all_commands_printindex.pl 29 Jan 2011 23:57:22 -0000
1.4
@@ -2880,7 +2880,9 @@
-$result_converted{'info'}->{'all_commands_printindex'} = '
+$result_converted{'info'}->{'all_commands_printindex'} = 'This is , produced
by makeinfo version 4.13 from .
+
+
File: , Node: Top, Up: (dir)
-- c--ategory: d--efvr_name
@@ -2975,6 +2977,12 @@
* d--efvar_name: Top. (line 33)
* d--efvr_name: Top. (line 3)
+
+
+Tag Table:
+Node: Top86
+
+End Tag Table
';
1;
Index: t/results/info_tests/paragraphindent_and_preamble.pl
===================================================================
RCS file: t/results/info_tests/paragraphindent_and_preamble.pl
diff -N t/results/info_tests/paragraphindent_and_preamble.pl
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ t/results/info_tests/paragraphindent_and_preamble.pl 29 Jan 2011
23:57:22 -0000 1.1
@@ -0,0 +1,424 @@
+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_trees{'paragraphindent_and_preamble'} = {
+ 'contents' => [
+ {
+ 'contents' => [
+ {
+ 'cmdname' => 'copying',
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line_after_command'
+ },
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'In copying.
+'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'paragraph'
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ },
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'Copying second para.
+'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'paragraph'
+ }
+ ],
+ 'parent' => {}
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line_after_command'
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'text_root'
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => ' ',
+ 'type' => 'empty_spaces_after_command'
+ },
+ {
+ 'parent' => {},
+ 'text' => 'Top'
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'spaces_at_end'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'misc_line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'contents' => [],
+ 'extra' => {
+ 'node_content' => [
+ {}
+ ],
+ 'nodes_manuals' => [
+ {
+ 'node_content' => [],
+ 'normalized' => 'Top'
+ }
+ ],
+ 'normalized' => 'Top'
+ },
+ 'line_nr' => {
+ 'file_name' => '',
+ 'line_nr' => 7,
+ 'macro' => ''
+ },
+ 'parent' => {}
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => ' ',
+ 'type' => 'empty_spaces_after_command'
+ },
+ {
+ 'parent' => {},
+ 'text' => 'test '
+ },
+ {
+ 'cmdname' => '@',
+ 'parent' => {}
+ },
+ {
+ 'parent' => {},
+ 'text' => 'paragraphindent effect in preamble'
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'spaces_at_end'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'misc_line_arg'
+ }
+ ],
+ 'cmdname' => 'top',
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ },
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'First para.
+'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'paragraph'
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ },
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'Before paragraphindent.
+'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'paragraph'
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => ' ',
+ 'type' => 'empty_spaces_after_command'
+ },
+ {
+ 'parent' => {},
+ 'text' => '1'
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'spaces_at_end'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'misc_line_arg'
+ }
+ ],
+ 'cmdname' => 'paragraphindent',
+ 'extra' => {
+ 'misc_args' => [
+ '1'
+ ]
+ },
+ 'line_nr' => {
+ 'file_name' => '',
+ 'line_nr' => 14,
+ 'macro' => ''
+ },
+ 'parent' => {}
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ },
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'After paragraphindent.
+'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'paragraph'
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {
+ 'misc_content' => [
+ {},
+ {},
+ {}
+ ]
+ },
+ 'level' => 0,
+ 'line_nr' => {
+ 'file_name' => '',
+ 'line_nr' => 8,
+ 'macro' => ''
+ },
+ 'parent' => {}
+ },
+ {
+ 'cmdname' => 'bye',
+ 'parent' => {}
+ }
+ ],
+ 'type' => 'document_root'
+};
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[0]{'contents'}[0];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[0]{'contents'}[0]{'contents'}[1]{'contents'}[0]{'parent'}
=
$result_trees{'paragraphindent_and_preamble'}{'contents'}[0]{'contents'}[0]{'contents'}[1];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[0]{'contents'}[0]{'contents'}[1]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[0]{'contents'}[0];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[0]{'contents'}[0]{'contents'}[2]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[0]{'contents'}[0];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[0]{'contents'}[0]{'contents'}[3]{'contents'}[0]{'parent'}
=
$result_trees{'paragraphindent_and_preamble'}{'contents'}[0]{'contents'}[0]{'contents'}[3];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[0]{'contents'}[0]{'contents'}[3]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[0]{'contents'}[0];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[0]{'contents'}[0]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[0];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[0]{'contents'}[1]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[0];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[0]{'contents'}[2]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[0];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[0]{'parent'} =
$result_trees{'paragraphindent_and_preamble'};
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[1]{'args'}[0];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[1]{'args'}[0]{'contents'}[1]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[1]{'args'}[0];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[1]{'args'}[0]{'contents'}[2]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[1]{'args'}[0];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[1]{'args'}[0]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[1];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[1]{'extra'}{'node_content'}[0]
=
$result_trees{'paragraphindent_and_preamble'}{'contents'}[1]{'args'}[0]{'contents'}[1];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[1]{'extra'}{'nodes_manuals'}[0]{'node_content'}
=
$result_trees{'paragraphindent_and_preamble'}{'contents'}[1]{'extra'}{'node_content'};
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[1]{'parent'} =
$result_trees{'paragraphindent_and_preamble'};
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'args'}[0]{'contents'}[0]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'args'}[0];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'args'}[0]{'contents'}[1]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'args'}[0];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'args'}[0]{'contents'}[2]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'args'}[0];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'args'}[0]{'contents'}[3]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'args'}[0];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'args'}[0]{'contents'}[4]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'args'}[0];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'args'}[0]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[2];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'contents'}[0]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[2];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'contents'}[1]{'contents'}[0]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'contents'}[1];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'contents'}[1]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[2];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'contents'}[2]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[2];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'contents'}[3]{'contents'}[0]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'contents'}[3];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'contents'}[3]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[2];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'contents'}[4]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[2];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'contents'}[5]{'args'}[0]{'contents'}[0]{'parent'}
=
$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'contents'}[5]{'args'}[0];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'contents'}[5]{'args'}[0]{'contents'}[1]{'parent'}
=
$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'contents'}[5]{'args'}[0];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'contents'}[5]{'args'}[0]{'contents'}[2]{'parent'}
=
$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'contents'}[5]{'args'}[0];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'contents'}[5]{'args'}[0]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'contents'}[5];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'contents'}[5]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[2];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'contents'}[6]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[2];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'contents'}[7]{'contents'}[0]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'contents'}[7];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'contents'}[7]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[2];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'contents'}[8]{'parent'}
= $result_trees{'paragraphindent_and_preamble'}{'contents'}[2];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'extra'}{'misc_content'}[0]
=
$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'args'}[0]{'contents'}[1];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'extra'}{'misc_content'}[1]
=
$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'args'}[0]{'contents'}[2];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'extra'}{'misc_content'}[2]
=
$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'args'}[0]{'contents'}[3];
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[2]{'parent'} =
$result_trees{'paragraphindent_and_preamble'};
+$result_trees{'paragraphindent_and_preamble'}{'contents'}[3]{'parent'} =
$result_trees{'paragraphindent_and_preamble'};
+
+$result_texis{'paragraphindent_and_preamble'} = '@copying
+In copying.
+
+Copying second para.
address@hidden copying
+
address@hidden Top
address@hidden test @@paragraphindent effect in preamble
+
+First para.
+
+Before paragraphindent.
+
address@hidden 1
+
+After paragraphindent.
+
address@hidden
+';
+
+
+$result_texts{'paragraphindent_and_preamble'} = '
+test @paragraphindent effect in preamble
+****************************************
+
+First para.
+
+Before paragraphindent.
+
+
+After paragraphindent.
+
+';
+
+$result_sectioning{'paragraphindent_and_preamble'} = {
+ 'level' => -1,
+ 'section_childs' => [
+ {
+ 'cmdname' => 'top',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'Top'
+ }
+ }
+ },
+ 'level' => 0,
+ 'section_up' => {}
+ }
+ ]
+};
+$result_sectioning{'paragraphindent_and_preamble'}{'section_childs'}[0]{'section_up'}
= $result_sectioning{'paragraphindent_and_preamble'};
+
+$result_nodes{'paragraphindent_and_preamble'} = {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'associated_section' => {
+ 'cmdname' => 'top',
+ 'extra' => {},
+ 'level' => 0
+ },
+ 'normalized' => 'Top'
+ },
+ 'node_up' => {
+ 'extra' => {
+ 'manual_content' => [
+ {
+ 'text' => 'dir'
+ }
+ ]
+ }
+ }
+};
+
+$result_menus{'paragraphindent_and_preamble'} = {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'Top'
+ }
+};
+
+$result_errors{'paragraphindent_and_preamble'} = [];
+
+
+
+$result_converted{'info'}->{'paragraphindent_and_preamble'} = 'This is ,
produced by makeinfo version 4.13 from .
+
+In copying.
+
+ Copying second para.
+
+
+File: , Node: Top, Up: (dir)
+
+test @paragraphindent effect in preamble
+****************************************
+
+First para.
+
+ Before paragraphindent.
+
+ After paragraphindent.
+
+
+
+Tag Table:
+Node: Top122
+
+End Tag Table
+';
+
+1;