Pod::Tree::PerlMap - map names to URLs


Pod-Tree documentation Contained in the Pod-Tree distribution.

Index


Code Index:

NAME

Top

Pod::Tree::PerlMap - map names to URLs

SYNOPSIS

Top

  $perl_map = new Pod::Tree::PerlMap;

  $perl_map->add_page  ($name, $file);
  $perl_map->add_func  ($func, $file);
  $perl_map->force_func(0);
  $perl_map->force_func(1);
  $perl_map->set_depth ($depth);

  ($base, $page, $section) = $perl_map->map($base, $page, $section);

DESCRIPTION

Top

Pod::Tree::PerlMap maps L<> markups to URLs.

The Pod::Tree::Perl* translators make entries in the map. Pod::Tree::HTML uses the map to translate links before it emits them.

METHODS

Top

$perl_map->add_page($name, $file)

Map $name to $file. $name is the name of a POD, as used in L<> markups. $file is the path to the HTML file that is the target of the link.

$perl_map->add_func($func, $file)

Maps $func to $file. $func is the name of a function described in perlfunc.pod. $file is the name of the HTML file where it is described.

$perl_map->force_func($state)

Controls interpretation of links of the form L<func>.

If $state is true, calls to map will interpret L<func> as L<perlfunc/func>.

If $state is false, calls to map will interpret L<func> normally.

$perl_map->set_depth($depth)

Informs $perl_map of the depth of the referring page in the HTML directory tree. $perl_map needs to know this so that it can construct relative links.

($base, $page, $section) = $perl_map->map($base, $page, $section)

Remaps a link.

$base is the base URL for the HTML page, if any. $page is the page given in an L<> markup. $section is the section given in the L<> markup, if any.

map returns a new $base, $page, and $section that can be used to construct a link to the HTML page.

REQUIRES

Top

Nothing.

EXPORTS

Top

Nothing.

AUTHOR

Top

Steven McDougall, swmcd@world.std.com

COPYRIGHT

Top


Pod-Tree documentation Contained in the Pod-Tree distribution.

use strict;

package Pod::Tree::PerlMap;


sub new
{
    my($class) = @_;

    my $perl_map = { prefix => '' };

    bless $perl_map, $class
}


sub set_depth
{
    my($perl_map, $depth) = @_;

    $perl_map->{prefix} = '../' x $depth;
}


sub add_page
{
    my($perl_map, $page, $file) = @_;

    $perl_map->{page}{$page} = $file;
}


sub add_func
{
    my($perl_map, $func, $file) = @_;

    $perl_map->{func}{$func} = $file;
}


sub force_func
{
    my($perl_map, $force_func) = @_;

    $perl_map->{force_func} = $force_func;
}


sub map
{
    my($perl_map, $base, $page, $section) = @_;
    # print "map $base, $page, $section ->";

    my $prefix     = $perl_map->{prefix};
    my $force_func = $perl_map->{force_func};
    my $func       = (split m(\s+), $section)[0];  # e.g.  L<"eval BLOCK">
    my $file       = $perl_map->{func}{$func};

    if ( ($page eq 'perlfunc' or $page eq '' and $force_func) and $file)
    {
	$page    = $prefix . 'pod/func/' . $file;
	$section = '';
    }
    elsif ($perl_map->{page}{$page})
    {
	$page = $prefix . $perl_map->{page}{$page};
    }

    # print "$base, $page, $section\n";
    ($base, $page, $section)
}

1

__END__