File Coverage

blib/lib/Acme/Matrix.pm
Criterion Covered Total %
statement 14 38 36.8
branch 0 8 0.0
condition 0 4 0.0
subroutine 5 7 71.4
pod 0 2 0.0
total 19 59 32.2


line stmt bran cond sub pod time code
1             package Acme::Matrix;
2             our $VERSION = '0.01';
3 1     1   66623 use 5.006; use strict; use warnings;
  1     1   5  
  1     1   5  
  1         2  
  1         33  
  1         5  
  1         2  
  1         29  
4 1     1   489 use Term::ReadKey;
  1         2069  
  1         374  
5              
6             our (@WORDS, @CHARS);
7             BEGIN {
8 1     1   33 $SIG{INT} = \&shutdown;
9 1         34 @WORDS = (
10             [qw/し ゅ く う ん/],
11             [qw/不 正 直/],
12             [qw/き い っ ぽ ん/],
13             [qw/憎 し み を 抱 く/],
14             [qw/だ ら く ふ は い/],
15             [qw/ふ と ど き/],
16             [qw/は ち ゃ め ち ゃ/],
17             [qw/た い ぎ ゃ く ひ ど う/],
18             [qw/ラ ッ キ ー/],
19             [qw/し り が お も い/],
20             [qw/リ ス ペ ク ト/],
21             [qw/ム ー ン/],
22             [qw/に っ て ん/],
23             [qw/か み の み こ と/],
24             [qw/と く し ょ く/],
25             [qw/ス キ ャ ン ダ ラ ス/],
26             [qw/ぜ に か ね/],
27             [qw/エ ク ス プ ロ イ テ ー シ ョ ン/],
28             [qw/た く さ ん/],
29             [qw/マ イ ン ド/],
30             [qw/味 が 分 か る/],
31             [qw/に お い が す る/],
32             [qw/感 じ て/],
33             [qw/リ ッ ス ン/],
34             [qw/風 に た な び く/],
35             [qw/シ ー ク レ ッ ト/],
36             [qw/こ う ざ か か り/],
37             [qw/じ つ ご と/],
38             [qw/シ ー カ ー/],
39             [qw/イ マ ジ ネ ー シ ョ ン/]
40             );
41 1         365 @CHARS = qw/
42             あ い う え お か き く け こ さ し す せ そ た ち つ て と
43             な に ぬ ね の は ひ ふ へ ほ ま み む め も ら り る れ ろ
44             ア イ ウ エ オ カ キ ク ケ コ ガ ギ グ ゲ ゴ サ シ ス セ ソ
45             ザ ジ ズ ゼ ゾ タ チ ツ テ ト ダ ヂ ヅ デ ド ナ ニ ヌ ネ ノ
46             ハ ヒ フ ヘ ホ バ ビ ブ ベ ボ パ ピ プ ペ ポ マ ミ ム メ モ
47             /;
48             }
49              
50             sub start {
51 0     0 0   my ($pkg, %args) = @_;
52 0 0         @WORDS = @{$args{words}} if ($args{words});
  0            
53 0 0         @CHARS = @{$args{chars}} if ($args{chars});
  0            
54 0           my ($wchar, $hchar) = GetTerminalSize();
55 0   0       $wchar = $wchar * ($args{offset} || 0.49);
56             my %word_lines = (
57 0           map { $_ => [] } 0 .. $wchar
  0            
58             );
59 0           print "\033[1J";
60 0           print "\033[48;5;232m";
61 0           while (1) {
62 0           for (0..$wchar) {
63 0 0         if (int(rand(5) + 0.5) > 4) {
64 0           push @{$word_lines{$_}}, (int(rand(1) + 0.5))
65             ? "\033[38;5;34m" . $CHARS[int(rand(scalar @CHARS))]
66 0 0         : map { "\033[38;5;46m" . $_ } @{ $WORDS[int(rand(scalar @WORDS))] };
  0            
  0            
67             }
68 0   0       print shift(@{$word_lines{$_}}) || " ";
69             }
70 0           print "\n";
71 0           select(undef, undef, undef, 0.01);
72             }
73             }
74              
75             sub shutdown {
76 0     0 0   print "\033[0m";
77 0           print "\033c";
78 0           exit;
79             }
80              
81             =head1 NAME
82              
83             Acme::Matrix - Heavenly digital rain
84              
85             =head1 VERSION
86              
87             Version 0.01
88              
89             =cut
90              
91             =head1 SYNOPSIS
92              
93             Quick summary of what the module does.
94              
95             Perhaps a little code snippet.
96              
97             use Acme::Matrix;
98              
99             Acme::Matrix->start();
100              
101             ...
102              
103             タ くと うの い う ん不 ー さ グ ャ ッり ゃ ら イ ネ ソ
104             ふ かデみ っ あ マ し 正 し ん ン スが く く マ
105             は オぜリ み こえぽ そ イ シ り じ 直 り ダ ンお ひ ふ ジじ
106             りい にスじの と ん スン ー がた つ ム が も ラ ね も どムは ネつ
107             デ マかペつみ オ キド ク おい ご ー お ムし ス ザい うーい バーごる
108             イねクごこモ オ ャ レ もぎ と ン も ふーゅ ね て ンす シと 風
109             た コ ンリトとと ン ッ いゃ た い とンく リ 味 る ョと リ に
110             く シドス ホ ふダ ト く シく ぜ ど う ス ヌが は ンく ッ た
111             さ ー ペ も しととラ ひ ーさ シに き ん ペ 分 じ ダし スさ な
112             ん リ カ クボ りくどス だ ど カん ーか た ク バか つ ょリン び
113             ッ ー ト がしき ら う ー クね く ト ネ の る ご くス く
114             ス く シ ま おょ く マ て レプ さ に と イ ベペ た
115             ン え カー もく ふ イ風 にッガ んチ お にマ ク く
116             に イち ク いシ シ は ンに おト モ セツ い メ ジ ト さ
117             お し か マ ムレ ー ー い ドた い マ ス がら 憎 ネ ん
118             い ゅ みなジ ーッ ちヘカ カ 憎 えな が イ 風 キ す し ー マ
119             が く の ネ ント ー ー し び す ン に ャ る み シ ビ イ
120             す う み ー し る カか み味 くた る ド たつン を ョ い ン
121             る ん こ シ ゅ み ム をが い め な ダ ビ 抱 ン フ ド
122              
123             Because of the bottom up nature It's difficult to actually make it rain inside a terminal efficiently. Thus my rain is heavenly.
124              
125             =head1 AUTHOR
126              
127             LNATION, C<< >>
128              
129             =head1 BUGS
130              
131             Please report any bugs or feature requests to C, or through
132             the web interface at L. I will be notified, and then you'll
133             automatically be notified of progress on your bug as I make changes.
134              
135             =head1 SUPPORT
136              
137             You can find documentation for this module with the perldoc command.
138              
139             perldoc Acme::Matrix
140              
141             You can also look for information at:
142              
143             =over 4
144              
145             =item * RT: CPAN's request tracker (report bugs here)
146              
147             L
148              
149             =item * CPAN Ratings
150              
151             L
152              
153             =item * Search CPAN
154              
155             L
156              
157             =back
158              
159             =head1 ACKNOWLEDGEMENTS
160              
161             =head1 LICENSE AND COPYRIGHT
162              
163             This software is Copyright (c) 2023 by LNATION.
164              
165             This is free software, licensed under:
166              
167             The Artistic License 2.0 (GPL Compatible)
168              
169             =cut
170              
171             1; # End of Acme::Matrix