cginame(/home/jj/public_html/bin/htsp) formtitle(Análise ortográfica com Jspell Navegante) feedback(spellend) f(spellit) desc(spelldesc1) init(jinit) ## $ENV{PATH}="/bin:/usr/bin:/usr/local/bin"; use jspell; my ($jsp,$jspen); sub spellend{ h3("Palavras desconhecidas"). small(ul(li([map{"$_ - $estado{$_}"} sort {$estado{$b} <=> $estado{$a}} keys %estado]))) } sub spelldesc1{ h4("Breve descrição:"). small(ol(li([q{Mantém inalterado o que está em Português (e usa benevolência)}, m_eng(q{Altera a cor para verde nas em Inglês}), m_error(q{Altera a cor para vermelho nas palavras desconhecidas}), q{Funciona como proxy: segue as ligações, continuando a análise ortográfica (não consegue seguir link escondidos em javascript...)}, q{Para finalizar: seleccionar o barco do topo da página para opter a lista das palavras desconhecidas}]))); } sub spellit{ my $a=shift; $a =~ s{((http://|ftp://|www\.)[\w.?/~-]+)}{_savit($1)}ge; $a =~ s{([\w.-]+\@[\w.?-]+)}{_savit($1)}ge; $a =~ s{(\w+)((?:-\w+)*)}{if($2){ apc("$1$2")} else { ap($1)}}ge; _loadit($a); } sub apc{ # compound word analisys my $p=shift; if( ig($p) || $jsp->fea($p)){$p} else{ $p =~ s{(\w+)}{ap($1)}ge; $p} } sub ap{ # simple word analysis my $p=shift; if( ig($p) || $jsp->fea($p)){$p} elsif($p !~ /[^a-zA-Z]/ && $jspen->fea($p)){m_eng($p)} else{ $estado{$p}++; m_error($p) } } my @i=qw{amp lt gt and man help html the my hotlist wishlist home faq jj uminho web }; my %ignore; @ignore{@i}=@i; sub ig{ $ignore{lc($_[0])} || lc($_[0]) =~ /\d/ || length($_[0]) == 1 } sub jinit{ $jsp=jspell::new("port"); $jspen=jspell::new("eng"); } ##