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