| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
|
|
|
|
|
|
use Moose::Role; |
|
2
|
4
|
|
|
4
|
|
3416
|
use Template; |
|
|
4
|
|
|
|
|
13639
|
|
|
|
4
|
|
|
|
|
23
|
|
|
3
|
4
|
|
|
4
|
|
19122
|
use utf8; |
|
|
4
|
|
|
|
|
35
|
|
|
|
4
|
|
|
|
|
102
|
|
|
4
|
4
|
|
|
4
|
|
1717
|
|
|
|
4
|
|
|
|
|
44
|
|
|
|
4
|
|
|
|
|
30
|
|
|
5
|
|
|
|
|
|
|
requires 'DELIMITER'; |
|
6
|
|
|
|
|
|
|
|
|
7
|
|
|
|
|
|
|
has file => ( |
|
8
|
|
|
|
|
|
|
is => 'rw', |
|
9
|
|
|
|
|
|
|
isa => 'Str', |
|
10
|
|
|
|
|
|
|
); |
|
11
|
|
|
|
|
|
|
|
|
12
|
|
|
|
|
|
|
has path => ( |
|
13
|
|
|
|
|
|
|
is => 'rw', |
|
14
|
|
|
|
|
|
|
isa => 'Str', |
|
15
|
|
|
|
|
|
|
); |
|
16
|
|
|
|
|
|
|
|
|
17
|
|
|
|
|
|
|
|
|
18
|
|
|
|
|
|
|
|
|
19
|
|
|
|
|
|
|
my $self = shift; |
|
20
|
|
|
|
|
|
|
my $args = shift || []; |
|
21
|
21
|
|
|
21
|
|
39
|
my $data = shift; |
|
22
|
21
|
|
50
|
|
|
73
|
|
|
23
|
21
|
|
|
|
|
36
|
my $file; |
|
24
|
|
|
|
|
|
|
if ($self->path()) { |
|
25
|
21
|
|
|
|
|
29
|
my $pattern = $self->path(); |
|
26
|
21
|
50
|
50
|
|
|
592
|
$self->log()->debug('Process template ' . $pattern); |
|
|
|
100
|
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
27
|
0
|
|
|
|
|
0
|
Template->new({})->process( \$pattern, { ARGS => $args, DATA => $data }, \$file) || die "Error processing file template."; |
|
28
|
0
|
|
|
|
|
0
|
# yes we allow paths here |
|
29
|
0
|
0
|
|
|
|
0
|
$file =~ s/[^\s\w\.\-\/\\]//g; |
|
30
|
|
|
|
|
|
|
} elsif ($self->file()) { |
|
31
|
0
|
|
|
|
|
0
|
my $pattern = $self->file(); |
|
32
|
|
|
|
|
|
|
$self->log()->debug('Process template ' . $pattern); |
|
33
|
19
|
|
|
|
|
414
|
Template->new({})->process( \$pattern, { ARGS => $args, DATA => $data }, \$file) || die "Error processing argument template."; |
|
34
|
19
|
|
|
|
|
341
|
if ($file =~ m{[^\s\w\.\-]}) { |
|
35
|
19
|
50
|
|
|
|
236
|
$self->log()->error('Target file name contains disallowed characters! Consider using path instead.'); |
|
36
|
19
|
50
|
|
|
|
129467
|
die "Target file name contains disallowed seperator! Consider using path instead."; |
|
37
|
0
|
|
|
|
|
0
|
} |
|
38
|
0
|
|
|
|
|
0
|
} elsif (ref $args && scalar @{$args}) { |
|
39
|
|
|
|
|
|
|
$file = join $self->DELIMITER(), @{$args}; |
|
40
|
2
|
|
|
|
|
5
|
} |
|
41
|
2
|
|
|
|
|
38
|
|
|
|
2
|
|
|
|
|
7
|
|
|
42
|
|
|
|
|
|
|
return $file; |
|
43
|
|
|
|
|
|
|
} |
|
44
|
21
|
|
|
|
|
732
|
|
|
45
|
|
|
|
|
|
|
1; |
|
46
|
|
|
|
|
|
|
|
|
47
|
|
|
|
|
|
|
|
|
48
|
|
|
|
|
|
|
|
|
49
|
|
|
|
|
|
|
=head1 Connector::Role::LocalPath |
|
50
|
|
|
|
|
|
|
|
|
51
|
|
|
|
|
|
|
This role is used to generate file or pathnames from a template string |
|
52
|
|
|
|
|
|
|
and the path arguments given. It also accepts additional data as a hash. |
|
53
|
|
|
|
|
|
|
|
|
54
|
|
|
|
|
|
|
=head2 Parameters |
|
55
|
|
|
|
|
|
|
|
|
56
|
|
|
|
|
|
|
=over |
|
57
|
|
|
|
|
|
|
|
|
58
|
|
|
|
|
|
|
=item file |
|
59
|
|
|
|
|
|
|
|
|
60
|
|
|
|
|
|
|
A template toolkit string to generate the filename to write to. The |
|
61
|
|
|
|
|
|
|
arguments given as connector location are available in I<ARGS>, the |
|
62
|
|
|
|
|
|
|
payload data in I<DATA>. The class will die if the result contains |
|
63
|
|
|
|
|
|
|
any other characters than word, whitespace, dash or dot. |
|
64
|
|
|
|
|
|
|
|
|
65
|
|
|
|
|
|
|
=item path |
|
66
|
|
|
|
|
|
|
|
|
67
|
|
|
|
|
|
|
Similar to file with slash and backslash also allowed. Disallowed |
|
68
|
|
|
|
|
|
|
characters will be removed and the sanitized string is returned. |
|
69
|
|
|
|
|
|
|
|
|
70
|
|
|
|
|
|
|
=back |