—use
strict;
use
warnings;
package
MetaCPAN::Client::Distribution;
# ABSTRACT: A Distribution data object
$MetaCPAN::Client::Distribution::VERSION
=
'2.004000'
;
# TRIAL
use
Moo;
my
%known_fields
= (
scalar
=> [
qw< name >
],
arrayref
=> [],
hashref
=> [
qw< bugs river >
]
);
my
%__known_fields_ex
= (
map
{
my
$k
=
$_
;
$k
=> +{
map
{
$_
=> 1 } @{
$known_fields
{
$k
} } } }
keys
%known_fields
);
my
@known_fields
=
map
{ @{
$known_fields
{
$_
} } }
keys
%known_fields
;
foreach
my
$field
(
@known_fields
) {
has
$field
=> (
is
=>
'ro'
,
lazy
=> 1,
default
=>
sub
{
my
$self
=
shift
;
return
(
exists
$self
->data->{
$field
} ?
$self
->data->{
$field
} :
exists
$__known_fields_ex
{hashref}{
$field
} ? {} :
exists
$__known_fields_ex
{arrayref}{
$field
} ? [] :
exists
$__known_fields_ex
{
scalar
}{
$field
} ?
''
:
undef
);
},
);
}
sub
_known_fields {
return
\
%known_fields
}
sub
rt {
$_
[0]->bugs->{rt} || {} }
sub
github {
$_
[0]->bugs->{github} || {} }
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
MetaCPAN::Client::Distribution - A Distribution data object
=head1 VERSION
version 2.004000
=head1 SYNOPSIS
my $dist = $mcpan->distribution('MetaCPAN-Client');
=head1 DESCRIPTION
A MetaCPAN distribution entity object.
=head1 ATTRIBUTES
=head2 name
=head2 bugs
Hash-Ref.
=head2 river
Hash-Ref.
=head1 METHODS
=head2 rt
Returns 'bugs.rt' hash ref (defaults to {}).
=head2 github
Returns 'bugs.github' hash ref (defaults to {}).
=head1 AUTHORS
=over 4
=item *
Sawyer X <xsawyerx@cpan.org>
=item *
Mickey Nasriachi <mickey@cpan.org>
=back
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2016 by Sawyer X.
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