use 5.010;
package Pod::Elemental::Transformer::PPIHTML;
our $VERSION = '0.093580';
use Moose;
with 'Pod::Elemental::Transformer::SynHi';
# ABSTRACT: convert "=begin perl" and shebang-marked blocks to XHTML
use utf8;
use PPI;
use PPI::HTML;
has '+format_name' => (default => 'perl');
sub build_html {
my ($self, $perl, $param) = @_;
my $ppi_doc = PPI::Document->new(\$perl);
my $ppihtml = PPI::HTML->new;
my $html = $ppihtml->html( $ppi_doc );
$param->{'stupid-hyphen'} and s/-/−/g for $html;
$html =~ s/<br>\n?/\n/g;
return $html;
}
sub parse_synhi_param {
my ($self, $str) = @_;
my @keys = split /\s+/, $str;
return {} unless @keys;
confess "couldn't parse PPIHTML region parameter"
if @keys > 1 or $keys[0] ne 'stupid-hyphen';
return { 'stupid-hyphen' => 1 };
}
1;
__END__
=pod
=head1 NAME
Pod::Elemental::Transformer::PPIHTML - convert "=begin perl" and shebang-marked blocks to XHTML
=head1 VERSION
version 0.093580
=head1 DESCRIPTION
This transformer, based on L<Pod::Elemental::Transformer::SynHi>, looks for
regions like this:
=begin perl
my $x = 1_00_000 ** $::xyzzy;
=end perl
...into syntax-highlighted HTML that I can't really usefully represent here.
It uses L<PPI::HTML>, so you can read more about the kind of HTML it will
produce, there.
This form is also accepted, in a verbatim paragraph:
#!perl
my $x = 1_00_000 ** $::xyzzy;
In the above example, the shebang-like line will be stripped.
The C<format_name> attribute may be supplied during the construction of the
transformer to look for a region other than C<perl>.
=head1 AUTHOR
Ricardo SIGNES <rjbs@cpan.org>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2009 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