File Coverage

blib/lib/Acme/Honkidasu.pm
Criterion Covered Total %
statement 38 38 100.0
branch 9 10 90.0
condition n/a
subroutine 11 11 100.0
pod 0 1 0.0
total 58 60 96.6


line stmt bran cond sub pod time code
1 3     3   49004 use strict;
  3         8  
  3         81  
2 3     3   16 use warnings;
  3         6  
  3         104  
3              
4             package Acme::Honkidasu;
5 3     3   650 use utf8;
  3         19  
  3         15  
6             our $VERSION = '0.02';
7              
8 3     3   1663 use Time::Piece ();
  3         29978  
  3         524  
9              
10             our $LIST_HONKIDASU = [qw/
11             初っ端から飛ばすと後でばてる。来月から本気を出す。
12             まだまだ寒い。これではやる気が出ない。来月から本気出す。
13             年度の終わりでタイミングが悪い。来月から本気を出す。
14             季節の変わり目は体調を崩しやすい。来月から本気を出す。
15             区切りの良い4月を逃してしまった。来月から本気を出す。
16             梅雨で気分が落ち込む。梅雨明けの来月から本気を出す。
17             これからどんどん気温が上昇していく。体力温存の為来月から本気を出す。
18             暑すぎて気力がそがれる。来月から本気を出す。
19             休みボケが抜けない。無理しても効果が無いので来月から本気を出す。
20             中途半端な時期。ここは雌伏の時。来月から本気を出す。
21             急に冷えてきた。こういう時こそ無理は禁物。来月から本気を出す。
22             もう今年は終わり。今年はチャンスが無かった。来年から本気出す。
23             /];
24             our $LIST_HONKIDASU_POSITIVE = [qw/
25             年の初めだしスタートダッシュで本気出す
26             2月は短いから無駄にしないために本気出す
27             年度の変わり目だから最後の追い込みで本気出す
28             春は心機一転新しい環境に早く慣れるために本気出す
29             落ち込みやすい時期だから油断しないためにも本気出す
30             今は梅雨時期だからこそ他の人に差をつけるために本気出す
31             カラっといい天気で活力がみなぎるからこそ今まで以上に本気出す
32             暑さで気がたるみがちだけど折角盆休みがある今だからこそ本気出す
33             気温も落ち着いて活動しやすい時期になってきたしこれから先も本気出す
34             寒くなる年末がくる前に面倒なことは片付けておきたいと思うから本気出す
35             冷えてきたけど余裕のある年末をこれから迎えるために今の内から本気出す
36             今年の締めだからこそ最後まで気を抜かずに今年を1年にするために本気出す
37             /];
38              
39             our $DETERMINE = sub {
40             my $time = shift;
41             my $list = shift;
42             my $idx = ( $time->mon % scalar(@$list) ) - 1;
43             chomp( my $msg = $list->[$idx] );
44             return $msg;
45             };
46              
47 3     3   35 sub import { shift; @_ = ('Time::Piece', @_); goto &Time::Piece::import }
  3         11  
  3         16  
48              
49              
50             package Time::Piece;
51 3     3   1499 use POSIX::strftime::GNU;
  3         22813  
  3         17  
52              
53             BEGIN {
54 3     3   139 no strict 'refs';
  3         7  
  3         93  
55 3     3   15 no warnings "redefine";
  3         4  
  3         600  
56 3     3   14 my $orig_time_piece_strftime = \&Time::Piece::strftime;
57 3         249 *{'Time::Piece::strftime'} = sub {
58 72     72   177 my ($self, $format) = @_;
59 72 50       306 $format =~ s/%%/%%%%/g if ($format);;
60 72         206 my $str = POSIX::strftime( $format, CORE::localtime $self->epoch );
61 72 100       4748 $str =~ s/((%*)%(\(|\)))/(length($2) % 2) ? $1 : $2 . $self->honkidasu( ($3 eq ')') ? 1 : 0 )/ge;
  84 100       504  
62 72         247 $str =~ s/%%/%/g;
63 72         291 return $str;
64 3         14 };
65             }
66              
67             sub honkidasu {
68 109     109 0 16290 my $self = shift;
69 109         166 my $positive = shift;
70 109 100       215 my $list
71             = ($positive)
72             ? $Acme::Honkidasu::LIST_HONKIDASU_POSITIVE
73             : $Acme::Honkidasu::LIST_HONKIDASU;
74 109 100       302 return (@$list) ? $Acme::Honkidasu::DETERMINE->( $self, $list ) : '';
75             }
76              
77             1;
78             __END__