Dist::Zilla::Plugin::ReadmeFromPod - Automatically convert POD to a README for Dist::Zilla


Dist-Zilla-Plugin-ReadmeFromPod documentation Contained in the Dist-Zilla-Plugin-ReadmeFromPod distribution.

Index


Code Index:

NAME

Top

Dist::Zilla::Plugin::ReadmeFromPod - Automatically convert POD to a README for Dist::Zilla

SYNOPSIS

Top

    # dist.ini
    [ReadmeFromPod]

DESCRIPTION

Top

Generates a plain-text README for your Dist::Zilla powered dist from its main_module with Pod::Text.

AUTHORS

Top

Fayland Lam <fayland@gmail.com> and Ævar Arnfjörð Bjarmason <avar@cpan.org>

LICENSE AND COPYRIGHT

Top


Dist-Zilla-Plugin-ReadmeFromPod documentation Contained in the Dist-Zilla-Plugin-ReadmeFromPod distribution.

package Dist::Zilla::Plugin::ReadmeFromPod;
BEGIN {
  $Dist::Zilla::Plugin::ReadmeFromPod::AUTHORITY = 'cpan:AVAR';
}
BEGIN {
  $Dist::Zilla::Plugin::ReadmeFromPod::VERSION = '0.14';
}

use Moose;
use Moose::Autobox;
use IO::Handle;
use Encode qw( encode );

with 'Dist::Zilla::Role::InstallTool';

sub setup_installer {
  my ($self, $arg) = @_;

  require Dist::Zilla::File::InMemory;
  
  my $mmcontent = $self->zilla->main_module->content;

  require Pod::Text;
  my $parser = Pod::Text->new();
  $parser->output_string( \my $input_content );
  $parser->parse_string_document( $mmcontent );
  
  my $content;
  if( defined $parser->{encoding} ){ 
    $content = encode( $parser->{encoding} , $input_content );
  } else { 
     $content = $input_content; 
  }

  my $file = $self->zilla->files->grep( sub { $_->name =~ m{README\z} } )->head;

  if ( $file ) {
    $file->content( $content );
    $self->zilla->log("Override README from [ReadmeFromPod]");
  } else {
    $file = Dist::Zilla::File::InMemory->new({
        content => $content,
        name    => 'README',
    });
    $self->add_file($file);
  }

  return;
}

__PACKAGE__->meta->make_immutable;