"Fossies" - the Fresh Open Source Software Archive 
Member "RT-Extension-Assets-1.05/inc/Module/Install/ReadmeFromPod.pm" (6 May 2015, 3273 Bytes) of package /linux/misc/RT-Extension-Assets-1.05.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Perl source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
For more information about "ReadmeFromPod.pm" see the
Fossies "Dox" file reference documentation.
1 #line 1
2 package Module::Install::ReadmeFromPod;
3
4 use 5.006;
5 use strict;
6 use warnings;
7 use base qw(Module::Install::Base);
8 use vars qw($VERSION);
9
10 $VERSION = '0.22';
11
12 sub readme_from {
13 my $self = shift;
14 return unless $self->is_admin;
15
16 # Input file
17 my $in_file = shift || $self->_all_from
18 or die "Can't determine file to make readme_from";
19
20 # Get optional arguments
21 my ($clean, $format, $out_file, $options);
22 my $args = shift;
23 if ( ref $args ) {
24 # Arguments are in a hashref
25 if ( ref($args) ne 'HASH' ) {
26 die "Expected a hashref but got a ".ref($args)."\n";
27 } else {
28 $clean = $args->{'clean'};
29 $format = $args->{'format'};
30 $out_file = $args->{'output_file'};
31 $options = $args->{'options'};
32 }
33 } else {
34 # Arguments are in a list
35 $clean = $args;
36 $format = shift;
37 $out_file = shift;
38 $options = \@_;
39 }
40
41 # Default values;
42 $clean ||= 0;
43 $format ||= 'txt';
44
45 # Generate README
46 print "readme_from $in_file to $format\n";
47 if ($format =~ m/te?xt/) {
48 $out_file = $self->_readme_txt($in_file, $out_file, $options);
49 } elsif ($format =~ m/html?/) {
50 $out_file = $self->_readme_htm($in_file, $out_file, $options);
51 } elsif ($format eq 'man') {
52 $out_file = $self->_readme_man($in_file, $out_file, $options);
53 } elsif ($format eq 'pdf') {
54 $out_file = $self->_readme_pdf($in_file, $out_file, $options);
55 }
56
57 if ($clean) {
58 $self->clean_files($out_file);
59 }
60
61 return 1;
62 }
63
64
65 sub _readme_txt {
66 my ($self, $in_file, $out_file, $options) = @_;
67 $out_file ||= 'README';
68 require Pod::Text;
69 my $parser = Pod::Text->new( @$options );
70 open my $out_fh, '>', $out_file or die "Could not write file $out_file:\n$!\n";
71 $parser->output_fh( *$out_fh );
72 $parser->parse_file( $in_file );
73 close $out_fh;
74 return $out_file;
75 }
76
77
78 sub _readme_htm {
79 my ($self, $in_file, $out_file, $options) = @_;
80 $out_file ||= 'README.htm';
81 require Pod::Html;
82 Pod::Html::pod2html(
83 "--infile=$in_file",
84 "--outfile=$out_file",
85 @$options,
86 );
87 # Remove temporary files if needed
88 for my $file ('pod2htmd.tmp', 'pod2htmi.tmp') {
89 if (-e $file) {
90 unlink $file or warn "Warning: Could not remove file '$file'.\n$!\n";
91 }
92 }
93 return $out_file;
94 }
95
96
97 sub _readme_man {
98 my ($self, $in_file, $out_file, $options) = @_;
99 $out_file ||= 'README.1';
100 require Pod::Man;
101 my $parser = Pod::Man->new( @$options );
102 $parser->parse_from_file($in_file, $out_file);
103 return $out_file;
104 }
105
106
107 sub _readme_pdf {
108 my ($self, $in_file, $out_file, $options) = @_;
109 $out_file ||= 'README.pdf';
110 eval { require App::pod2pdf; }
111 or die "Could not generate $out_file because pod2pdf could not be found\n";
112 my $parser = App::pod2pdf->new( @$options );
113 $parser->parse_from_file($in_file);
114 open my $out_fh, '>', $out_file or die "Could not write file $out_file:\n$!\n";
115 select $out_fh;
116 $parser->output;
117 select STDOUT;
118 close $out_fh;
119 return $out_file;
120 }
121
122
123 sub _all_from {
124 my $self = shift;
125 return unless $self->admin->{extensions};
126 my ($metadata) = grep {
127 ref($_) eq 'Module::Install::Metadata';
128 } @{$self->admin->{extensions}};
129 return unless $metadata;
130 return $metadata->{values}{all_from} || '';
131 }
132
133 'Readme!';
134
135 __END__
136
137 #line 254
138