package Padre::Task::Pod2HTML;

# Render POD (or files containing POD) to HTML suitable for a Help
# or documentation browser.

use 5.008;
use strict;
use warnings;
use File::Spec  ();
use Padre::Task ();

our $VERSION = '1.00';
our @ISA     = 'Padre::Task';





######################################################################
# Constructor and Accessors

sub new {
	my $self = shift->SUPER::new(@_);

	# We need either a file name or the POD
	if ( defined $self->{file} ) {
		unless ( File::Spec->file_name_is_absolute( $self->{file} ) ) {
			$self->{file} = File::Spec->rel2abs( $self->{file} );
		}
		unless ( -f $self->{file} and -r _ ) {
			return undef;
		}

	} elsif ( not defined $self->{text} ) {
		return undef;
	}

	return $self;
}

sub file {
	$_[0]->{file};
}

sub html {
	$_[0]->{html};
}

sub errstr {
	$_[0]->{errstr};
}





######################################################################
# Padre::Task Methods

sub run {
	my $self = shift;
	my $html = '';

	# Generate the HTML
	require Padre::Pod2HTML;
	if ( defined $self->{file} ) {
		local $@;
		$html = eval { Padre::Pod2HTML->file2html( $self->{file} ); };
		if ($@) {
			$self->{errstr} = "Error while rendering '$self->{file}'";
			return 1;
		}
	} else {
		local $@;
		$html = eval { Padre::Pod2HTML->pod2html( $self->{text} ); };
		if ($@) {
			$self->{errstr} = "Error while rendering POD";
			return 1;
		}
	}

	# Save the HTML and return
	$self->{html} = $html;
	return 1;
}

1;

# Copyright 2008-2013 The Padre development team as listed in Padre.pm.
# LICENSE
# This program is free software; you can redistribute it and/or
# modify it under the same terms as Perl 5 itself.