Changeset 759
- Timestamp:
- 05/17/06 03:03:57
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/plagger/lib/Plagger/Plugin/Filter/TruePermalink.pm
r751 r759 43 43 my($self, $context, $args) = @_; 44 44 45 $self->rewrite( $args->{entry}->permalink, sub { $args->{entry}->link(@_) });45 $self->rewrite(sub { $args->{entry}->link }, sub { $args->{entry}->link(@_) }); 46 46 for my $enclosure ($args->{entry}->enclosures) { 47 $self->rewrite( $enclosure->url, sub { $enclosure->url( URI->new(@_) ) });47 $self->rewrite(sub { $enclosure->url }, sub { $enclosure->url( URI->new(@_) ) }); 48 48 } 49 49 } 50 50 51 51 sub rewrite { 52 my($self, $link, $callback) = @_; 52 my($self, $getter, $callback) = @_; 53 54 my $loop; 55 while ($self->rewrite_link($getter, $callback)) { 56 if ($loop++ >= 100) { 57 Plagger->error("Possible infinite loop on " . $getter->()); 58 } 59 } 60 } 61 62 sub rewrite_link { 63 my($self, $getter, $callback) = @_; 53 64 54 65 my $context = Plagger->context; 55 66 67 my $link = $getter->(); 56 68 my $orig = $link; # copy 57 69 my $count = 0; … … 71 83 $rewritten = $_; 72 84 $callback->($_); 85 last; 73 86 } 74 87 } elsif ($plugin->{query_param}) { … … 85 98 $context->log(info => "Link $orig rewritten to $rewritten"); 86 99 } 100 101 return $count; 87 102 } 88 103
