Blame Detect.pm

Packit 67f6e7
package Encode::Detect;
Packit 67f6e7
Packit 67f6e7
# * ***** BEGIN LICENSE BLOCK *****
Packit 67f6e7
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
Packit 67f6e7
#
Packit 67f6e7
# The contents of this file are subject to the Mozilla Public License Version
Packit 67f6e7
# 1.1 (the "License"); you may not use this file except in compliance with
Packit 67f6e7
# the License. You may obtain a copy of the License at
Packit 67f6e7
# http://www.mozilla.org/MPL/
Packit 67f6e7
#
Packit 67f6e7
# Software distributed under the License is distributed on an "AS IS" basis,
Packit 67f6e7
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
Packit 67f6e7
# for the specific language governing rights and limitations under the
Packit 67f6e7
# License.
Packit 67f6e7
#
Packit 67f6e7
# The Original Code is Encode::Detect wrapper
Packit 67f6e7
#
Packit 67f6e7
# The Initial Developer of the Original Code is
Packit 67f6e7
# Proofpoint, Inc.
Packit 67f6e7
# Portions created by the Initial Developer are Copyright (C) 2005
Packit 67f6e7
# the Initial Developer. All Rights Reserved.
Packit 67f6e7
#
Packit 67f6e7
# Contributor(s):
Packit 67f6e7
#
Packit 67f6e7
# Alternatively, the contents of this file may be used under the terms of
Packit 67f6e7
# either the GNU General Public License Version 2 or later (the "GPL"), or
Packit 67f6e7
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
Packit 67f6e7
# in which case the provisions of the GPL or the LGPL are applicable instead
Packit 67f6e7
# of those above. If you wish to allow use of your version of this file only
Packit 67f6e7
# under the terms of either the GPL or the LGPL, and not to allow others to
Packit 67f6e7
# use your version of this file under the terms of the MPL, indicate your
Packit 67f6e7
# decision by deleting the provisions above and replace them with the notice
Packit 67f6e7
# and other provisions required by the GPL or the LGPL. If you do not delete
Packit 67f6e7
# the provisions above, a recipient may use your version of this file under
Packit 67f6e7
# the terms of any one of the MPL, the GPL or the LGPL.
Packit 67f6e7
#
Packit 67f6e7
# ***** END LICENSE BLOCK *****
Packit 67f6e7
Packit 67f6e7
use strict;
Packit 67f6e7
use warnings;
Packit 67f6e7
use base qw(Encode::Encoding);
Packit 67f6e7
use Encode qw(find_encoding);
Packit 67f6e7
use Encode::Detect::Detector;
Packit 67f6e7
Packit 67f6e7
__PACKAGE__->Define(qw(Detect));
Packit 67f6e7
Packit 67f6e7
our $VERSION = "1.01";
Packit 67f6e7
Packit 67f6e7
sub perlio_ok { 0 }
Packit 67f6e7
Packit 67f6e7
sub decode ($$;$) {
Packit 67f6e7
    my ($self, $octets, $check) = @_;
Packit 67f6e7
    my $charset = detect($octets) || 'Windows-1252';
Packit 67f6e7
    my $e = find_encoding($charset) or die "Unknown encoding: $charset";
Packit 67f6e7
    my $decoded = $e->decode($octets, $check || 0);
Packit 67f6e7
    $_[1] = $octets if $check;
Packit 67f6e7
    return $decoded;
Packit 67f6e7
}
Packit 67f6e7
Packit 67f6e7
1;
Packit 67f6e7
Packit 67f6e7
__END__
Packit 67f6e7
Packit 67f6e7
=head1 NAME
Packit 67f6e7
Packit 67f6e7
Encode::Detect - An Encode::Encoding subclass that detects the encoding of data
Packit 67f6e7
Packit 67f6e7
=head1 SYNOPSIS
Packit 67f6e7
Packit 67f6e7
  use Encode;
Packit 67f6e7
  require Encode::Detect;
Packit 67f6e7
  my $utf8 = decode("Detect", $data);
Packit 67f6e7
Packit 67f6e7
=head1 DESCRIPTION
Packit 67f6e7
Packit 67f6e7
This Perl module is an Encode::Encoding subclass that uses
Packit 67f6e7
Encode::Detect::Detector to determine the charset of the input data
Packit 67f6e7
and then decodes it using the encoder of the detected charset.
Packit 67f6e7
Packit 67f6e7
It is similar to Encode::Guess, but does not require the configuration
Packit 67f6e7
of a set of expected encodings.  Like Encode::Guess, it only supports
Packit 67f6e7
decoding--it cannot encode.
Packit 67f6e7
Packit 67f6e7
=head1 SEE ALSO
Packit 67f6e7
Packit 67f6e7
L<Encode>, L<Encode::Encoding>, L<Encode::Detect::Detector>
Packit 67f6e7
Packit 67f6e7
=head1 AUTHOR
Packit 67f6e7
Packit 67f6e7
John Gardiner Myers <jgmyers@proofpoint.com>
Packit 67f6e7
Packit 67f6e7
=head1 SUPPORT
Packit 67f6e7
Packit 67f6e7
For help and thank you notes, e-mail the author directly.  To report a
Packit 67f6e7
bug, submit a patch, or add to the wishlist please visit the CPAN bug
Packit 67f6e7
manager at: F<http://rt.cpan.org>
Packit 67f6e7
Packit 67f6e7