The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Pod::Weaver::Plugin::EnsurePod5;
# ABSTRACT: ensure that the Pod5 translator has been run on this document
$Pod::Weaver::Plugin::EnsurePod5::VERSION = '4.010';
use Moose;
with 'Pod::Weaver::Role::Preparer';

use namespace::autoclean;

use Pod::Elemental::Transformer::Pod5;

#pod =head1 OVERVIEW
#pod
#pod This plugin is very, very simple:  it runs the Pod5 transformer on the input
#pod document and removes any leftover whitespace-only Nonpod elements.  If
#pod non-whitespace-only Nonpod elements are found, an exception is raised.
#pod
#pod =cut

sub _strip_nonpod {
  my ($self, $node) = @_;

  # XXX: This is really stupid. -- rjbs, 2009-10-24

  foreach my $i (reverse 0 .. $#{ $node->children }) {
    my $para = $node->children->[$i];

    if ($para->isa('Pod::Elemental::Element::Pod5::Nonpod')) {
      if ($para->content !~ /\S/) {
        splice @{ $node->children }, $i, 1
      } else {
        confess "can't cope with a Nonpod element with non-whitespace content";
      }
    } elsif ($para->does('Pod::Elemental::Node')) {
      $self->_strip_nonpod($para);
    }
  }
}

sub prepare_input {
  my ($self, $input) = @_;
  my $pod_document = $input->{pod_document};

  Pod::Elemental::Transformer::Pod5->new->transform_node($pod_document);

  $self->_strip_nonpod($pod_document);

  return;
}

__PACKAGE__->meta->make_immutable;
1;

__END__

=pod

=encoding UTF-8

=head1 NAME

Pod::Weaver::Plugin::EnsurePod5 - ensure that the Pod5 translator has been run on this document

=head1 VERSION

version 4.010

=head1 OVERVIEW

This plugin is very, very simple:  it runs the Pod5 transformer on the input
document and removes any leftover whitespace-only Nonpod elements.  If
non-whitespace-only Nonpod elements are found, an exception is raised.

=head1 AUTHOR

Ricardo SIGNES <rjbs@cpan.org>

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Ricardo SIGNES.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut