use strict;
use warnings;
package MetaCPAN::Client::Types;
# ABSTRACT: type checking helper class
$MetaCPAN::Client::Types::VERSION = '2.038000';
use Type::Tiny      ();
use Types::Standard ();
use Ref::Util qw< is_ref >;

use parent 'Exporter';
our @EXPORT_OK = qw< Str Int Time ArrayRef HashRef Bool >;

sub Str      { Types::Standard::Str      }
sub Int      { Types::Standard::Int      }
sub ArrayRef { Types::Standard::ArrayRef }
sub HashRef  { Types::Standard::HashRef  }
sub Bool     { Types::Standard::Bool     }

sub Time {
    return Type::Tiny->new(
        name       => "Time",
        constraint => sub { !is_ref($_) and /^[1-9][0-9]*(?:s|m|h)$/ },
        message    => sub { "$_ is not in time format (e.g. '5m')" },
    );
}

1;

__END__

=pod

=encoding UTF-8

=head1 NAME

MetaCPAN::Client::Types - type checking helper class

=head1 VERSION

version 2.038000

=head1 METHODS

=head2 ArrayRef

=head2 Bool

=head2 HashRef

=head2 Int

=head2 Str

=head2 Time

=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
