package Razor2::Preproc::deQP;
use strict;
use warnings;

#use MIME::QuotedPrint;

sub new {
    return bless {}, shift;
}

sub isit {
    my ( $self, $text ) = @_;
    my ( $hdr, $body ) = split /\n\r*\n/, $$text, 2;
    return $hdr =~ /^Content-Transfer-Encoding: quoted-printable/ism;
}

sub doit {

    my ( $self, $text ) = @_;

    my ( $hdr, $body ) = split /\n\r*\n/, $$text, 2;

    # comment this out to be compatible with libpreproc.cc:qp_decode()
    #$body =~ s/[ \t]+?(\r?\n)/$1/g;  # rule #3 (trailing space must be deleted)
    $body =~ s/=\r?\n//g;    # rule #5 (soft line breaks)
    $body =~ s/=([\da-fA-F]{2})/pack("C", hex($1))/ge;

    $$text = "$hdr\n\n$body";

    return $text;
}

sub extract_qp {
    my ( $self, $text ) = @_;

    if ( $$text =~ /Content-Transfer-Encoding: quoted-printable(.*)$/sim ) {
        my $rhs = $1;
        $rhs =~ /\r?\n\r?\n(.*)$/s;
        return $1;
    }
    return undef;
}

1;
