@@ -3,18 +3,19 @@ package MetaCPAN::Server::View::Pod;
33use strict;
44use warnings;
55
6- use MetaCPAN::Pod::XHTML ;
6+ use MetaCPAN::Pod::Renderer ;
77use Moose;
8- use Pod::Markdown;
9- use Pod::POM;
10- use Pod::Text;
118
129extends ' Catalyst::View' ;
1310
1411sub process {
1512 my ( $self , $c ) = @_ ;
13+
14+ my $renderer = MetaCPAN::Pod::Renderer-> new;
15+
1616 my $content = $c -> res-> body || $c -> stash-> {source };
17- $content = eval { join ( " " , $content -> getlines ) };
17+ $content = eval { join ( q{ } , $content -> getlines ) };
18+
1819 my ( $body , $content_type );
1920 my $accept = eval { $c -> req-> preferred_content_type } || ' text/html' ;
2021 my $show_errors = $c -> req-> params-> {show_errors };
@@ -23,63 +24,42 @@ sub process {
2324 $x_codes = $c -> config-> {pod_html_x_codes } unless defined $x_codes ;
2425
2526 if ( $accept eq ' text/plain' ) {
26- $body = $self -> build_pod_txt ($content );
27+ $body = $self -> _factory -> to_txt ($content );
2728 $content_type = ' text/plain' ;
2829 }
2930 elsif ( $accept eq ' text/x-pod' ) {
30- $body = $self -> extract_pod ($content );
31+ $body = $self -> _factory -> to_pod ($content );
3132 $content_type = ' text/plain' ;
3233 }
3334 elsif ( $accept eq ' text/x-markdown' ) {
34- $body = $self -> build_pod_markdown ($content );
35+ $body = $self -> _factory -> to_markdown ($content );
3536 $content_type = ' text/plain' ;
3637 }
3738 else {
3839 $body = $self -> build_pod_html( $content , $show_errors , $x_codes );
3940 $content_type = ' text/html' ;
4041 }
42+
4143 $c -> res-> content_type($content_type );
4244 $c -> res-> body($body );
4345}
4446
45- sub build_pod_markdown {
46- my ( $self , $source ) = @_ ;
47- my $parser = Pod::Markdown-> new;
48- my $mkdn = q[ ] ;
49- $parser -> output_string( \$mkdn );
50- $parser -> parse_string_document($source );
51- return $mkdn ;
52- }
53-
5447sub build_pod_html {
5548 my ( $self , $source , $show_errors , $x_codes ) = @_ ;
56- my $parser = MetaCPAN::Pod::XHTML-> new();
57- $parser -> index (1);
58- $parser -> html_header(' ' );
59- $parser -> html_footer(' ' );
60- $parser -> perldoc_url_prefix(' ' );
61- $parser -> no_errata_section( !$show_errors );
62- $parser -> nix_X_codes( !$x_codes );
63- my $html = " " ;
64- $parser -> output_string( \$html );
65- $parser -> parse_string_document($source );
66- return $html ;
67- }
6849
69- sub extract_pod {
70- my ( $self , $source ) = @_ ;
71- my $parser = Pod::POM-> new;
72- my $pom = $parser -> parse_text($source );
73- return Pod::POM::View::Pod-> print ($pom );
50+ my $renderer = $self -> _factory-> xhtml_renderer;
51+ $renderer -> nix_X_codes( !$x_codes );
52+ $renderer -> no_errata_section( !$show_errors );
53+
54+ my $html = q{ } ;
55+ $renderer -> output_string( \$html );
56+ $renderer -> parse_string_document($source );
57+ return $html ;
7458}
7559
76- sub build_pod_txt {
77- my ( $self , $source ) = @_ ;
78- my $parser = Pod::Text-> new( sentence => 0, width => 78 );
79- my $text = " " ;
80- $parser -> output_string( \$text );
81- $parser -> parse_string_document($source );
82- return $text ;
60+ sub _factory {
61+ my $self = shift ;
62+ return MetaCPAN::Pod::Renderer-> new;
8363}
8464
85651;
0 commit comments