File Coverage

blib/lib/Acme/BOPE.pm
Criterion Covered Total %
statement 53 69 76.8
branch 0 2 0.0
condition n/a
subroutine 4 6 66.6
pod 0 3 0.0
total 57 80 71.2


line stmt bran cond sub pod time code
1             package Acme::BOPE;
2              
3             require 5.005_62;
4             #use strict;
5             #use warnings;
6              
7             our $VERSION = 0.01;
8              
9             #use Exporter;
10             #
11             #our @ISA = qw(Exporter);
12             #our @EXPORT = qw(canta_hino fato);
13              
14             my @ignoradas = (
15             "[dn]?[oa][s]?" , # o, a, os, as, dos, nos, das, nas, no, na, do, da
16             "[nd]?e(?:ss|l)[ae]s?", # ele, ela, dele, dela, desse, dessa nesse, nessa
17             "s(?:eu|ua)s?" , # seu, sua
18             "(?:uma?|eu)" , # uma, eu
19             "com" ,
20             "sem" ,
21             "porra[?!]*" ,
22             "merda[?!]*" ,
23             "viado[?!]*" ,
24             );
25              
26             #my $ignoradas = join "|", @ignoradas;
27              
28 1     1   50475 use Filter::Simple;
  1         548039  
  1         8  
29              
30             FILTER_ONLY
31             all => sub {
32             my $package = shift;
33             my %par = @_;
34            
35             if ( $par{'DEBUG'} ) {
36             filter($_);
37             Perl::Tidy::perltidy(source => \$_, destination => \$_)
38             if eval "require Perl::Tidy";
39             print;
40             }
41             # my $DEBUG = $par{DEBUG} if $par{DEBUG};
42             # return unless $DEBUG;
43             # filter($_);
44             # Perl::Tidy::perltidy(source => \$_, destination => \$_)
45             # if eval "require Perl::Tidy";
46             # print if $DEBUG;
47             # exit;
48             },
49             code_no_comments => \&filter;
50             sub filter {
51              
52 1     1 0 2427 $_ = "\$senhor = \$\$_;$/" . $_;
53 1         5 $_ = "\$| = 1;$/" . $_;
54 1         4 s#pelot[ãa]o, cantar hino#print Acme::BOPE::canta_hino#gi;
55 1         3 s#Capit[ãa]o Nascimento#print Acme::BOPE::fato#gi; # mudar por frase legal
56              
57 1         16 s{\b(?:naum|não|nao|nunca|jamais)\s+(?:ser(?:á|ão)|é|eh)\b}{ne}gi;
58 1         6 s{\b(?:naum|não|nao|nunca|jamais)\b}{not}gi;
59 1         5 s{\bser(?:á|ão|a|ah|ao)\b}{eq}gi;
60 1         4 s{\b(?:é|eh)\b}{=}gi;
61 1         6 s{\bfor\b}{eq}gi;
62              
63 1         5 s{\bvale(?:rá)?\b}{==}gi;
64              
65 1         3 s{\bvai pra guerra\b}{system}gi;
66              
67 1         5 s#\bse\s+(.*?)\s+ent[ãa]o\b#if($1){\n#gi;
68 1         4 s#\bent[ãa]o\b#\{#gi;
69 1         4 s#\bfaz isso aqui[:]?\b#\{#gi;
70 1         4 s#\bsen[ãa]o\b#}else{\n#gi;
71 1         4 s#\bestamos entendidos[?!]*\b#}#gi;
72 1         3 s#\bos? senhor(?:es)? est(?:[aã]o|[aá]) fazendo (?:o )?seu instrutor muito feliz(?:...)#}#gi;
73 1         7 s{\bfala(?: agora)?[!:]*}{print}gi;
74 1         6 s{\bgrita[!:]*\b}{print}gi;
75 1         4 s{\bvai dar merda,?}{warn}gi;
76 1         3 s{
77             \b(?:v(?:ou|ai)\s+)?gritar\s+(?:em|n[oa]|ao?) (.*?):
78             }
79             {
80 0         0 (my $file = $1) =~ s/\W/_/g;
81 0         0 $file =~ s/^_+|_+$//g;
82 0         0 my $fh = uc $file;
83 0         0 "open $fh, \">>$file\";
84             print \{$fh\}"
85             }giex;
86              
87 1         13 s{\bchega[!]*\b}{last}gi;
88 1         12 s{\bpára[!]*\b}{last}gi;
89              
90 1         5 s#\bpara\s+(.*?)\s+(?:ent[aã]o|,)fa[cç]a\b#for($1){#gi;
91 1         3 s#\benquanto\s+(.*?)\s*,#while($1){\n#gi;
92              
93 1         4 s{\bfati(?:a|ou)\b}{split}gi;
94 1         4 s{\bpass(?:a|ou)\b}{next}gi;
95              
96 1         4 s{\bpede pra sair\b}{die}gi;
97 1         6 s{\b(?:eu )?desisto\b}{exit}gi;
98 1         4 s{\bdesistiu\b}{= undef}gi;
99 1         3 s{\bbota na conta do papa\b}{exit}gi;
100              
101 1         3 s{\be\b}{and}gi;
102 1         4 s{\b(?:ent[ãa]o\s+)?senta o dedo nessa porra\b}{print "Caveira meu capitao!"}gi;
103            
104             # variaveis
105 1     1   2753 no warnings;
  1         3  
  1         86  
106 1         3 s#\bsenhor(?:\s+(\d{2,}))?,#\$senhor = \\\$_$1;\n#gi;
107 1     1   6 use warnings;
  1         15  
  1         804  
108 1 0       7 s{\b(?:senhor|o)\s+(\d{2,})\b}{sprintf"\$_%s ", defined $1?$1:""}gie;
  0         0  
109 1         12 s{([^\$])senhor|voc[êe]}{$1\$\$senhor}gi;
110              
111             # perguntas
112 1         3 s#(100\s*%\s+(\d{2,})?\?+)#
113             print "$1";
114             chomp(\$_$2 = <>);
115             \$_$2 =~ /^100%|sim|s/ &&#gi;
116 1         14 s#
117             ((?:a?onde (?:es)t[aá]|cad[êe])\s+[oa]s?\s+(\w+)[?!]+)
118             #
119 0         0 my $var;
120 0         0 ($var = $2) =~ s/\W/_/g;
121 0         0 $var = lc($var);
122 0         0 qq:
123             print "$1";
124             chomp(\$$var = <>);
125             print "0" . (int(rand 9) + 1) . ", pega a vassoura!\$/";
126             :;
127             #gixe;
128              
129 1         4 my @quotes = m#"(.*?)"#gsm;
130 1         11 s#"(.*?)"#sprintf qq/"%d"/, my $i++#gsme;
  0         0  
131              
132             # palavras que são ignoradas dentro do código
133 1         4 foreach my $ignora (@ignoradas){
134 9         198 s{\b$ignora\b}{}gi;
135             }
136              
137 1         16 s#(?:(?:OK)?\s*[!?]+)#;#gi;
138            
139 1         5 s#"(\d+)"#"$quotes[$1]"#g;
140              
141             };
142              
143             # hinos do bope:
144             sub canta_hino {
145 0     0 0   my $self = shift;
146 0           my @hinos = (
147             'O interrogatório é muito fácil de fazer/pega o favelado e dá porrada até doer/O interrogatório é muito fácil de acabar/pega o bandido e dá porrada até matar',
148             'Esse sangue é muito bom/ já provei não tem perigo/é melhor do que café/é o sangue do inimigo',
149             'O quintal do inimigo/não se varre com vassoura/se varre com granada/com fuzil, metralhadora',
150             'São os homens da caveira/do bornal e do cantil/Sua força combativa/está na ponta do fuzil',
151             'Cachorro latindo/Criança chorando/Vagabundo vazando/É o BOPE chegando',
152             'Tropa de elite/osso duro de roer/Pega um, pega geral/também vai pegar você',
153             'Homem de preto, qual é sua missão?/Entrar pela favela e deixar corpo no chão/Homem de preto, o que é que você faz?/Eu faço coisas que assustam o satanás',
154             );
155 0           $hinos[int(rand(@hinos))];
156              
157             }
158              
159             # frases sobre o cap.nascimento
160             sub fato {
161 0     0 0   my $self = shift;
162 0           my @fatos = (
163             'Deus disse que iria fazer o mundo em 7 anos. Capitão Nascimento disse bem alto: "O senhor é um fanfarrão, Sr. 01. O senhor tem 7 dias, sr. 01! SETE DIAS!"',
164             'Quando vivia no paraíso, Capitão Nascimento forçou Eva a comer a maçã, dizendo: "Come a porra da maçã 02! Tá com nojinho, 02? Come tudo, porra!"',
165             'A farda do Capitão Nascimento é preta porque nenhuma outra cor quis ficar perto dele.',
166             'O Capeta queria entrar no BOPE, mas o Capitão Nascimento fez ele desistir apenas dizendo: "666, o senhor é o novo xerife!"',
167             'O Capeta vendeu a alma para o Capitão Nascimento.',
168             'Capitão Nascimento não sai de lugar nenhum devendo a ninguém, sempre põe na conta do Papa.',
169             'Quando Deus disse "Que se faça a luz!". Capitão Nascimento falou "Tá de sacanagem, Sr. 01? Tá com medinho do escuro, Sr. 01?"',
170             'Quando Deus resolveu criar o Universo foi pedir permissão ao Capitão Nascimento e ele respondeu: "É 100%? Então senta o dedo nessa porra!"',
171             'A roupa do Super-Homem era preta até o Capitão Nascimento dizer: "Tira essa roupa preta que você não é caveira, você é MOLEQUE, ouviu? MO-LE-QUE!"',
172             'Capitão Nascimento trabalhou como negociador da polícia. Seu trabalho era ligar para os seqüestradores e dizer: "Pede pra sair, porra!"',
173             'Quantos Capitães Nascimento são necessários para trocar uma lâmpada? Nenhum, Capitão Nascimento também mata no escuro.',
174             'Capitão Nascimento não lê livros, ele os coloca no saco até conseguir toda a informação que precisa.',
175             'Uma vez ele esqueçeu onde deixou as chaves do seu caveirão. Ele se colocou no saco por 40 segundos e lembrou!',
176             'Não existiam mesmo armas de destruição em massa no Iraque. Capitão Nascimento mora no Rio de Janeiro.',
177             'Porque você acha que não existe terrorismo no Brasil?',
178             'Nunca, em nenhuma hipotese, durma na frente do Capitão Nascimento. Ele vai pedir pra você fazer a bondade de segurar a granada.',
179             'Em um de seus mandamentos, Deus disse: "Não Matarás". O Capitão Nascimento disse para Deus: "Tá de sacanagem, Sr. 01? Cê tá de sacanagem comigo, Sr. 01?"',
180             'Não houve impeachment no Governo Collor. O Capitão Nascimento chegou no Palácio do Planalto e disse para o Collor:: "Pede prá sair!! Pede prá sair!!"',
181             'No dia de São Cosme e São Damião, o Capitão Nascimento só pegava saco de doce que tivesse chiclete de Caveira.',
182             'Capitão Nascimento fez com que o Seu Madruga pagasse o aluguel - todos os 14 meses atrasados - e adiantasse mais dois.',
183             'Capitão Nascimento foi ao programa do Faustão e fez com que ele falasse enquanto o faustão ficava calado.',
184             'Capitão Nascimento gritou no centro de Buenos Aires que Pelé é o rei do futebol e todos os argentinos concordaram.',
185             'Capitão Nascimento fez um operador de telemarketing dizer: "desculpa, juro que não ligo mais".',
186             'Capitão Nascimento resolve o travamento do Windows colocando o PC no saco.',
187             'Capitão Nascimento disse pra Will Smith depois de ver "MIB": O senhor é um fanfarrão! Homens de Preto é o caralho, só o BOPE usa preto! Seu viado!',
188             'Capitão Nascimento dorme com um travesseiro debaixo de uma arma.',
189             'Capitão Nascimento sabe exatamente onde está Carmen Sandiego',
190             'Principais causas de morte no Brasil: 1. Ataque do coração, 2. Cap. Nascimento, 3.Câncer; mas a opção 1 é maior porque a maioria dos bandidos morre do coração quando vêem o capitão.',
191             );
192 0           print $fatos[int(rand(@fatos))];
193             }
194              
195             42;
196              
197             __END__