HTML-Widgets-NavMenu
view release on metacpan or search on metacpan
lib/HTML/Widgets/NavMenu/Tree/Node.pm view on Meta::CPAN
use warnings;
use parent 'HTML::Widgets::NavMenu::Object';
__PACKAGE__->mk_acc_ref(
[
qw(
CurrentlyActive expanded hide host li_id role rec_url_type
separator show_always skip subs text title url url_is_abs url_type
)
]
);
use HTML::Widgets::NavMenu::ExpandVal ();
sub _init
{
my $self = shift;
$self->subs( [] );
return $self;
}
sub expand
{
my $self = shift;
my $v =
@_
? ( shift(@_) )
: HTML::Widgets::NavMenu::ExpandVal->new( { capture => 1 } );
# Don't set it to something if it's already capture_expanded(),
# otherwise it can set as a non-capturing expansion.
if ( !$self->capture_expanded() )
{
$self->expanded($v);
}
return 0;
}
sub mark_as_current
{
my $self = shift;
$self->expand();
$self->CurrentlyActive(1);
return 0;
}
sub _process_new_sub
{
my $self = shift;
my $sub = shift;
$self->update_based_on_sub($sub);
}
sub update_based_on_sub
{
my $self = shift;
my $sub = shift;
if ( my $expand_val = $sub->expanded() )
{
$self->expand($expand_val);
}
}
sub add_sub
{
my $self = shift;
my $sub = shift;
push( @{ $self->subs }, $sub );
$self->_process_new_sub($sub);
return 0;
}
sub get_nth_sub
{
my $self = shift;
my $idx = shift;
return $self->subs()->[$idx];
}
sub _num_subs
{
my $self = shift;
return scalar( @{ $self->subs() } );
}
sub list_regular_keys
{
my $self = shift;
return (
qw(host li_id rec_url_type role show_always text title url url_type));
}
sub list_boolean_keys
{
my $self = shift;
return (qw(hide separator skip url_is_abs));
}
sub set_values_from_hash_ref
{
my $self = shift;
my $sub_contents = shift;
foreach my $key ( $self->list_regular_keys() )
{
if ( exists( $sub_contents->{$key} ) )
{
( run in 1.383 second using v1.01-cache-2.11-cpan-98e64b0badf )