Business-BR-CNJ-NumberExtractor
view release on metacpan or search on metacpan
lib/Business/BR/CNJ/NumberExtractor.pm view on Meta::CPAN
package Business::BR::CNJ::NumberExtractor;
use strict;
use utf8;
use Exporter 'import';
use Business::BR::CNJ;
our $VERSION = 0.07;
our @EXPORT_OK = qw/ cnj_extract_numbers cnj_extract_numbers_lwp /;
sub cnj_extract_numbers {
my $txt = shift;
my @n = $txt =~ m|(\d{7}.?\d{2}.?\d{4}.?\d.?\d{2}.?\d{4})|g;
# Hard check and return
return map { ( Business::BR::CNJ::cnj_check_number($_) ? ($_) : () ) } @n;
}
sub cnj_extract_numbers_lwp {
require LWP::UserAgent;
require Mojo::DOM;
my $req = LWP::UserAgent->new( agent => __PACKAGE__ )->get( @_ );
die $req->status_line if !$req->is_success;
# text/html
if ( $req->header( 'Content-type' ) eq 'text/html' ) {
my $dom = Mojo::DOM->new( $req->decoded_content );
return cnj_extract_numbers( $dom->all_text );
# Everything else
} else {
return cnj_extract_numbers( $req->decoded_content );
}
}
1;
__END__
=head1 NAME
Business::BR::CNJ::NumberExtractor - Extract brazilian CNJ numbers (Conselho Nacional de Justiça) from strings.
=head1 SYNOPSIS
use Business::BR::CNJ::NumberExtractor ( qw/ cnj_extract_numbers / );
my @numbers = cnj_extract_numbers(' This is a good number: 0058967-77.2016.8.19.0000, but this is not: 0058967-71.2016.8.99.0000 - wrong verification digits.');
# or...
use Business::BR::CNJ::NumberExtractor;
my @numbers = Business::BR::CNJ::NumberExtractor::cnj_extract_numbers('This is good number: 0058967-77.2016.8.19.0000');
# Or, using LWP::UseAgent and Mojo::DOM (if text/html repsonse)
my @numbers = Business::BR::CNJ::NumberExtractor::cnj_extract_numbers_lwp('https://modeloinicial.com.br/peticao/reclamacao-trabalhista');
# Pass on args to LWP's get method, like cookies or user agent:
my @numbers = Business::BR::CNJ::NumberExtractor::cnj_extract_numbers_lwp('https://modeloinicial.com.br/peticao/11040619/Acao-aposentadoria-invalidez', 'User-Agent', 'That is me.');
my @numbers = Business::BR::CNJ::NumberExtractor::cnj_extract_numbers_lwp('https://modeloinicial.com.br/peticao/11000717/Acao-aposentadoria-Especial', 'Cookie', 'AUTH=123');
# Works even on DOC or PDF files
my @numbers = Business::BR::CNJ::NumberExtractor::cnj_extract_numbers_lwp('http://arquivo.trf1.gov.br/AGText/2011/0001000/00010284120114013819_3.doc');
=head1 DESCRIPTION
This module handles CNJ numbers and data.
=head1 METHDOS
=head2 cnj_extract_numbers
Given a string as input, returns an array with all CNJ numbers present in the text.
References:
http://www.cnj.jus.br/busca-atos-adm?documento=2748
§ 2º O campo (DD), com 2 (dois) dÃgitos, identifica o dÃgito verificador, cujo cálculo de verificação deve ser efetuado pela aplicação do algoritmo Módulo 97 Base 10, conforme Norma ISO 7064:2003, nos termos das instruções constantes do A...
Art. 1º Fica instituÃda a numeração única de processos no âmbito do Poder Judiciário, observada a estrutura NNNNNNN-DD.AAAA.J.TR.OOOO, composta de 6 (seis) campos obrigatórios, nos termos da tabela padronizada constante dos Anexos I a VII des...
=over
=head2 cnj_extract_numbers_lwp
Same as cnj_extract_numbers, but instead of a string, it expects a URI to be fetched with LWP::UserAgent.
If the response is a text/html, Mojo::DOM is used to extract the visible text. Otherwise, response data won't be parsed and will be processed as is.
( run in 2.412 seconds using v1.01-cache-2.11-cpan-524268b4103 )