package HTML::Widgets::NavMenu::Tree::Iterator::Item; use strict; use warnings; use base qw(HTML::Widgets::NavMenu::Object); =head1 NAME HTML::Widgets::NavMenu::Tree::Iterator::Item - an item for the tree iterator. =head1 SYNOPSIS For internal use only. =cut sub _init { my $self = shift; my %args = (@_); $self->{'node'} = $args{'node'} or die "node not specified!"; my $subs = $args{'subs'} or die "subs not specified!"; $self->{'subs'} = $subs; $self->{'sub_idx'} = -1; $self->{'visited'} = 0; $self->{'accum_state'} = $args{'accum_state'} or die "accum_state not specified!"; return 0; } sub _node { my $self = shift; return $self->{'node'}; } sub _accum_state { my $self = shift; return $self->{'accum_state'}; } sub _is_visited { my $self = shift; return $self->{'visited'}; } sub _visit { my $self = shift; $self->{'visited'} = 1; if ($self->_num_subs_to_go()) { return $self->{'subs'}->[++$self->{'sub_idx'}]; } else { return undef; } } sub _visited_index { my $self = shift; return $self->{'sub_idx'}; } sub _num_subs_to_go { my $self = shift; return $self->_num_subs() - $self->{'sub_idx'} - 1; } sub _num_subs { my $self = shift; return scalar(@{$self->{'subs'}}); } sub _get_sub { my $self = shift; my $sub_num = shift; return $self->{'subs'}->[$sub_num]; } =head1 COPYRIGHT & LICENSE Copyright 2006 Shlomi Fish, all rights reserved. This program is released under the following license: MIT X11. =cut 1;