annotate cpt_psm_prep/lib/CPT/Writer.pm @ 0:e4de0a0e90c8 draft

Uploaded
author cpt
date Tue, 05 Jul 2022 05:38:34 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
1 package CPT::Writer;
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
2 use Moose::Role;
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
3 use strict;
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
4 use warnings;
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
5 use autodie;
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
6
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
7 requires 'process';
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
8 requires 'suffix';
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
9
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
10 # One or the other of these will be set. *ought* to be in accordance w/ galaxy_override
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
11 has 'OutputFilesClass' => ( is => 'rw' );
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
12
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
13 # This parameter specifies that we should behave according to galaxy_override spec.
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
14 has 'galaxy_override' => ( is => 'rw', isa => 'Bool' );
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
15 has 'title' => ( is => 'rw', isa => 'Str' );
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
16 has 'author' => ( is => 'rw', isa => 'Str' );
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
17 has 'data' => ( is => 'rw' );
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
18 has 'processed_data' => ( is => 'rw' );
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
19 has 'processing_complete' => ( is => 'rw', isa => 'Bool' );
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
20 # What file names were generated during the writing process
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
21 has 'used_filenames' => ( is => 'rw', isa => 'ArrayRef', default => sub { [] });
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
22 # An optional, hinted at name. Otherwise we'll generate one.
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
23 has 'name' => ( is => 'rw', isa => 'Str' );
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
24
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
25 sub write {
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
26 my ($self) = @_;
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
27 if ( $self->processing_complete ) {
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
28 $self->OutputFilesClass->extension( $self->suffix() );
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
29 my $next_output_file = $self->OutputFilesClass->get_next_file();
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
30 # Store the name of the file we used
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
31 push(@{$self->used_filenames()}, $next_output_file);
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
32 # Write data out
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
33 open(my $outfile, '>', $next_output_file );
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
34 print $outfile $self->processed_data; # given that processed_data is a string...
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
35 close($outfile);
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
36 }
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
37 else {
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
38 warn "Write called but processing was not marked as complete. Not writing";
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
39 }
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
40 }
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
41
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
42 sub get_name {
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
43 my ($self) = @_;
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
44 #return $self->OutputFilesClass->get_next_file();
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
45 return $self->OutputFilesClass->_get_filename();
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
46 }
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
47
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
48 sub process_data {
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
49 my ($self) = @_;
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
50 if (!defined $self->data ) {
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
51 #confess "No data to process.";
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
52 }
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
53 $self->process();
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
54 }
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
55
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
56 no Moose::Role;
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
57 1;
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
58
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
59 __END__
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
60
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
61 =pod
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
62
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
63 =encoding UTF-8
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
64
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
65 =head1 NAME
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
66
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
67 CPT::Writer
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
68
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
69 =head1 VERSION
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
70
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
71 version 1.99.4
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
72
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
73 =head1 AUTHOR
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
74
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
75 Eric Rasche <rasche.eric@yandex.ru>
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
76
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
77 =head1 COPYRIGHT AND LICENSE
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
78
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
79 This software is Copyright (c) 2014 by Eric Rasche.
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
80
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
81 This is free software, licensed under:
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
82
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
83 The GNU General Public License, Version 3, June 2007
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
84
e4de0a0e90c8 Uploaded
cpt
parents:
diff changeset
85 =cut