/usr/local/CPAN/Quilt/Quilt/DO/List.pm


#
# Copyright (C) 1997 Ken MacLeod
# See the file COPYING for distribution terms.
#
# $Id: List.pm,v 1.1.1.1 1997/10/22 21:35:08 ken Exp $
#

use Quilt;

use strict;

package Quilt::DO::List;

sub first_item_num {
    my $self = shift;
    my $number = 1;

#    $number = $self->prev_with(sub {$node->is_list})->last_item_num
#	if (defined $self->continued);

    return $number;
}

sub last_item_num {
    my $self = shift;
#    my $number = $self->first_item_num;

#    return $number + $self->num_contents + 1;
}

package Quilt::DO::List::Iter;

sub last_item_num {
    my $self = shift;
    return ($self->[0]->last_item_num (@_));
}

sub first_item_num {
    my $self = shift;
    return ($self->[0]->first_item_num (@_));
}

package Quilt::DO::List::Item;

sub number {
    my $self = shift;
    my $real_self = $self->delegate;
    my $number = $self->parent->first_item_num;

    my $contents = $self->parent->contents();
    my $ii;
    for ($ii = 0; $ii <= $#$contents; $ii ++) {
	last if $contents->[$ii] == $real_self;

	$number ++
	    if (ref ($contents->[$ii]) eq 'Quilt::DO::List::Item');
    }

    return $number;
}

package Quilt::DO::List::Item::Iter;

# XXX support in Class::Visitor
sub number { goto &Quilt::DO::List::Item::number; }

package Quilt::DO::List::Term;

1;