[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
texinfo/tp TODO Texinfo/Parser.pm t/30sectionin...
From: |
Patrice Dumas |
Subject: |
texinfo/tp TODO Texinfo/Parser.pm t/30sectionin... |
Date: |
Sat, 18 Feb 2012 23:27:38 +0000 |
CVSROOT: /sources/texinfo
Module name: texinfo
Changes by: Patrice Dumas <pertusus> 12/02/18 23:27:37
Modified files:
tp : TODO
tp/Texinfo : Parser.pm
tp/t : 30sectioning.t
test_protect_hashchar_at_line_beginning.t
Added files:
tp/t : test_brace_count.t
tp/t/results/sectioning: node_nested_parentheses.pl
Log message:
Handle correctly nested parentheses in filenames in external
nodes specifications.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/TODO?cvsroot=texinfo&r1=1.265&r2=1.266
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/Texinfo/Parser.pm?cvsroot=texinfo&r1=1.361&r2=1.362
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/30sectioning.t?cvsroot=texinfo&r1=1.76&r2=1.77
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/test_protect_hashchar_at_line_beginning.t?cvsroot=texinfo&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/test_brace_count.t?cvsroot=texinfo&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/sectioning/node_nested_parentheses.pl?cvsroot=texinfo&rev=1.1
Patches:
Index: TODO
===================================================================
RCS file: /sources/texinfo/texinfo/tp/TODO,v
retrieving revision 1.265
retrieving revision 1.266
diff -u -b -r1.265 -r1.266
--- TODO 11 Feb 2012 22:35:52 -0000 1.265
+++ TODO 18 Feb 2012 23:27:36 -0000 1.266
@@ -7,7 +7,11 @@
Document TEXTCONTENT_COMMENT.
-pod2texi: remove :: in node to avoid confusing @ref in info.
+pod2texi: remove punctuation in node to avoid confusing @ref in info.
+in @ref. First : is searched. if followed by a : the node name is found
+and there is no label. When parsing a node a filename with ( is searched for.
+Nested parentheses are taken into account.
+Then more parentheses?
Bugs
Index: Texinfo/Parser.pm
===================================================================
RCS file: /sources/texinfo/texinfo/tp/Texinfo/Parser.pm,v
retrieving revision 1.361
retrieving revision 1.362
diff -u -b -r1.361 -r1.362
--- Texinfo/Parser.pm 11 Feb 2012 22:35:52 -0000 1.361
+++ Texinfo/Parser.pm 18 Feb 2012 23:27:36 -0000 1.362
@@ -2024,6 +2024,58 @@
return $result;
}
+sub _find_end_brace($$)
+{
+ my $text = shift;
+ my $braces_count = shift;
+
+ my $before = '';
+ while ($braces_count > 0 and length($text)) {
+ if ($text =~ s/([^()]*)([()])//) {
+ $before .= $1.$2;
+ my $brace = $2;
+ if ($brace eq '(') {
+ $braces_count++;
+ } else {
+ $braces_count--;
+ if ($braces_count == 0) {
+ return ($before, $text, 0);
+ }
+ }
+ } else {
+ $before .= $text;
+ $text = '';
+ }
+ }
+ return ($before, undef, $braces_count);
+}
+
+# This only counts opening braces, and returns 0 once all the parentheses
+# are closed
+sub _count_opened_tree_braces($$);
+sub _count_opened_tree_braces($$)
+{
+ my $current = shift;
+ my $braces_count = shift;
+ if (defined($current->{'text'})) {
+ my ($before, $after);
+ ($before, $after, $braces_count) = _find_end_brace($current->{'text'},
+ $braces_count);
+ }
+ if ($current->{'args'}) {
+ foreach my $arg (@{$current->{'args'}}) {
+ $braces_count = _count_opened_tree_braces($arg, $braces_count);
+ return $braces_count if ($braces_count == 0);
+ }
+ }
+ if ($current->{'contents'}) {
+ foreach my $content (@{$current->{'contents'}}) {
+ $braces_count = _count_opened_tree_braces($content, $braces_count);
+ return $braces_count if ($braces_count == 0);
+ }
+ }
+ return $braces_count;
+}
# retrieve a leading manual name in parentheses, if there is one.
sub _parse_node_manual($)
@@ -2036,6 +2088,7 @@
my $result;
#print STDERR "RRR $contents[0] and $contents[0]->{'text'} \n";
if ($contents[0] and $contents[0]->{'text'} and $contents[0]->{'text'} =~
/^\(/) {
+ my $braces_count = 1;
if ($contents[0]->{'text'} !~ /^\($/) {
my $brace = shift @contents;
my $brace_text = $brace->{'text'};
@@ -2049,15 +2102,26 @@
my $content = shift @contents;
if (!defined($content->{'text'}) or $content->{'text'} !~ /\)/) {
push @$manual, $content;
+ $braces_count = _count_opened_tree_braces($content, $braces_count);
+ # This is an error, braces were closed in a command
+ if ($braces_count == 0) {
+ last;
+ }
} else {
- my $brace_text = $content->{'text'};
- my ($before, $after) = split (/\)/, $brace_text, 2);
+ my ($before, $after);
+ ($before, $after, $braces_count) = _find_end_brace($content->{'text'},
+ $braces_count);
+ if ($braces_count == 0) {
+ $before =~ s/\)$//;
push @$manual, { 'text' => $before, 'parent' => $content->{'parent'} }
if ($before ne '');
$after =~ s/^\s*//;
unshift @contents, { 'text' => $after, 'parent' =>
$content->{'parent'} }
if ($after ne '');
last;
+ } else {
+ push @$manual, $content;
+ }
}
}
$result->{'manual_content'} = $manual if (defined($manual));
@@ -3762,7 +3826,8 @@
and $current->{'args'}->[-1]->{'type'}
and $current->{'args'}->[-1]->{'type'} eq
'menu_entry_separator') {
my $separator = $current->{'args'}->[-1]->{'text'};
- # separator is ::, we let it be in order to collect spaces below
+ # separator is ::, we concatenate and let the while restart
+ # in order to collect spaces below
if ($separator eq ':' and $line =~ s/^(:)//) {
$current->{'args'}->[-1]->{'text'} .= $1;
# a . not followed by a space. Not a separator.
Index: t/30sectioning.t
===================================================================
RCS file: /sources/texinfo/texinfo/tp/t/30sectioning.t,v
retrieving revision 1.76
retrieving revision 1.77
diff -u -b -r1.76 -r1.77
--- t/30sectioning.t 6 Feb 2012 23:22:59 -0000 1.76
+++ t/30sectioning.t 18 Feb 2012 23:27:37 -0000 1.77
@@ -1349,6 +1349,14 @@
@anchor{(manual)anchor}.
'],
+['node_nested_parentheses',
+'@node Top
+
address@hidden
+* ((some) file)::
+* (other (file))node name::
address@hidden menu
+'],
['node_empty_direction',
'@node name, '
],
Index: t/test_protect_hashchar_at_line_beginning.t
===================================================================
RCS file:
/sources/texinfo/texinfo/tp/t/test_protect_hashchar_at_line_beginning.t,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- t/test_protect_hashchar_at_line_beginning.t 13 Feb 2012 00:22:42 -0000
1.2
+++ t/test_protect_hashchar_at_line_beginning.t 18 Feb 2012 23:27:37 -0000
1.3
@@ -30,7 +30,6 @@
} else {
is ($texi_result, $out, $name);
}
-
}
run_test ('# line 4 "ggggg"
Index: t/test_brace_count.t
===================================================================
RCS file: t/test_brace_count.t
diff -N t/test_brace_count.t
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ t/test_brace_count.t 18 Feb 2012 23:27:37 -0000 1.1
@@ -0,0 +1,58 @@
+use strict;
+
+use Test::More;
+BEGIN { plan tests => 11 };
+
+use lib 'maintain/lib/Unicode-EastAsianWidth/lib/';
+use lib 'maintain/lib/libintl-perl/lib/';
+use lib 'maintain/lib/Text-Unidecode/lib/';
+use Texinfo::Parser qw(parse_texi_text);
+
+ok(1, "modules loading");
+
+my ($before, $after, $braces_count)
+ = Texinfo::Parser::_find_end_brace(" aa (bbb ()ccc)(g))j (gg", 1);
+is ($before, " aa (bbb ()ccc)(g))", "before with brace closed");
+is ($after, "j (gg", "after with brace closed");
+ok ($braces_count == 0, "braces count 0 with brace closed");
+my $string_no_close = " kjsdf ( k)lj(";
+($before, $after, $braces_count)
+ = Texinfo::Parser::_find_end_brace($string_no_close, 2);
+ok (($braces_count == 3 and $before eq $string_no_close and !defined($after)),
+ "more braces opened");
+my $string_no_brace = " other ";
+($before, $after, $braces_count)
+ = Texinfo::Parser::_find_end_brace($string_no_brace, 1);
+ok (($braces_count == 1 and $before eq $string_no_brace and !defined($after)),
+ "no brace in text");
+my $string_open_brace_and_text = " (other ";
+($before, $after, $braces_count)
+ = Texinfo::Parser::_find_end_brace($string_open_brace_and_text, 1);
+ok (($braces_count == 2 and $before eq $string_open_brace_and_text
+ and !defined($after)), "more braces opened and text");
+
+
+sub run_test($$$$)
+{
+ my $in = shift;
+ my $initial_brace_count = shift;
+ my $ref_braces_count = shift;
+ my $name = shift;
+
+ my $tree = parse_texi_text(undef, $in);
+
+ my $braces_count
+ = Texinfo::Parser::_count_opened_tree_braces($tree, $initial_brace_count);
+ if (!defined($ref_braces_count)) {
+ print STDERR " --> $name ($in): $braces_count\n";
+ } else {
+ is ($braces_count, $ref_braces_count, $name);
+ }
+}
+
+run_test('@code{(sdffsd)} other @code{(gg} ))', 1, 0, 'brace in code');
+run_test('@code{(sdffsd)) aaa}', 1, 0, 'too much braces');
+run_test(' aaa) @asis{)} @code{( (}', 2, 0, 'more reopened');
+run_test(' aaa) @asis{} @code{( (}', 2, 3, 'still open');
+
+
Index: t/results/sectioning/node_nested_parentheses.pl
===================================================================
RCS file: t/results/sectioning/node_nested_parentheses.pl
diff -N t/results/sectioning/node_nested_parentheses.pl
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ t/results/sectioning/node_nested_parentheses.pl 18 Feb 2012 23:27:37
-0000 1.1
@@ -0,0 +1,385 @@
+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_nested_parentheses'} = {
+ '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' => '((some) file)'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'menu_entry_node'
+ },
+ {
+ 'parent' => {},
+ 'text' => '::',
+ 'type' => 'menu_entry_separator'
+ },
+ {
+ 'contents' => [
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => '
+'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'preformatted'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'menu_entry_description'
+ }
+ ],
+ 'extra' => {
+ 'menu_entry_description' => {},
+ 'menu_entry_node' => {
+ 'manual_content' => [
+ {
+ 'parent' => {},
+ 'text' => '(some) file'
+ }
+ ]
+ }
+ },
+ 'line_nr' => {
+ 'file_name' => '',
+ 'line_nr' => 4,
+ 'macro' => ''
+ },
+ 'parent' => {},
+ 'type' => 'menu_entry'
+ },
+ {
+ 'args' => [
+ {
+ 'parent' => {},
+ 'text' => '* ',
+ 'type' => 'menu_entry_leading_text'
+ },
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => '(other (file))node name'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'menu_entry_node'
+ },
+ {
+ 'parent' => {},
+ 'text' => '::',
+ 'type' => 'menu_entry_separator'
+ },
+ {
+ 'contents' => [
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => '
+'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'preformatted'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'menu_entry_description'
+ }
+ ],
+ 'extra' => {
+ 'menu_entry_description' => {},
+ 'menu_entry_node' => {
+ 'manual_content' => [
+ {
+ 'parent' => {},
+ 'text' => 'other (file)'
+ }
+ ],
+ 'node_content' => [
+ {
+ 'parent' => {},
+ 'text' => 'node name'
+ }
+ ],
+ 'normalized' => 'node-name'
+ }
+ },
+ 'line_nr' => {
+ 'file_name' => '',
+ 'line_nr' => 5,
+ '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' => 6,
+ 'macro' => ''
+ },
+ 'parent' => {}
+ }
+ ],
+ 'extra' => {
+ 'end_command' => {}
+ },
+ 'line_nr' => {
+ 'file_name' => '',
+ 'line_nr' => 3,
+ 'macro' => ''
+ },
+ 'parent' => {}
+ }
+ ],
+ 'extra' => {
+ 'node_content' => [
+ {}
+ ],
+ 'nodes_manuals' => [
+ {
+ 'node_content' => [],
+ 'normalized' => 'Top'
+ }
+ ],
+ 'normalized' => 'Top'
+ },
+ 'line_nr' => {
+ 'file_name' => '',
+ 'line_nr' => 1,
+ 'macro' => ''
+ },
+ 'parent' => {}
+ }
+ ],
+ 'type' => 'document_root'
+};
+$result_trees{'node_nested_parentheses'}{'contents'}[0]{'parent'} =
$result_trees{'node_nested_parentheses'};
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'args'}[0]{'contents'}[0]{'extra'}{'command'}
= $result_trees{'node_nested_parentheses'}{'contents'}[1];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
= $result_trees{'node_nested_parentheses'}{'contents'}[1]{'args'}[0];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'args'}[0]{'contents'}[1]{'parent'}
= $result_trees{'node_nested_parentheses'}{'contents'}[1]{'args'}[0];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'args'}[0]{'contents'}[2]{'parent'}
= $result_trees{'node_nested_parentheses'}{'contents'}[1]{'args'}[0];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'args'}[0]{'parent'} =
$result_trees{'node_nested_parentheses'}{'contents'}[1];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[0]{'parent'}
= $result_trees{'node_nested_parentheses'}{'contents'}[1];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[0]{'extra'}{'command'}
= $result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[0]{'parent'}
= $result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[0]{'parent'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[1];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[1]{'contents'}[0]{'parent'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[1];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[1]{'parent'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[1];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[2]{'parent'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[1];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[3]{'contents'}[0]{'contents'}[0]{'parent'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[3]{'contents'}[0];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[3]{'contents'}[0]{'parent'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[3];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[3]{'parent'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[1];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'extra'}{'menu_entry_description'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[3];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'extra'}{'menu_entry_node'}{'manual_content'}[0]{'parent'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'args'}[1];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'parent'}
= $result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[2]{'args'}[0]{'parent'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[2];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[2]{'args'}[1]{'contents'}[0]{'parent'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[2]{'args'}[1];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[2]{'args'}[1]{'parent'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[2];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[2]{'args'}[2]{'parent'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[2];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[2]{'args'}[3]{'contents'}[0]{'contents'}[0]{'parent'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[2]{'args'}[3]{'contents'}[0];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[2]{'args'}[3]{'contents'}[0]{'parent'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[2]{'args'}[3];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[2]{'args'}[3]{'parent'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[2];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[2]{'extra'}{'menu_entry_description'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[2]{'args'}[3];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[2]{'extra'}{'menu_entry_node'}{'manual_content'}[0]{'parent'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[2]{'args'}[1];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[2]{'extra'}{'menu_entry_node'}{'node_content'}[0]{'parent'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[2]{'args'}[1];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[2]{'parent'}
= $result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[3]{'args'}[0]{'contents'}[0]{'extra'}{'command'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[3];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[3]{'args'}[0]{'contents'}[0]{'parent'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[3]{'args'}[0];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[3]{'args'}[0]{'contents'}[1]{'parent'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[3]{'args'}[0];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[3]{'args'}[0]{'contents'}[2]{'parent'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[3]{'args'}[0];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[3]{'args'}[0]{'parent'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[3];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[3]{'extra'}{'command'}
= $result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[3]{'parent'}
= $result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'extra'}{'end_command'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'contents'}[3];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'contents'}[1]{'parent'}
= $result_trees{'node_nested_parentheses'}{'contents'}[1];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'extra'}{'node_content'}[0]
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'args'}[0]{'contents'}[1];
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'extra'}{'nodes_manuals'}[0]{'node_content'}
=
$result_trees{'node_nested_parentheses'}{'contents'}[1]{'extra'}{'node_content'};
+$result_trees{'node_nested_parentheses'}{'contents'}[1]{'parent'} =
$result_trees{'node_nested_parentheses'};
+
+$result_texis{'node_nested_parentheses'} = '@node Top
+
address@hidden
+* ((some) file)::
+* (other (file))node name::
address@hidden menu
+';
+
+
+$result_texts{'node_nested_parentheses'} = '
+* ((some) file)::
+* (other (file))node name::
+';
+
+$result_sectioning{'node_nested_parentheses'} = {};
+
+$result_nodes{'node_nested_parentheses'} = {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'Top'
+ },
+ 'menu_child' => {
+ 'extra' => {
+ 'manual_content' => [
+ {
+ 'text' => '(some) file'
+ }
+ ]
+ }
+ },
+ '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'
+ }
+ ],
+ 'top_node_up' => {}
+ },
+ 'type' => 'top_node_up'
+ }
+};
+$result_nodes{'node_nested_parentheses'}{'menus'}[0]{'extra'}{'end_command'}{'extra'}{'command'}
= $result_nodes{'node_nested_parentheses'}{'menus'}[0];
+$result_nodes{'node_nested_parentheses'}{'node_next'} =
$result_nodes{'node_nested_parentheses'}{'menu_child'};
+$result_nodes{'node_nested_parentheses'}{'node_up'}{'extra'}{'top_node_up'} =
$result_nodes{'node_nested_parentheses'};
+
+$result_menus{'node_nested_parentheses'} = {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'Top'
+ },
+ 'menu_child' => {
+ 'extra' => {
+ 'manual_content' => [
+ {
+ 'text' => '(some) file'
+ }
+ ]
+ }
+ }
+};
+
+$result_errors{'node_nested_parentheses'} = [];
+
+
+1;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- texinfo/tp TODO Texinfo/Parser.pm t/30sectionin...,
Patrice Dumas <=