| Pod-Xhtml documentation | Contained in the Pod-Xhtml distribution. |
Pod::Hyperlink::BounceURL - Allow off-page links in POD to point to a URL
use Pod::Hyperlink::BounceURL; my $linkparser = new Pod::Hyperlink::BounceURL; $linkparser->configure( URL => '/cgi-perl/support/bounce.pl?page=%s' ); my $pod2xhtml = new Pod::Xhtml( LinkParser => $linkparser );
Some links in your pod may not be resolveable by Pod::Hyperlink, e.g. L<Some::Module> -
this module allows you to detect such links and generate a hyperlink instead of some static text.
The target URL will probably be some kind of dynamic webpage or CGI application which can then serve up
the relevant page or send a redirect to the page, hence the "bounce" in this module's name.
This module overrides the type() method and, for relevant links, will return a string which is "bounceurl:" followed by the URL, instead of returning "page" or "item". Your pod-conversion module can then switch on this case and emit the correct kind of markup. Pod::Xhtml supports the use of this module.
Set persistent configuration for this object. See OPTIONS.
Behaves as Pod::Hyperlink's type() method except for the unresolveable links, where the string returned is as described in DESCRIPTION.
The URL to handle the link, which may be absolute or relative, of any protocol - it's just treated as a string and is passed through sprintf(), with two string arguments that are both already URL-escaped.
The first argument is the page name, and will always exist. The second argument is the "node" within the page, and may be empty.
Insert '%s' where you wish the arguments to be interpolated. The string goes through sprintf() so you should have '%%' where you want an actual percent sign. If you need the arguments in a different order, see the perl-specific features of sprintf in perlfunc.
$Revision: 1.7 $
P Kent <cpan _at_ bbc _dot_ co _dot_ uk>
(c) BBC 2007. This program is free software; you can redistribute it and/or modify it under the GNU GPL.
See the file COPYING in this distribution, or http://www.gnu.org/licenses/gpl.txt
| Pod-Xhtml documentation | Contained in the Pod-Xhtml distribution. |
package Pod::Hyperlink::BounceURL; use Pod::ParseUtils; use URI::Escape; use vars qw($VERSION @ISA); $VERSION = ('$Revision: 1.7 $' =~ /([\d\.]+)/)[0]; @ISA = 'Pod::Hyperlink'; sub configure { my $self = shift; my %opts = @_; if ($opts{'URL'}) { $self->{'___url'} = $opts{'URL'}; } } sub type { my $self = shift; # very special case - if we are called explicitly (rather than by our superclass) and with other conditions # 1) a page type with a page value # 2) an item type with a page value # We don't care about any other cases my ($callpack) = caller(); if ($callpack ne $ISA[0]) { DUMP(__PACKAGE__."::type", [ $self, @_ ]); } else { DUMP(" indirect call of ".__PACKAGE__."::type", [ $self, @_ ]); } if ( ($callpack ne $ISA[0]) && (($self->{'-type'} eq 'page') || ($self->{'-type'} eq 'item')) && $self->{'-page'} ) { my $page_esc = uri_escape( $self->{'-page'} ); my $node_esc = uri_escape( $self->{'-node'} ); my $url = sprintf( $self->{'___url'}, $page_esc, $node_esc ); return "bounceurl:$url"; } # in all other cases, let the superclass handle the work return $self->SUPER::type(@_); } # debug hooks sub TRACE {} sub DUMP {} 1;