#
# This software is Copyright 2005 by Elsevier Inc.  You may use it
# under the terms of the license at http://perl.plover.com/hop/LICENSE.txt .
#



###
### outline-parser-2
###

## Chapter 8 section 6

my @LEVEL;
$tree = T(concatenate(T(lookfor('ITEM', sub { $_[0] }),
                        sub {
                          my $s = $_[1];
                          push @LEVEL, level_of($s);
                          return trim($s);
                        }),
                      star($Subtree),
                      action(sub { pop @LEVEL })),
          sub { [ $_[0], @{$_[1]} ]},
         );


## Chapter 8 section 6

$subtree = T(concatenate(test(sub {
                                my $input = shift;
                                return unless $input;
                                my $next = head($input);
                                return unless $next->[0] eq 'ITEM';
                                return level_of($next->[1]) > $LEVEL[-1];
                              }),
                         $Tree,),
             sub { $_[1] });
   my $PREFIX;
   sub level_of {
     my $count = 0;
     my $s = shift;
     if (! defined $PREFIX) {
       ($PREFIX) = $s =~ /^(\s*)/;
     }
     $s =~ s/^$PREFIX//o 
       or die "Item '$s' wasn't indented the same as the previous items.\n";

     my ($indent) = $s =~ /^(\s*)/;
     my $level = length($indent);
     return $level;
   }
