#!perl
use strict;
use warnings;
use FindBin;
use lib "$FindBin::Bin/../lib";
use Acme::CPANAuthors::Utils qw( cpan_authors );
use Acme::CPANAuthors::Japanese;
use Lingua::JA::Romaji::Valid;

my $validator  = Lingua::JA::Romaji::Valid->new;
my %known      = Acme::CPANAuthors::Japanese->authors;
my %exceptions = _exceptions();

my @authors;
foreach my $author ( cpan_authors->authors ) {
  my $email = $author->email;
  my $name  = lc $author->name or next;
  my $id    = $author->pauseid;

  next if $known{$id};
  next if $exceptions{$id};
  next unless $name =~ /^[ -~]+$/ and $validator->as_fullname( $name );
#  next unless $email and $email =~ /(\.(com|org|net|jp)|CENSORED)$/i;

  push @authors, $author;
}

print "num of candidates: " , (scalar @authors), "\n";

foreach my $author ( sort { $a->pauseid cmp $b->pauseid } @authors ) {
  my $id   = $author->pauseid;
  my $name = $author->name;
  my $mail = $author->email;
  print qq{    $id => '$name', # ($mail)\n};
}

# these authors have names which can be readable as Japanese

sub _exceptions {(
    ADITYA => 'Aditya Wasudeo',
    AKISSANE => 'Aidan Kissane',
    AMBROSEUS => 'Eugene Samonenko',
    ANAK => 'Mario Rossano',
    ANDOT => 'MA Bingyao',
    ANNADURAI => 'Anna Durai',
    BENH => 'Benjamin Hare',
    BERETTA => 'Joshua Moore',
    BIJUA => 'Biju A',
    BOXZOU => 'Bo Zou',
    BSAGO => 'Benjamin Sago',
    BUGONI => 'Piero Bugoni',
    CORNO => 'Ian Hansen',
    DANMOORE => 'Dan Moore',
    DEROBINS => 'Dana Robinson',
    DEVIS => 'Roman Musin',
    DGMDAN => 'Dan Madere',
    DKOGAN => 'Dima Kogan',
    EAU => 'Eugene Au',
    EGA => 'Eugene Gagarin',
    EUGENEK => 'Eugene Kuzin',
    FNEVER => 'Tan Hao ',
    FUKAI => 'Fu Kai ',
    GRUBER => 'Anton Berezin',
    HAGANK => 'Ken Hagan',
    HAVOX => 'Joe Mora',
    HDANAK => 'Hike Danakian',
    HESSU => 'Heikki Hannikainen',
    HJANSEN => 'Heiko Jansen',
    HOUZUO => 'Houzuo Guo',
    HUGOCHIEN => 'Hugo Chien',
    HUJINPU => 'Jinpu Hu',
    IBUDAI => 'Ioana Budai',
    ICIBIN => 'Bin Shu ',
    IDO => 'Ido Rosen',
    INSANEART => 'Joe Mason',
    IKEGAMI   => 'ikegami',  # Eric Brine
    ITEGEBO => 'Ian Tegebo',
    IWADE => 'Iain Wade',
    JACM => 'Jose Machado',
    JAE => 'Jae Gangemi',
    JASONPOPE => 'Jason Pope',
    JBURATI => 'Johan Burati',
    JHUNI => 'Joon Hee',
    JIMBOX => 'Jimi Mikusi',
    JJFUMERO => 'Juan Jose',
    JMINIERI => 'Joe Minieri',
    JMOORE => 'Jason Moore',
    JOSHKUO => 'Joshua Kuo',
    JON => 'Jon A',
    JRENNIE => 'Jason Rennie',
    JSIME => 'Jon Sime',
    KUUSE => 'Johan Kuuse',
    MANNI => 'Manni Heumann',
    MANNO => 'Mario Manno',
    MARIO => 'Mario Minati',
    MHM => 'Mike Moran',
    MISHOO => 'Mihai Bazon',
    MITTI => 'Aaron Mitti',
    MLRU => 'Mario Russo',
    MMACHADO => 'Mike Machado',
    MOUNS => 'N Mouniee',
    MVR => 'Ramana Mokkapati',
    ORION => 'Orion Montoya',
    PANYU => 'PAN YU',
    RA => 'Roman Kosenko',
    RANN => 'Ran Ningyu',
    RFP => 'Rui Patinha',
    RIJA => 'Rija Menage',
    RNAIMA => 'Reza Naima',
    RPIKKARA => 'Raino Pikkarainen',
    RSARAN => 'Rogerio Saran',
    RUBINJ => 'Joshua Rubin',
    SANJOGA => 'Sanjoga Sahu',
    SANKO => 'Sanko Robinson',
    SAPAPO => 'Sami Poikonen',
    SDAGUE => 'Sean Dague',
    SEGAN => 'Sean Egan',
    SHANHE => 'Shan He',
    SIERRA => 'Mike Sierra',
    SMSO => 'Shimin Shuai',
    THUNDERA => 'Mauro Ribeiro',
    WAIDER => 'Ronan Waide',
    YKAR => 'Yuri Karaban',
    YULESHOW => 'Wanshu Shao',
    ZEMAN => 'Dan Zeman',
    ZIYA => 'Ziya Suzen',
)}

__END__

=head1 NAME

unregistered_japanese_authors - try to find unregistered Japanese CPAN authors

=head1 SYNOPSIS

 > unregistered_japanese_authors

=head1 DESCRIPTION

You can use this to find Pause IDs whose real name looks like Japanese.

=head1 AUTHOR

Kenichi Ishigaki, E<lt>ishigaki at cpan.orgE<gt>

=head1 COPYRIGHT AND LICENSE

Copyright (C) 2007 by Kenichi Ishigaki.

This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.

=cut
