File Coverage

lib/Devel/Trepan/Pod2Text.pm
Criterion Covered Total %
statement 31 47 65.9
branch 6 20 30.0
condition 2 10 20.0
subroutine 7 8 87.5
pod 0 2 0.0
total 46 87 52.8


line stmt bran cond sub pod time code
1             # Copyright (C) 2012, 2014 Rocky Bernstein <rocky@cpan.org>
2             # -*- coding: utf-8 -*-
3              
4             =head1 C<Devel::Trepan::Pod2Text>
5              
6             Devel::Trepan interface to convert POD into a string the debugger
7             and then present using its output mechanism
8              
9             =cut
10              
11             package Devel::Trepan::Pod2Text;
12              
13 13     13   19295 use vars qw(@ISA @EXPORT);
  13         32  
  13         1131  
14             @ISA = qw(Exporter); @EXPORT = qw(pod2string help2podstring);
15              
16 13     13   83 use warnings; use strict;
  13     13   43  
  13         317  
  13         160  
  13         34  
  13         443  
17              
18 13     13   87 use vars qw($HAVE_TEXT_COLOR $HAVE_TEXT);
  13         36  
  13         1339  
19              
20             BEGIN {
21             $HAVE_TEXT_COLOR =
22 13 50   13   47 eval {
23 13         595 require Term::ANSIColor;
24 13         13398 require Pod::Text::Color;
25             } ? 1 : 0;
26              
27 13 50       60903 $HAVE_TEXT = eval {
28 13         5194 require Pod::Text;
29             } ? 1 : 0;
30             }
31              
32             sub pod2string($;$$)
33             {
34 2     2 0 2164 my ($input_file, $color, $width) = @_;
35              
36 2 100 50     22 $width = ($ENV{'COLUMNS'} || 80) unless $width;
37 2 50       11 $color = 0 unless $color;
38              
39             # Figure out what formatter we're going to use.
40 2         7 my $formatter = 'Pod::Text';
41 2 50 33     15 if ($color && $HAVE_TEXT_COLOR) {
42 0         0 $formatter = 'Pod::Text::Color';
43             } else {
44 2         8 $formatter = 'Pod::Text';
45             }
46              
47              
48 2         28 my $p2t = $formatter->new(width => $width, indent => 2, utf8=>1);
49 2         519 my $output_string;
50 2     1   71 open(my $out_fh, '>', \$output_string);
  1         11  
  1         3  
  1         12  
51 2         1097 $p2t->parse_from_file($input_file, $out_fh);
52 2         7070 return $output_string;
53             }
54              
55             sub help2podstring($;$$)
56             {
57 0     0 0 0 my ($input_string, $color, $width) = @_;
58              
59 0 0 0     0 $width = ($ENV{'COLUMNS'} || 80) unless $width;
60 0 0       0 $color = 0 unless $color;
61              
62             # Figure out what formatter we're going to use.
63 0         0 my $formatter = 'Pod::Text';
64 0 0 0     0 if ($color && $HAVE_TEXT_COLOR) {
65 0         0 $formatter = 'Pod::Text::Color';
66             } else {
67 0         0 $formatter = 'Pod::Text';
68             }
69              
70 0         0 my $p2t = $formatter->new(width => $width, indent => 2, utf8 => 1);
71 0         0 my $output_string;
72 0         0 open(my $out_fh, '>', \$output_string);
73 0         0 open(my $in_fh, '<', \$input_string);
74              
75 0 0       0 $input_string = "=pod\n\n$input_string" unless
76             "=pod\n" eq substr($input_string, 0, 4);
77 0 0       0 $input_string .= "\n=cut\n" unless
78             "\n=cut\n" eq substr($input_string, -6);
79 0         0 $p2t->parse_from_file($in_fh, $out_fh);
80 0         0 return $output_string;
81             }
82              
83             unless (caller) {
84             print pod2string(__FILE__);
85             print '-' x 30, "\n";
86             print pod2string(__FILE__, 1);
87             print '-' x 30, "\n";
88             print pod2string(__FILE__, 1, 40);
89             print '=' x 30, "\n";
90             print help2podstring("Now E<mdash> is the I<time>", 1, 40);
91             }
92              
93             1;