#!/usr/local/ymir/perl/bin/perl -w
## ----------------------------------------------------------------------------
#  ujguess
# -----------------------------------------------------------------------------
# Mastering programmed by YAMASHINA Hio
#
# Copyright 2005 YAMASHINA Hio
# -----------------------------------------------------------------------------
# $Id: ujguess,v 1.3 2007/01/16 02:01:36 hio Exp $
# -----------------------------------------------------------------------------
package Unicode::Japanese::UJGuess;
use strict;
use Unicode::Japanese;
our $VERSION = '0.02';

if( !caller )
{
  __PACKAGE__->do_work(@ARGV);
}

# -----------------------------------------------------------------------------
# main.
#
sub do_work
{
  my $pkg = shift;
  
  my $string;
  my @files;
  my $no_filename;
  
  while(@_)
  {
    my $key = shift;
    if( $key !~ /^-/ )
    {
      push(@files,$key);
      next;
    }elsif( $key eq '--' )
    {
      push(@files,@_);
      last;
    }
    if( $key eq '--no-filename' )
    {
      $no_filename = 1;
      next;
    }elsif( $key eq '--show-filename' )
    {
      $no_filename = 0;
      next;
    }elsif( $key eq '-s' )
    {
      my $value = shift;
      push(@files,[$key,$value]);
      next;
    }elsif( $key =~ /^(-h|--help)$/ )
    {
      print_usage();
      return 1;
    }elsif( $key =~ /^(-V|--version)$/ )
    {
      print_version();
      return 1;
    }else
    {
      die "unkown argument [$key]";
    }
  }
  
  !defined($no_filename) and $no_filename = @files<=1;
  
  Unicode::Japanese->new(); # load stub.
  local($/) = undef;
  if( !@files )
  {
    my $text = <STDIN>;
    $no_filename or print "-:";
    print Unicode::Japanese->getcode($text)."\n";
  }
  foreach my $file (@files)
  {
    my $filename;
    my $text;
    if( ref($file) )
    {
      $filename = join(' ',@$file);
      $text = $file->[1];
    }elsif( $file eq '-' )
    {
      $filename = '-';
      $text = <STDIN>;
    }else
    {
      $filename = $file;
      open(FILE,$file) or die "could not open file [$file] : $!";
      $text = <FILE>;
      close(FILE);
    }
    $no_filename or print "$filename:";
    print Unicode::Japanese->getcode($text)."\n";
  }
  1;
}

# -----------------------------------------------------------------------------
# print_usage();
#
sub print_usage
{
  print "usage: ujguess [options] [files...]\n";
  print "options:\n";
  print "  --no-filename    print only encoding name\n";
  print "  --show-filename  print both filename and encoding name\n";
  print "  -h|--help        print this message\n";
  print "  -V|--version     print version\n";
}

# -----------------------------------------------------------------------------
# print_version();
#
sub print_version
{
  print "ujguess $VERSION\n";
  print "Unicode::Janaese $Unicode::Japanese::VERSION\n";
}


__END__

=head1 NAME

ujguess -- guessing text encoding

=head1 SYNOPSIS

  ujguess [files..]

=head1 VERSION

ujguess 0.02

=head1 DESCRIPTION

B<ujguess> guesses encoding of contens.

=over 4

=item --no-filename

Not prepend file name with each result.
This is default if just one file is passed.

=item --show-filename

Prepend file name with each result.
This is default if two or more files are passed.

=item -h,--help

Show usage.

=item -V,--version

Show version.

=back

=head1 SEE ALSO

L<Unicode::Japanese>, 
L<ujconv>

=cut

# -----------------------------------------------------------------------------
# End of File.
# -----------------------------------------------------------------------------
