| Category: | Utility Scripts |
| Author/Contact Info | smokemachine |
| Description: | Comment your code |
/usr/bin/comenta
#!/usr/bin/perl
our %parametros;
while($para=shift) {
$parametros{$1}=$2 if $para =~ /^--(.+)=(.+)$/;
$parametros{arquivo}=$para unless $para =~ /^--(.+)=(.+)$/;
}
descobre_linguagem($arquivo) unless our $linguagem=$parametros{linguag
+em};
our $arquivo=$parametros{arquivo};
our $nivel=0 unless $nivel=$parametros{nivel};
comenta_codigo();
sub comenta_codigo() {
open(ARQ, $arquivo) or die "Arquivo '$arquivo' não encontrado";
for(<ARQ>){
$linhas++;
$teste=$_;
chomp($teste);
unless($teste =~ /^\s*#/) {
open(RC, "/etc/comentarios") or die "Arquivo de configuraç
+ão '/etc/comentarios' não encontrado";
for(<RC>){
$_ =~ /<nivel=(\d)>/;
$eni=$1;
if($_ =~ /<$linguagem>/i and $eni >= $nivel) {
$_ =~ /<expr>(.+)<\/expr>/;
$expre=$1;
chomp($expre);
$_ =~ /<coment>(.+)<\/coment>/;
$comen=$1;
chomp($comen);
if($teste =~ /$expre/) {
@vetor=split(/\[|\]/, $comen);
$i=0;
while($vetor[$i]){
print $vetor[$i].${$vetor[$i+1]};
$i+=2;
}
print "\n";
$comentarios++;
}
}
}
}
close RC;
print $teste."\n";
open(RC, "/etc/comentarios") or die "Arquivo de configuraç
+ão '/etc/comentarios' não encontrado";
for(<RC>){
if($_ =~ /<$linguagem>/i and $_ =~ /<inicio>/i) {
$_ =~ /<expr>(.*)<\/expr>/;
$expre=$1;
chomp($expre);
$_ =~ /<coment>(.*)<\/coment>/;
$comen=$1;
chomp($comen);
if($teste =~ /$expre/) {
@vetor=split(/\[|\]/, $comen);
$i=0;
while($vetor[$i]){
print $vetor[$i].${$vetor[$i+1]};
$i+=2;
}
print "\n";
$comentarios++;
}
}
}
close RC;
}
close ARQ;
}
sub descobre_linguagem() {
($arq)=@_;
$arq=~/.*\.([a-z]{1,2})/;
$ext=$1;
open(LIN, "/etc/comenta.conf") or die "Arquivo de configuração '/e
+tc/comenta.conf' não encontrado";
for(<LIN>) {
$a=$_;
chomp($a);
our $linguagem=$1 if $a =~ /^(.*)=(\w{1,2},)*$ext,?(\w{1,2},?)
+*$/;
return() if $a =~ /^(.*)=(\w{1,2},)*$ext,?(\w{1,2},?)*$/;
$linguagem="" unless $a =~ /^(.*)=(\w{1,2},)*$ext,?(\w{1,2},?)
+*$/;
}
close LIN;
}
/etc/comenta.conf
Perl=pl,pm C=c,h,o Bash=sh/etc/comentarios <C><coment><nivel=1> # Caso a formula '[1]' seja verdadeira, execut +a os próximos comandos</coment> <expr>if\((.*)\)\ *\{</expr> <Perl><inicio><coment></coment> <expr>#\!\/usr\/bin\/perl</expr> <Perl><inicio><coment> ############################################ +########### </coment> <expr>#\!\/usr\/bin\/perl</expr> <Perl><inicio><coment> # Código comentado pelo script 'comen +ta' # </coment> <expr>#!/usr/bin/perl</expr> <Perl><inicio><coment> # Feito por Fernando Corrêa de Olivei +ra # </coment> <expr>#!/usr/bin/perl</expr> <Perl><inicio><coment> ############################################ +########### </coment> <expr>#!/usr/bin/perl</expr> <Perl><inicio><coment></coment> <expr>#!/usr/bin/perl</expr> <Perl><nivel=1><coment># Caso a formula '[1]' seja verdadeira, executa + os próximos comandos</coment> <expr>^\s*if\s?\((.*)\)\s*\{?</expr> <Perl><nivel=1><coment># Caso a formula '[2]' seja verdadeira, executa + o comando '[1]'</coment> <expr>^\s*(.*)\ if\ ?\(?(.*)\)?\s?;</expr> <Perl><nivel=1><coment># A não ser que a formula '[1]' seja verdadeira +, executa os próximos comandos</coment> <expr>^\s*unless\ ?\(?(.*)\)? +\ *\{</expr> <Perl><nivel=1><coment># A não ser que a formula '[2]' seja verdadeira +, executa o comando '[1]'</coment> <expr>^\s*(.*)\ unless\ ?\(?(.*)\) +?\ *;</expr> <Perl><nivel=1><coment># Enquanto a expressão '[1]' for verdadeira...< +/coment> <expr>while\s?\((.*)\)\s?\{?</expr> <Perl><nivel=1><coment># Para a expressão '[1]'</coment> <expr>for\s?\ +((.*)\)\s?\{</expr> <Perl><nivel=1><coment># '[1]' => o mesmo que: '[2] = [2] + [3]'</come +nt> <expr>((\$\w)+\+=(\d+))</expr> <Perl><nivel=2><coment># Abre o arquivo '[2]' com o titulo '[1]'</come +nt> <expr>open\((.*)\ ?\,\ ?(.*)\)</expr> <Perl><nivel=3><coment># Retira o '\n' do final da variavel [1]</comen +t> <expr>chomp\((\$.*)\)</expr> <Perl><nivel=2><coment># Fecha o arquivo com o titulo '[1]'</coment> < +expr>close\(?\ ?(.*)\)?\ ?;</expr> <Sistema><nivel=1><coment> # Usuario [1] com UID [3] e home [6]</co +ment> <expr>(.*):(x?):(.*):(.*):(.*):(.*):(.*)</expr> <Perl><nivel=1><coment># Para a cada um dos argumentos de '[1]' faça</ +coment> <expr>foreach\ *\((.*)\)\ *{</expr> <Perl><nivel=1><coment># Para [1] sendo igual a cada um dos argumentos + de '[2]' faça</coment> <expr>foreach\ *($.*)\ \((.*)\)\ ?{</expr> <Perl><nivel=1><coment># '[1]' => de [2] até [3]</coment> <expr>(([0-9 +]+)\ ?\.\.\ ?([0-9]+))</expr> <Perl><nivel=3><coment># '[1]' recebe o parametro passado na chamada d +a função</coment> <expr>\((\$.*)\)=\@_</expr> <Perl><nivel=3><coment># [1] => '[2]' recebe o 1º parametro passado na + chamada do programa excluindo-o</coment> <expr>((\$.*)=shift)</expr> <Perl><nivel=1><coment># Declaração da variavel '[1]' local</coment> < +expr>my\s*(\$\w*);</expr> <Perl><nivel=1><coment># Declaração da variavel '[1]' global</coment> +<expr>our\s*(\$\w*);</expr> <Perl><nivel=1><coment># [1] => Declaração da variavel '[2]' local con +tendo '[3]'</coment> <expr>(my\s*(\$\w+)=(.*));</expr> <Perl><nivel=1><coment># [1] => Declaração da variavel '[2]' global co +ntendo '[3]'</coment> <expr>(our\s*(\$\w+)=(.*));</expr> <Perl><nivel=1><coment># Declaração do hash '[1]' local</coment> <expr +>my\s*(\%\w+);</expr> <Perl><nivel=1><coment># Declaração do hash '[1]' global</coment> <exp +r>our\s*(\%\w+);</expr> <Perl><nivel=1><coment># [1] => Valor da posição '[3]' do hash %[2]</c +oment> <expr>(\$(\w+)\{(.+)\})</expr> <Perl><nivel=1><coment># return() => Sai da função</coment> <expr>retu +rn\ ?\(?\ ?\)?</expr> <Perl><nivel=1><coment># return([1]) => Sai da função com '[1]' como v +alor de retorno</coment> <expr>return\ ?\(?\ (.*)\ ?\)?</expr> <Perl><nivel=4><coment># Como a função já diz: Usa o módulo '[1]'</com +ent> <expr>^use\s+(.+);</expr> <Perl><nivel=5><coment> ############################### Função '[1] +' #######################</coment> <expr>^\s*sub (\w*\(?\)?)\ *\{?$</ +expr> <Perl><nivel=3><coment># [1] => Testa a expressão regular '[3]' na var +iavel '[2]'</coment> <expr>\s?((\$\w+)\s?=~\s?(\/.+\/))</expr> <Perl><nivel=3><coment># [1] => Reconhece qq tipo de espaço, como bran +co, tabulação ou quebra de linha</coment> <expr>\s?\$\w+\s?=~\s?\/.*( +\\s).*\/</expr> <Perl><nivel=3><coment># [1] => Reconhece qq letra</coment> <expr>\s?\ +$\w+\s?=~\s?\/.*(\\w).*\/</expr> <Perl><nivel=3><coment># [1] => Reconhece qq palavra</coment> <expr>\s +?\$\w+\s?=~\s?\/.*(\\W).*\/</expr> <Perl><nivel=3><coment># [1] => Reconhece qq numero</coment> <expr>\s? +\$\w+\s?=~\s?\/.*(\\d).*\/</expr> <Perl><nivel=3><coment># [1] => Reconhece qq coisa entre '[2]' e '[3]' +</coment> <expr>\s?\$\w+\s?=~\s?\/.*(\[(\w|\d)\-(\w|\d)\]).*\/</expr> <Perl><nivel=3><coment># [1] => A expressão '[2]' deve aparecer entre +[3] e [4] vezes</coment> <expr>\s?\$\w+\s?=~\s?\/.*(([\[|\(].+[\]|\)] +)\{(\d),(\d)\}).*\/</expr> <Perl><nivel=3><coment># [1] => A expressão '[2]' deve aparecer entre +[3] e [4] vezes</coment> <expr>\s?\$\w+\s?=~\s?\/.*((\\.)\{(\d),(\d)\ +}).*\/</expr> |
|
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Comment
by mk. (Friar) on Jan 06, 2006 at 13:39 UTC | |
|
Re: Coment
by TedPride (Priest) on Dec 29, 2005 at 17:03 UTC | |
by ysth (Canon) on Dec 30, 2005 at 11:48 UTC |