texinfo-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

texinfo/tp Texinfo/Parser.pm t/10menu.t t/resul...


From: Patrice Dumas
Subject: texinfo/tp Texinfo/Parser.pm t/10menu.t t/resul...
Date: Sun, 26 Sep 2010 23:36:55 +0000

CVSROOT:        /sources/texinfo
Module name:    texinfo
Changes by:     Patrice Dumas <pertusus>        10/09/26 23:36:55

Modified files:
        tp/Texinfo     : Parser.pm 
Added files:
        tp/t           : 10menu.t 
        tp/t/results/menu: simple.pl 

Log message:
        Handle menus.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/Texinfo/Parser.pm?cvsroot=texinfo&r1=1.20&r2=1.21
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/10menu.t?cvsroot=texinfo&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/results/menu/simple.pl?cvsroot=texinfo&rev=1.1

Patches:
Index: Texinfo/Parser.pm
===================================================================
RCS file: /sources/texinfo/texinfo/tp/Texinfo/Parser.pm,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -b -r1.20 -r1.21
--- Texinfo/Parser.pm   26 Sep 2010 18:10:33 -0000      1.20
+++ Texinfo/Parser.pm   26 Sep 2010 23:36:55 -0000      1.21
@@ -246,6 +246,11 @@
   $no_paragraph_contexts{$no_paragraph_context} = 1;
 };
 
+my %menu_commands;
+foreach my $menu_command ('menu', 'detailmenu', 'direntry') {
+  $menu_commands{$menu_command} = 1;
+};
+
 # commands delimiting blocks, typically with an @end.
 # Value is either the number of arguments on the line separated by
 # commas or the type of command, 'raw', 'def' or 'multitable'.
@@ -743,7 +748,9 @@
       my $error = $self->_line_error(
                            sprintf($self->__("No matching `%cend %s'"),
                                    ord('@'), $current->{'cmdname'}), $line_nr);
-      pop @{$self->{'context'}} if 
($preformatted_commands{$current->{'cmdname'}});
+      pop @{$self->{'context'}} if 
+         ($preformatted_commands{$current->{'cmdname'}}
+           or $menu_commands{$current->{'cmdname'}});
       $current = $current->{'parent'};
     } elsif ($current->{'parent'}->{'cmdname'}
              and exists 
$context_brace_commands{$current->{'parent'}->{'cmdname'}}) {
@@ -760,7 +767,9 @@
 
   if ($command and $current->{'cmdname'} 
     and $current->{'cmdname'} eq $command) {
-    pop @{$self->{'context'}} if 
($preformatted_commands{$current->{'cmdname'}});
+    pop @{$self->{'context'}} if 
+       ($preformatted_commands{$current->{'cmdname'}} 
+         or $menu_commands{$current->{'cmdname'}});
     $current = $current->{'parent'}
   }
   return ($current, 0);
@@ -851,11 +860,13 @@
 #
 #c 'brace_command_arg'
 #
-#c 'before_item'   FIXME what comes after @*table, @itemize, @enumerate before
+#c 'before_item'   what comes after @*table, @itemize, @enumerate before
 #                an @item
 #
 #c 'paragraph'
 #
+#a 'line_def*'
+#
 #special for @verb, type is the character
 
 # the main subroutine
@@ -898,11 +909,11 @@
     $line_index++;
 
     if ($self->{'debug'}) {
-      $current->{'HERE !!!!'} = 1;
+      $current->{'HERE !!!!'} = 1; # marks where we are in the tree
       local $Data::Dumper::Indent = 1;
       local $Data::Dumper::Purity = 1;
       print STDERR "".Data::Dumper->Dump([$root], ['$root']);
-      print STDERR "NEW LINE: $line";
+      print STDERR "NEW LINE($self->{'context'}->[-1]): $line";
       delete $current->{'HERE !!!!'};
     }
 
@@ -925,19 +936,43 @@
                                         'text' => $line,
                                         'parent' => $current };
       next;
-    }
-    # to determine if it is a menu entry, check ^*, and if set, add
-    # : to the separators list.
-
-    if ($in_menu) {
+    } elsif ($line !~ /\S/ and $current->{'type'} 
+               and $current->{'type'} eq 'menu_entry_description') {
+      # first parent is menu_entry
+      $current = $current->{'parent'}->{'parent'};
+      push @{$current->{'contents'}}, { 'type' => 'after_description_line', 
+                                        'text' => $line,
+                                        'parent' => $current };
+      push @{$current->{'contents'}}, { 'type' => 'menu_comment',
+                                        'parent' => $current,
+                                        'contents' => [] };
+      $current = $current->{'contents'}->[-1];
+      next;
+    } elsif ($current->{'type'} 
+              and ($current->{'type'} eq 'menu_comment'
+                    or $current->{'type'} eq 'menu_entry_description')) {
       if ($line =~ s/^(\*\s+)//) {
+        print STDERR "MENU ENTRY\n" if ($self->{'debug'});
         my $leading_text = $1;
-        #push @separators, ':';
-        push @{$current->{'contents'}}, 
-            { 'type' => 'menu_entry',
-              'args' => [ { 'type' => 'menu_entry_leading_text',
-                            'text' => $leading_text } ]
+        if ($current->{'type'} eq 'menu_comment') {
+          my $menu = $current->{'parent'};
+          pop @{$menu->{'contents'}} if (address@hidden>{'contents'}});
+          $current = $menu;
+        } else {
+          # first parent is menu_entry
+          $current = $current->{'parent'}->{'parent'};
+        }
+        push @{$current->{'contents'}}, { 'type' => 'menu_entry',
+                                          'parent' => $current,
             };
+        $current = $current->{'contents'}->[-1];
+        $current->{'args'} = [ { 'type' => 'menu_entry_leading_text',
+                                 'text' => $leading_text,
+                                 'parent' => $current },
+                               { 'type' => 'menu_entry_name',
+                                 'contents' => [],
+                                 'parent' => $current } ];
+        $current = $current->{'args'}->[-1];
       }
     }
 
@@ -1189,6 +1224,13 @@
             } else {
               push @{$self->{'context'}}, 'preformatted' 
                 if ($preformatted_commands{$command});
+              if ($menu_commands{$command}) {
+                push @{$current->{'contents'}}, {'type' => 'menu_comment',
+                                                 'parent' => $current,
+                                                 'contents' => [] };
+                push @{$self->{'context'}}, 'menu';
+                $current = $current->{'contents'}->[-1];
+              }
               last unless ($line =~ /\S/);
             }
           }
@@ -1340,14 +1382,51 @@
                { 'type' => $type, 'parent' => $current, 'contents' => [] };
           $current = $current->{'args'}->[-1];
         }
-        # menu node if there is a :
-        # . must be followed by a space to stop the node name.
-        # cf texi2html.pl l 13425
-        elsif ($separator =~ /[,\t.]/ and $current->{'type'} eq 'FIXME') {
-
-        # menu node
-        } elsif ($separator eq ':' and $current->{'type'} eq 'FIXME') {
-
+        # end of menu node (. must be followed by a space to stop the node).
+        elsif ($separator =~ /[,\t.]/ and $current->{'type'}
+               and $current->{'type'} eq 'menu_entry_node') {
+          if ($separator eq '.' and $line =~ /^\S/) {
+            $current = _merge_text ($self, $current, $separator);
+          } else {
+            $line =~ s/^(\s*)//;
+            $separator .= $1;
+            $current = $current->{'parent'};
+            push @{$current->{'args'}}, { 'type' => 'menu_entry_separator',
+                                 'text' => $separator,
+                                 'parent' => $current };
+            push @{$current->{'args'}}, { 'type' => 'menu_entry_description',
+                                          'contents' => [],
+                                          'parent' => $current };
+            $current = $current->{'args'}->[-1];
+          }
+        # end of menu_entry_name
+        } elsif ($separator eq ':' and $current->{'type'} 
+                 and $current->{'type'} eq 'menu_entry_name') {
+          # menu node. Transform the menu_entry_name in to a node, add the
+          # separator and open a description
+          if ($line =~ s/^(:\s*)//) {
+            $separator .= $1;
+            $current->{'type'} = 'menu_entry_node';
+            $current = $current->{'parent'};
+            push @{$current->{'args'}}, { 'type' => 'menu_entry_separator',
+                                 'text' => $separator,
+                                 'parent' => $current };
+            push @{$current->{'args'}}, { 'type' => 'menu_entry_description',
+                                          'contents' => [],
+                                          'parent' => $current };
+          # end of the menu_entry_name, open the menu_entry_node.
+          } else {
+            $line =~ s/^(\s*)//;
+            $separator .= $1;
+            $current = $current->{'parent'};
+            push @{$current->{'args'}}, { 'type' => 'menu_entry_separator',
+                                 'text' => $separator,
+                                 'parent' => $current };
+            push @{$current->{'args'}}, { 'type' => 'menu_entry_node',
+                                          'contents' => [],
+                                          'parent' => $current };
+          }
+          $current = $current->{'args'}->[-1];
         } else {
           $current = _merge_text ($self, $current, $separator);
         }
@@ -1358,8 +1437,66 @@
         if ($line ne '') {
           die "Remaining line: $line\n";
         }
+        if ($current->{'type'} 
+             and ($current->{'type'} eq 'menu_entry_name'
+                  or $current->{'type'} eq 'menu_entry_node')) {
+          my $empty_menu_entry_node = 0;
+          my $end_comment;
+          if ($current->{'type'} eq 'menu_entry_node') {
+            if (@{$current->{'contents'}} 
+                and $current->{'contents'}->[-1]->{'cmdname'}
+                and ($current->{'contents'}->[-1]->{'cmdname'} eq 'c' 
+                    or $current->{'contents'}->[-1]->{'cmdname'} eq 
'comment')) {
+              $end_comment = pop @{$current->{'contents'}};
+            }
+            if (address@hidden>{'contents'}}) {
+              $empty_menu_entry_node = 1;
+              push @{$current->{'contents'}}, $end_comment if ($end_comment);
+            }
+          }
+          # we abort the menu entry if there is no node name
+          if ($empty_menu_entry_node 
+               or $current->{'type'} eq 'menu_entry_node') {
+            my $menu = $current->{'parent'}->{'parent'};
+            my $menu_entry = pop @{$menu->{'contents'}};
+            if (@{$menu->{'contents'}} and $menu->{'contents'}->[-1]->{'type'}
+                and $menu->{'contents'}->[-1]->{'type'} eq 'menu_comment') {
+              $current = $menu->{'contents'}->[-1];
+            } else {
+              push @{$menu->{'contents'}}, {'type' => 'menu_comment',
+                                             'parent' => $menu,
+                                             'contents' => [] };
+              $current = $menu->{'contents'}->[-1];
+            }
+            while (@{$menu_entry->{'args'}}) {
+              my $arg = shift @{$menu_entry->{'args'}};
+              if (defined($arg->{'text'})) {
+                delete $arg->{'type'};
+                $arg->{'parent'} = $current;
+                push @{$current->{'contents'}}, $arg; 
+              } else {
+                while (@{$arg->{'contents'}}) {
+                  my $content = shift @{$arg->{'contents'}};
+                  $content->{'parent'} = $current;
+                  push @{$current->{'contents'}}, $content;
+                  $arg = undef;
+                }
+              }
+            }
+            $menu_entry = undef;
+          } else {
+            my $current = $current->{'parent'};
+            push @{$current->{'args'}}, { 'type' => 'menu_entry_description',
+                                          'contents' => [],
+                                          'parent' => $current };
+            $current = $current->{'args'}->[-1];
+            if (defined($end_comment)) {
+              $end_comment->{'parent'} = $current;
+              push @{$current->{'contents'}}, $end_comment;
+            }
+          }
         # def line
-        if ($current->{'parent'}
+        } elsif ($current->{'parent'}
              and $current->{'parent'}->{'type'}
                     and $def_commands{$current->{'parent'}->{'type'}}) {
             my $def_context = pop @{$self->{'context'}};
@@ -1514,7 +1651,9 @@
     $result .= $root->{'text'};
   } else {
     if ($root->{'cmdname'} 
-       or ($root->{'type'} and $def_commands{$root->{'type'}})) {
+       or ($root->{'type'} and ($def_commands{$root->{'type'}}
+                                or $root->{'type'} eq 'menu_entry'
+                                or $root->{'type'} eq 'menu_comment'))) {
       #print STDERR "cmd: $root->{'cmdname'}\n";
       $result .= _expand_cmd_args_to_texi($root);
     }
@@ -1539,9 +1678,9 @@
 sub _expand_cmd_args_to_texi ($) {
   my $cmd = shift;
   my $cmdname = $cmd->{'cmdname'};
-  $cmdname = '' if (!$cmd->{'cmdname'} 
-                     and $cmd->{'type'} and $def_commands{$cmd->{'type'}});
-  my $result = '@'.$cmdname if ($cmdname);
+  $cmdname = '' if (!$cmd->{'cmdname'}); 
+  my $result = '';
+  $result = '@'.$cmdname if ($cmdname);
   #print STDERR "Expand $result\n";
   # must be before the next condition
   if ($block_commands{$cmdname}
@@ -1584,7 +1723,9 @@
         $arg_nr++;
       } else {
         $result .= ' '
-          unless ($cmdname eq 'c' or $cmdname eq 'comment');
+          unless ($cmdname eq 'c' or $cmdname eq 'comment' 
+                  or $cmd->{'type'} and ($cmd->{'type'} eq 'menu_entry'
+                                         or $cmd->{'type'} eq 'menu_comment'));
       }
       $result .= tree_to_texi ($arg);
     }

Index: t/10menu.t
===================================================================
RCS file: t/10menu.t
diff -N t/10menu.t
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ t/10menu.t  26 Sep 2010 23:36:55 -0000      1.1
@@ -0,0 +1,57 @@
+use strict;
+
+require 't/test_utils.pl';
+
+my @test_cases = (
+['simple','
address@hidden
+comment
+* menu entry name : node.    description
+* node name::                description new
+* other entry: node,    
+* last::
+                 description next line
+                 still description
+
+new comment
+* last node entry ::
address@hidden menu
+']
+);
+my @todo = (
+['menu_entry',
+'@menu
+* (f)a1::
+* (f)a2::  
+* (f)a3::         d
+* (f)a1c::@c c
+* (f)a2c::  @c c
+* (f)a3c::         address@hidden c
+* (f) a4 ::   @c c
+* (f)@@a@::: 
+* a1:
+* a2:  
+* a1c:@c c
+* a2c:  @c c
+* a: (f)b
+* a: (f)address@hidden c
+* a: (f)b @c c
+* a: (f)b1.c,
+* a: (f)b2.c,     
+* a: (f)b3.c,    d
+* a: (f)b1c.c,@c c
+* a: (f)b2c.c,     @c c
+* a: (f)b3c.c,    address@hidden c
+* a: (f)b1.. 
+* a : (f) b2 ..
+* a.n: (f)b3..         d
+* a: (f)b1.c.
+* a: (f)b2.c.  
+* a: (f)b3.c. d
address@hidden menu']
+);
+
+our ($arg_test_case, $arg_generate, $arg_debug);
+
+run_all ('menu', address@hidden, $arg_test_case,
+   $arg_generate, $arg_debug);

Index: t/results/menu/simple.pl
===================================================================
RCS file: t/results/menu/simple.pl
diff -N t/results/menu/simple.pl
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ t/results/menu/simple.pl    26 Sep 2010 23:36:55 -0000      1.1
@@ -0,0 +1,323 @@
+use vars qw(%result_texts %result_trees %result_errors);
+
+$result_trees{'simple'} = {
+  'contents' => [
+    {
+      'parent' => {},
+      'text' => '
+',
+      'type' => 'normal_line'
+    },
+    {
+      'cmdname' => 'menu',
+      'contents' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'comment
+'
+            }
+          ],
+          'parent' => {},
+          'type' => 'menu_comment'
+        },
+        {
+          'args' => [
+            {
+              'parent' => {},
+              'text' => '* ',
+              'type' => 'menu_entry_leading_text'
+            },
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'menu entry name '
+                }
+              ],
+              'parent' => {},
+              'type' => 'menu_entry_name'
+            },
+            {
+              'parent' => {},
+              'text' => ': ',
+              'type' => 'menu_entry_separator'
+            },
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'node'
+                }
+              ],
+              'parent' => {},
+              'type' => 'menu_entry_node'
+            },
+            {
+              'parent' => {},
+              'text' => '.    ',
+              'type' => 'menu_entry_separator'
+            },
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'description
+'
+                }
+              ],
+              'parent' => {},
+              'type' => 'menu_entry_description'
+            }
+          ],
+          'parent' => {},
+          'type' => 'menu_entry'
+        },
+        {
+          'args' => [
+            {
+              'parent' => {},
+              'text' => '* ',
+              'type' => 'menu_entry_leading_text'
+            },
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'node name'
+                }
+              ],
+              'parent' => {},
+              'type' => 'menu_entry_node'
+            },
+            {
+              'parent' => {},
+              'text' => '::                ',
+              'type' => 'menu_entry_separator'
+            },
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'description new
+'
+                }
+              ],
+              'parent' => {},
+              'type' => 'menu_entry_description'
+            }
+          ],
+          'parent' => {},
+          'type' => 'menu_entry'
+        },
+        {
+          'args' => [
+            {
+              'parent' => {},
+              'text' => '* ',
+              'type' => 'menu_entry_leading_text'
+            },
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'other entry'
+                }
+              ],
+              'parent' => {},
+              'type' => 'menu_entry_name'
+            },
+            {
+              'parent' => {},
+              'text' => ': ',
+              'type' => 'menu_entry_separator'
+            },
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'node'
+                }
+              ],
+              'parent' => {},
+              'type' => 'menu_entry_node'
+            },
+            {
+              'parent' => {},
+              'text' => ',    
+',
+              'type' => 'menu_entry_separator'
+            },
+            {
+              'contents' => [],
+              'parent' => {},
+              'type' => 'menu_entry_description'
+            }
+          ],
+          'parent' => {},
+          'type' => 'menu_entry'
+        },
+        {
+          'args' => [
+            {
+              'parent' => {},
+              'text' => '* ',
+              'type' => 'menu_entry_leading_text'
+            },
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'last'
+                }
+              ],
+              'parent' => {},
+              'type' => 'menu_entry_node'
+            },
+            {
+              'parent' => {},
+              'text' => '::
+',
+              'type' => 'menu_entry_separator'
+            },
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => '                 description next line
+'
+                },
+                {
+                  'parent' => {},
+                  'text' => '                 still description
+'
+                }
+              ],
+              'parent' => {},
+              'type' => 'menu_entry_description'
+            }
+          ],
+          'parent' => {},
+          'type' => 'menu_entry'
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'after_description_line'
+        },
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'new comment
+'
+            }
+          ],
+          'parent' => {},
+          'type' => 'menu_comment'
+        },
+        {
+          'args' => [
+            {
+              'parent' => {},
+              'text' => '* ',
+              'type' => 'menu_entry_leading_text'
+            },
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'last node entry '
+                }
+              ],
+              'parent' => {},
+              'type' => 'menu_entry_node'
+            },
+            {
+              'parent' => {},
+              'text' => '::
+',
+              'type' => 'menu_entry_separator'
+            },
+            {
+              'contents' => [],
+              'parent' => {},
+              'type' => 'menu_entry_description'
+            }
+          ],
+          'parent' => {},
+          'type' => 'menu_entry'
+        }
+      ],
+      'parent' => {}
+    }
+  ]
+};
+$result_trees{'simple'}{'contents'}[0]{'parent'} = $result_trees{'simple'};
+$result_trees{'simple'}{'contents'}[1]{'contents'}[0]{'contents'}[0]{'parent'} 
= $result_trees{'simple'}{'contents'}[1]{'contents'}[0];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[0]{'parent'} = 
$result_trees{'simple'}{'contents'}[1];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[1]{'args'}[0]{'parent'} = 
$result_trees{'simple'}{'contents'}[1]{'contents'}[1];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[1]{'args'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'simple'}{'contents'}[1]{'contents'}[1]{'args'}[1];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[1]{'args'}[1]{'parent'} = 
$result_trees{'simple'}{'contents'}[1]{'contents'}[1];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[1]{'args'}[2]{'parent'} = 
$result_trees{'simple'}{'contents'}[1]{'contents'}[1];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[1]{'args'}[3]{'contents'}[0]{'parent'}
 = $result_trees{'simple'}{'contents'}[1]{'contents'}[1]{'args'}[3];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[1]{'args'}[3]{'parent'} = 
$result_trees{'simple'}{'contents'}[1]{'contents'}[1];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[1]{'args'}[4]{'parent'} = 
$result_trees{'simple'}{'contents'}[1]{'contents'}[1];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[1]{'args'}[5]{'contents'}[0]{'parent'}
 = $result_trees{'simple'}{'contents'}[1]{'contents'}[1]{'args'}[5];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[1]{'args'}[5]{'parent'} = 
$result_trees{'simple'}{'contents'}[1]{'contents'}[1];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[1]{'parent'} = 
$result_trees{'simple'}{'contents'}[1];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[2]{'args'}[0]{'parent'} = 
$result_trees{'simple'}{'contents'}[1]{'contents'}[2];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[2]{'args'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'simple'}{'contents'}[1]{'contents'}[2]{'args'}[1];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[2]{'args'}[1]{'parent'} = 
$result_trees{'simple'}{'contents'}[1]{'contents'}[2];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[2]{'args'}[2]{'parent'} = 
$result_trees{'simple'}{'contents'}[1]{'contents'}[2];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[2]{'args'}[3]{'contents'}[0]{'parent'}
 = $result_trees{'simple'}{'contents'}[1]{'contents'}[2]{'args'}[3];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[2]{'args'}[3]{'parent'} = 
$result_trees{'simple'}{'contents'}[1]{'contents'}[2];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[2]{'parent'} = 
$result_trees{'simple'}{'contents'}[1];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[3]{'args'}[0]{'parent'} = 
$result_trees{'simple'}{'contents'}[1]{'contents'}[3];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[3]{'args'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'simple'}{'contents'}[1]{'contents'}[3]{'args'}[1];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[3]{'args'}[1]{'parent'} = 
$result_trees{'simple'}{'contents'}[1]{'contents'}[3];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[3]{'args'}[2]{'parent'} = 
$result_trees{'simple'}{'contents'}[1]{'contents'}[3];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[3]{'args'}[3]{'contents'}[0]{'parent'}
 = $result_trees{'simple'}{'contents'}[1]{'contents'}[3]{'args'}[3];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[3]{'args'}[3]{'parent'} = 
$result_trees{'simple'}{'contents'}[1]{'contents'}[3];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[3]{'args'}[4]{'parent'} = 
$result_trees{'simple'}{'contents'}[1]{'contents'}[3];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[3]{'args'}[5]{'parent'} = 
$result_trees{'simple'}{'contents'}[1]{'contents'}[3];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[3]{'parent'} = 
$result_trees{'simple'}{'contents'}[1];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[4]{'args'}[0]{'parent'} = 
$result_trees{'simple'}{'contents'}[1]{'contents'}[4];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[4]{'args'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'simple'}{'contents'}[1]{'contents'}[4]{'args'}[1];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[4]{'args'}[1]{'parent'} = 
$result_trees{'simple'}{'contents'}[1]{'contents'}[4];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[4]{'args'}[2]{'parent'} = 
$result_trees{'simple'}{'contents'}[1]{'contents'}[4];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[4]{'args'}[3]{'contents'}[0]{'parent'}
 = $result_trees{'simple'}{'contents'}[1]{'contents'}[4]{'args'}[3];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[4]{'args'}[3]{'contents'}[1]{'parent'}
 = $result_trees{'simple'}{'contents'}[1]{'contents'}[4]{'args'}[3];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[4]{'args'}[3]{'parent'} = 
$result_trees{'simple'}{'contents'}[1]{'contents'}[4];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[4]{'parent'} = 
$result_trees{'simple'}{'contents'}[1];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[5]{'parent'} = 
$result_trees{'simple'}{'contents'}[1];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[6]{'contents'}[0]{'parent'} 
= $result_trees{'simple'}{'contents'}[1]{'contents'}[6];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[6]{'parent'} = 
$result_trees{'simple'}{'contents'}[1];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[7]{'args'}[0]{'parent'} = 
$result_trees{'simple'}{'contents'}[1]{'contents'}[7];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[7]{'args'}[1]{'contents'}[0]{'parent'}
 = $result_trees{'simple'}{'contents'}[1]{'contents'}[7]{'args'}[1];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[7]{'args'}[1]{'parent'} = 
$result_trees{'simple'}{'contents'}[1]{'contents'}[7];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[7]{'args'}[2]{'parent'} = 
$result_trees{'simple'}{'contents'}[1]{'contents'}[7];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[7]{'args'}[3]{'parent'} = 
$result_trees{'simple'}{'contents'}[1]{'contents'}[7];
+$result_trees{'simple'}{'contents'}[1]{'contents'}[7]{'parent'} = 
$result_trees{'simple'}{'contents'}[1];
+$result_trees{'simple'}{'contents'}[1]{'parent'} = $result_trees{'simple'};
+
+$result_texts{'simple'} = '
address@hidden
+comment
+* menu entry name : node.    description
+* node name::                description new
+* other entry: node,    
+* last::
+                 description next line
+                 still description
+
+new comment
+* last node entry ::
address@hidden menu
+';
+
+$result_errors{'simple'} = [];
+
+



reply via email to

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