File Coverage

blib/lib/Acme/Matrix.pm
Criterion Covered Total %
statement 15 40 37.5
branch 0 8 0.0
condition 0 4 0.0
subroutine 5 7 71.4
pod 0 2 0.0
total 20 61 32.7


line stmt bran cond sub pod time code
1             package Acme::Matrix;
2             our $VERSION = '0.02';
3 1     1   68990 use 5.006; use strict; use warnings;
  1     1   3  
  1     1   5  
  1         3  
  1         33  
  1         6  
  1         2  
  1         65  
4 1     1   523 use Term::ReadKey;
  1         2126  
  1         387  
5              
6             our (@WORDS, @CHARS, @COLOURS);
7             BEGIN {
8 1     1   33 $SIG{INT} = \&shutdown;
9 1         39 @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         21 @CHARS = qw/
42             あ い う え お か き く け こ さ し す せ そ た ち つ て と
43             な に ぬ ね の は ひ ふ へ ほ ま み む め も ら り る れ ろ
44             ア イ ウ エ オ カ キ ク ケ コ ガ ギ グ ゲ ゴ サ シ ス セ ソ
45             ザ ジ ズ ゼ ゾ タ チ ツ テ ト ダ ヂ ヅ デ ド ナ ニ ヌ ネ ノ
46             ハ ヒ フ ヘ ホ バ ビ ブ ベ ボ パ ピ プ ペ ポ マ ミ ム メ モ
47             /;
48 1         454 @COLOURS = ( 28, 34, 35, 40, 41, 46, 47, 48, 48, 82, 83, 0 );
49             }
50              
51              
52             sub start {
53 0     0 0   my ($pkg, %args) = @_;
54 0 0         @WORDS = @{$args{words}} if ($args{words});
  0            
55 0 0         @CHARS = @{$args{chars}} if ($args{chars});
  0            
56 0           my ($wchar, $hchar) = GetTerminalSize();
57 0   0       $wchar = $wchar * ($args{offset} || 0.49);
58             my %word_lines = (
59 0           map { $_ => [] } 0 .. $wchar
  0            
60             );
61 0           print "\033[1J";
62 0           print "\033[48;5;232m";
63 0           while (1) {
64 0           for (0..$wchar) {
65 0 0         if (int(rand(5) + 0.5) > 4) {
66 0           my $i = 0;
67 0           push @{$word_lines{$_}}, (int(rand(1) + 0.5))
68             ? sprintf("\033[38;5;%sm%s", $COLOURS[int(rand(scalar @COLOURS))], $CHARS[int(rand(scalar @CHARS))])
69 0 0         : map { sprintf("\033[38;5;%sm%s", $COLOURS[$i++], $_) } @{ $WORDS[int(rand(scalar @WORDS))] }, " ";
  0            
  0            
70             }
71 0   0       print shift(@{$word_lines{$_}}) || " ";
72             }
73 0           print "\n";
74 0           select(undef, undef, undef, 0.01);
75             }
76             }
77              
78             sub shutdown {
79 0     0 0   print "\033[0m";
80 0           print "\033c";
81 0           exit;
82             }
83              
84             __END__