File: Utils.pm

package info (click to toggle)
libnet-amazon-s3-perl 0.991-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,620 kB
  • sloc: perl: 9,906; makefile: 20
file content (92 lines) | stat: -rw-r--r-- 2,136 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package Net::Amazon::S3::Utils;
# ABSTRACT: misc utils
$Net::Amazon::S3::Utils::VERSION = '0.991';
sub parse_arguments {
	my ($self, $arguments, $positional, $aliases) = @_;
	my %args;
	$aliases = {} unless $aliases;

	push @$arguments, %{ pop @$arguments }
		if @$arguments && Ref::Util::is_plain_hashref ($arguments->[-1]);

	my %positional = map +($_ => 1), grep ! exists $args{$_}, @$positional;
	my $positional_count = scalar keys %positional;
	while (@$arguments > 1 && @$arguments > $positional_count) {
		my ($name, $value) = splice @$arguments, -2, 2;

		next if exists $args{$name};

		$args{$name} = $value;

		$name = $aliases->{$name} if exists $aliases->{$name};

		if (exists $positional{$name}) {
			$positional_count--;
			delete $positional{$name};
		}
	}

	#die "Odd number of named arguments"
	#	if @$arguments != $positional_count;

	for my $key (keys %$aliases) {
		next unless exists $args{$key};
		my $value = delete $args{$key};
		my $alias_for = $aliases->{$key};
		$args{$alias_for} = $value unless exists $args{$alias_for};
	}

	for my $name (@$positional) {
		next if exists $args{$name};
		$args{$name} = shift @$arguments;
	}

	return %args;
}

sub parse_arguments_with_bucket {
	my ($self, $arguments) = @_;

	return $self->parse_arguments ($arguments, [qw[ bucket ]], { name => 'bucket' });
}

sub parse_arguments_with_bucket_and_object {
	my ($self, $arguments) = @_;

	return $self->parse_arguments ($arguments, [qw[ bucket key ]], { name => 'bucket' });
}

sub parse_arguments_with_object {
	my ($self, $arguments) = @_;

	return $self->parse_arguments ($arguments, [qw[ key ]], { name => 'bucket' });
}

1;

__END__

=pod

=encoding UTF-8

=head1 NAME

Net::Amazon::S3::Utils - misc utils

=head1 VERSION

version 0.991

=head1 AUTHOR

Branislav ZahradnĂ­k <barney@cpan.org>

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2022 by Amazon Digital Services, Leon Brocard, Brad Fitzpatrick, Pedro Figueiredo, Rusty Conover, Branislav ZahradnĂ­k.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut