App-Nag
view release on metacpan or search on metacpan
configure_requires:
ExtUtils::MakeMaker: 6.31
dynamic_config: 0
generated_by: 'Dist::Zilla version 4.200004, CPAN::Meta::Converter version 2.110420'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
version: 1.4
name: App-Nag
requires:
DateTime: 0
DateTime::TimeZone: 0
File::Temp: 0
Getopt::Long::Descriptive: 0
Gtk2: 0
Gtk2::Notify: 0
Modern::Perl: 0
constant: 0
version: 0.002
Makefile.PL view on Meta::CPAN
'ExtUtils::MakeMaker' => '6.31'
},
'DISTNAME' => 'App-Nag',
'EXE_FILES' => [
'bin/nag',
'bin/nag'
],
'LICENSE' => 'perl',
'NAME' => 'App::Nag',
'PREREQ_PM' => {
'DateTime' => '0',
'DateTime::TimeZone' => '0',
'File::Temp' => '0',
'Getopt::Long::Descriptive' => '0',
'Gtk2' => '0',
'Gtk2::Notify' => '0',
'Modern::Perl' => '0',
'constant' => '0'
},
'VERSION' => '0.002',
'test' => {
'TESTS' => 't/*.t'
lib/App/Nag.pm view on Meta::CPAN
}
)
}
}
return ( $opt, $usage, $name );
}
sub validate_time {
my ( undef, $opt, $usage, $time, @args ) = @_;
require DateTime;
require DateTime::TimeZone;
# parse time
$usage->die(
{
pre_text => "ERROR: could not understand time expression: $time\n\n"
}
) unless my %props = _parse_time($time);
my $tz = DateTime::TimeZone->new( name => 'local' );
my $now = DateTime->now( time_zone => $tz );
my $then = $now->clone;
if ( $props{unit} ) {
my $unit = $props{unit};
given ($unit) {
when ('h') { $unit = 'hours' }
when ('m') { $unit = 'minutes' }
when ('s') { $unit = 'seconds' }
}
$then->add( $unit => $props{time} );
t/arg_validation.t view on Meta::CPAN
#!/usr/bin/perl
use Modern::Perl;
use App::Nag;
use DateTime;
use DateTime::TimeZone;
use Test::More;
use Test::Fatal;
# this all could be cleaned up a bit
my (
$opt, $usage, $name, $verbosity, $text,
$synopsis, $seconds, $time, $true_seconds
);
t/arg_validation.t view on Meta::CPAN
subtest '1H delta' => sub {
@ARGV = qw(--slap 1H this is the text);
( $opt, $usage, $name ) = App::Nag->validate_args;
( $verbosity, $text, $synopsis, $seconds ) =
App::Nag->validate_time( $opt, $usage, @ARGV );
ok( $verbosity == 3, 'right verbosity --slap' );
ok( $seconds == 60 * 60, '1h' );
};
my $tz = DateTime::TimeZone->new( name => 'local' );
subtest '10am' => sub {
$time = '10am';
$true_seconds = get_time( 10, 0, 'am' );
@ARGV = ( $time, qw(this is the text) );
( $opt, $usage, $name ) = App::Nag->validate_args;
( $verbosity, $text, $synopsis, $seconds ) =
App::Nag->validate_time( $opt, $usage, @ARGV );
ok( $seconds == $true_seconds, "time: $time" );
};
t/arg_validation.t view on Meta::CPAN
undef,
"can't parse 24pm"
);
};
done_testing();
# construct a test time
sub get_time {
my ( $hours, $minutes, $suffix ) = @_;
my $now = DateTime->now( time_zone => $tz );
my $then = $now->clone->set(
hour => $hours,
minute => $minutes,
second => 0
);
if ( $hours < 13 ) {
$then->add( hours => 12 ) while $then < $now;
given ( $suffix || '' ) {
when ('am') { $then->add( hours => 12 ) if $then->hour >= 12 }
when ('pm') { $then->add( hours => 12 ) if $then->hour < 12 }
( run in 0.450 second using v1.01-cache-2.11-cpan-2b0bae70ee8 )