=encoding utf8 =head1 NAME/NOME POD2::Base~[pt] - Módulo básico para traduções de documentação Perl =head1 SINOPSE use POD2::Base; $pod2 = POD2::Base->new({ lang => 'EO' }); @dirs = $pod2->pod_dirs; $re = $pod2->search_perlfunc_re; =head1 DESCRIÇÃO Este código é uma abstração do código em POD2::IT e POD2::FR, módulos que pertencem aos projetos italiano e francês de tradução dos documentos que acompanham o interpretador Perl. Com o pacote de tradução já instalado, a documentação traduzida pode ser acessada através do comando: $ perldoc POD2:::: (onde é uma abreviação para linguagem como IT, FR, TLH, etc.) Isto funciona seguramente até para as versões antigas do L. Não é muito conveniente mas sempre funciona. Para incrementar o suporte para leitura destes documentos traduzidos, o programa L (desde a versão 3.14_01) foi atualizado para encontrar PODs traduzidos assim: $ perldoc -L IT $ perldoc -L FR -f $ perldoc -L TLH -q (Nota: Este suporte foi distribuído junto da versão 5.10.0 do interpretador Perl recentemente disponilizado no CPAN.) O objetivo desta classe é prover uma base mínima para ajudar o C e os autores de projetos de tradução a fazerem seu trabalho. =head1 SUBCLASSES Se você quer escrever um pacote de tradução (e tem algumas necessidades de personalização), seu trabalho pode ser diminuído se você criar uma subclasse de C. Por exemplo, um exemplo mínimo é ilustrado abaixo. package POD2::TLH; # Klingon use POD2::Base; our @ISA = qw( POD2::Base ); sub search_perlfunc_re { # ajuda 'perldoc -f' a funcionar return 'Klingon Listing of Perl Functions'; } 1; E então $ perldoc -L tlh perlintro vai lhe apresentar a introdução de Perl na linguagem Klingon (desde que um arquivo F tenha sido distribuído junto com F) e $ perldoc -L tlh -f pack vai encontrar a documentação em Klingon de C (se F foi disponibilizado também). =head1 MÉTODOS Este módulo foi projetado como uma classe OO com uma API bem pequena. =over 4 =item B $pod2 = POD2::Base->new(\%args); $pod2 = POD2::ANY->new(); O constructor. A criação de uma instância pode se fazer de modo similar a: $pod2 = POD2::Base->new({ lang => 'tlh' }); onde as opções suportadas são: =over 4 =item * "lang" Especifica o código da linguagem em que estamos interessados. Este parâmetro é obrigatório, mas pode ser extraído do nome da subclasse, como explicado mais abaixo. =item * "inc" Este parâmetro é usado para substituir a lista de diretórios para as bibliotecas Perl onde procuram-se os documentos POD (ou seja, C<@INC>). Na maior parte do tempo, você não vai querer mexer com isto. Este parâmetro é mais útil para I e testes. Espera-se um I. =back Se C é uma subclasse de C, o construtor herdado funcionará sem argumentos extraindo 'ANY' do nome do pacote e usando-o como o código da linguagem desejada. Note que o uso de "inc" no construtor congela a lista de diretórios vasculhados pela instância C. Se não é usado, o conteúdo atualizado de C<@INC> é usado em cada chamada de C (de tal forma que mudanças dinâmicas no I para as bibliotecas Perl são percebidas). É isto que queríamos dizer com "Na maior parte do tempo, você não vai querer mexer com isto." =item B @dirs = $pod2->pod_dirs; @dirs = $pod2->pod_dirs(\%options); Usado por C para descobrir onde procurar por PODs traduzidos. O comportamento padrão de C é encontrar cada diretório F<< POD2// >> sob os diretórios de bibliotecas Perl (C<@INC>) ou na lista dada como o argumento "inc" no construtor. As opções suportadas são: =over 4 =item * "test" Por I, o retorno de C não inclui diretórios POD que não existem (testados com C<-d>). Se um valor falso explícito é dado para esta opção (por exemplo, C<< test => 0 >>), este teste não é feito e C inclui todos candidatos F<< POD2// >> abaixo dos diretórios de bibliotecas. (Útil para o I deste módulo, mas sem outros usos práticos além deste.) =back =item B $re = $pod2->search_perlfunc_re; Para implementar C<< perldoc -f >> o código atual de C usa um I fixo "Alphabetical Listing of Perl Functions" ou o retorno deste método (em uma regex) para pular a introdução e alcançar a listagem das funções I. Então um pacote de tradução com a correspondente tradução de F deve definir este método para fazer C<< perldoc -L -f >> funcionar corretamente. =back Há outros métodos documentados abaixo. Entretanto, eles provavelmente serão tornados obsoletos em versões futuras quando forem projetados e implementados métodos mais gerais de encontrar e mostrar os metadados sobre os PODs traduzidos. =over 4 =item B $hashref = $pod2->pod_info; Usado pelo próprio C e seus ancestrais C e C. O retorno contém alguns metadados sobre os PODs traduzidos usados pelos métodos C e C. Ao fazer subclasses seguindo o padrão de C e C, você B redefinir este método com a informação atual sobre quais traduções POD o pacote atual está disponibilizando. =item B $pod2->print_pods; Mostra (via C) todos PODs traduzidos e a versão correspondente de Perl dos arquivos originais. =item B $pod2->print_pod(@pages); $pod2->print_pod(); # usa @ARGV Mostra a versão de Perl correspondente dos arquivos originais associados aos PODs passados como argumentos. =back =head1 EXEMPLOS =head2 POD2::TLH Uma versão mais completa de C pode-se parecer com isto: package POD2::TLH; # Klingon use POD2::Base; our @ISA = qw( POD2::Base ); sub search_perlfunc_re { return 'Klingon Listing of Perl Functions'; } sub pod_info { return { perlintro => '5.8.8' }; } 1; E você pode experimentar: use POD2::TLH; my $pod2 = 'POD2::TLH'; $pod2->print_pods(); $pod2->print_pod('pod_foo', 'pod_baz', ...); =head2 OS ARQUIVOS INSTALADOS Se você quer descobrir quais arquivos PODs de uma dada linguagem que estão instalados junto com seu interpretador Perl, você pode usar um código similar a este. use File::Find; use POD2::Base; my $pod2 = POD2::Base->new({ lang => $lang }); my @files; find sub { push @files, $File::Find::name } if -f }, $pod2->pod_dirs; print "$_\n" for @files; Na distribuição C, é incluído um script F com uma versão estendida deste código. As regras para encontrar POD em arquivos F<.pod>, F<.pm> e outros pertencem ao módulo L. Assim C não tenta repetir esta funcionalidade aqui. =head1 AUTORES Enrico Sorcinelli Ebepi at perl.itE (pelo código original em POD2::IT) Adriano Ferreira Eferreira at cpan.orgE =head1 VEJA TAMBÉM L, L, L, L, L, L. A versão original deste documento: L. (O propósito desta tradução é servir como um primeiro teste para experimentar o suporte dos vários modules Pod e I Perl aos PODs traduzidos.) (This translation was supplied as a front test against the support of the many Pod modules and Perl sites on translated PODs.) =head1 COPYRIGHT E LICENÇA Copyright (C) 2004-2006 Perl.it / Perl Mongers Italia This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut =begin meta --- date: 2008-02-25T11:01:45 md5: 47896a7d12987b2f18179eac7f52f8b2 revision: 3 translated_from: history: [] md5: ~ uri: http://search.cpan.org/src/FERREIRA/POD2-Base-0.04/lib/POD2/Base.pod =end meta