texinfo-commits
[Top][All Lists]
Advanced

[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;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]