[Jifty-commit] r6609 - in jifty/trunk: lib/Jifty/Web
Jifty commits
jifty-commit at lists.jifty.org
Tue Mar 17 10:58:41 EDT 2009
Author: alexmv
Date: Tue Mar 17 10:58:33 2009
New Revision: 6609
Modified:
jifty/trunk/ (props changed)
jifty/trunk/lib/Jifty/Web/Menu.pm
Log:
r43248 at kohr-ah: chmrr | 2009-03-17 10:30:59 -0400
Cache ordering of children, and url value, more aggressively; also remove unnecessary _parent accessor
Modified: jifty/trunk/lib/Jifty/Web/Menu.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Web/Menu.pm (original)
+++ jifty/trunk/lib/Jifty/Web/Menu.pm Tue Mar 17 10:58:33 2009
@@ -9,7 +9,7 @@
use Scalar::Util qw(weaken);
__PACKAGE__->mk_accessors(qw(
- label _parent sort_order link target escape_label class render_children_inline
+ label sort_order link target escape_label class render_children_inline
));
=head1 NAME
@@ -60,11 +60,11 @@
sub parent {
my $self = shift;
if (@_) {
- $self->_parent(@_);
- weaken $self->{_parent};
+ $self->{parent} = shift;
+ weaken $self->{parent};
}
- return $self->_parent;
+ return $self->{parent};
}
@@ -110,13 +110,12 @@
sub url {
my $self = shift;
- $self->{url} = shift if @_;
-
- $self->{url} = URI->new_abs($self->{url}, $self->parent->url . "/")->as_string
- if defined $self->{url} and $self->parent and $self->parent->url;
-
- $self->{url} =~ s!///!/! if $self->{url};
-
+ if (@_) {
+ $self->{url} = shift;
+ $self->{url} = URI->new_abs($self->{url}, $self->parent->url . "/")->as_string
+ if defined $self->{url} and $self->parent and $self->parent->url;
+ $self->{url} =~ s!///!/! if $self->{url};
+ }
return $self->{url};
}
@@ -154,6 +153,9 @@
my $proto = ref $self || $self;
if (@_) {
+ # Clear children ordering cache
+ delete $self->{children_list};
+
$self->{children}{$key} = $proto->new({parent => $self,
sort_order => ($self->{children}{$key}{sort_order}
|| scalar values %{$self->{children}}),
@@ -161,7 +163,6 @@
escape_label => 1,
@_
});
- Scalar::Util::weaken($self->{children}{$key}{parent});
# Figure out the URL
my $child = $self->{children}{$key};
@@ -213,6 +214,7 @@
sub delete {
my $self = shift;
my $key = shift;
+ delete $self->{children_list};
delete $self->{children}{$key};
}
@@ -225,8 +227,14 @@
sub children {
my $self = shift;
- my @kids = values %{$self->{children} || {}};
- @kids = sort {$a->sort_order <=> $b->sort_order} @kids;
+ my @kids;
+ if ($self->{children_list}) {
+ @kids = @{$self->{children_list}};
+ } else {
+ @kids = values %{$self->{children} || {}};
+ @kids = sort {$a->{sort_order} <=> $b->{sort_order}} @kids;
+ $self->{children_list} = \@kids;
+ }
return wantarray ? @kids : \@kids;
}
More information about the Jifty-commit
mailing list