Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
optimized some default helpers
  • Loading branch information
kraih committed Jul 27, 2012
1 parent aae26ef commit 949b4c9
Showing 1 changed file with 14 additions and 23 deletions.
37 changes: 14 additions & 23 deletions lib/Mojolicious/Plugin/DefaultHelpers.pm
Expand Up @@ -43,19 +43,15 @@ sub register {
# Add "current_route" helper
$app->helper(
current_route => sub {
my $self = shift;
return '' unless my $endpoint = $self->match->endpoint;
return '' unless my $endpoint = shift->match->endpoint;
return $endpoint->name unless @_;
return $endpoint->name eq shift;
}
);

# Add "dumper" helper
$app->helper(
dumper => sub {
shift;
Data::Dumper->new([@_])->Indent(1)->Terse(1)->Dump;
}
dumper => sub { shift; Data::Dumper->new([@_])->Indent(1)->Terse(1)->Dump }
);

# Add "include" helper
Expand All @@ -79,33 +75,28 @@ sub register {
);

# Add "memorize" helper
my %memorize;
my %mem;
$app->helper(
memorize => sub {
shift;
my $cb = pop;
return '' unless ref $cb eq 'CODE';
my $name = shift;
my $args;
if (ref $name eq 'HASH') { ($args, $name) = ($name, undef) }
else { $args = shift || {} }
return '' unless ref(my $cb = pop) eq 'CODE';
my ($name, $args)
= ref $_[0] eq 'HASH' ? (undef, shift) : (shift, shift || {});

# Default name
$name ||= join '', map { $_ || '' } (caller(1))[0 .. 3];

# Expire
# Expire old results
my $expires = $args->{expires} || 0;
delete $memorize{$name}
if exists $memorize{$name}
&& $expires > 0
&& $memorize{$name}{expires} < time;
delete $mem{$name}
if exists $mem{$name} && $expires > 0 && $mem{$name}{expires} < time;

# Memorized
return $memorize{$name}{content} if exists $memorize{$name};
# Memorized result
return $mem{$name}{content} if exists $mem{$name};

# Memorize
$memorize{$name}{expires} = $expires;
$memorize{$name}{content} = $cb->();
# Memorize new result
$mem{$name}{expires} = $expires;
return $mem{$name}{content} = $cb->();
}
);

Expand Down

0 comments on commit 949b4c9

Please sign in to comment.