annotate cpt_psm_plotter/lib/CPT/Writer.pm @ 0:54c7a3ea81e2 draft

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