#-*- perl -*-
#
# Copyright (C) 2002 Ken'ichi Fukamachi
# All rights reserved. This program is free software; you can
# redistribute it and/or modify it under the same terms as Perl itself.
#
# $FML: HTMLify.pm,v 1.9 2002/09/15 00:11:42 fukachan Exp $
#
package FML::Command::HTMLify;
use strict;
use vars qw(@ISA @EXPORT @EXPORT_OK $AUTOLOAD);
use Carp;
use File::Spec;
use FML::Log qw(Log LogWarn LogError);
=head1 NAME
FML::Command::HTMLify - utility functions to convert
=head1 SYNOPSIS
=head1 DESCRIPTION
This module provides several utility functions to send back article
and file in C<$ml_home_dir>.
=head1 METHODS
=cut
# Descriptions:
# Arguments: OBJ($self) HASH_REF($args)
# Side Effects:
# Return Value: none
sub convert
{
my ($curproc, $args, $optargs) = @_;
my $src_dir = $optargs->{ src_dir };
my $dst_dir = $optargs->{ dst_dir };
croak("src_dir not defined") unless defined $src_dir;
croak("src_dir not exists") unless -d $src_dir;
croak("dst_dir not defined") unless defined $dst_dir;
croak("dst_dir not exists") unless -d $dst_dir;
# XXX NOT NEED THIS CHECK ?
# unless ($curproc->is_config_cf_exist()) {
# croak("invalid ML");
# }
my ($is_subdir_exists, $subdirs) = _check_subdir_exists($src_dir);
if ($is_subdir_exists) { Log("looks subdir exists");}
if (defined $dst_dir) {
unless (-d $dst_dir) {
$curproc->mkdir($dst_dir, "mode=public");
}
if ($is_subdir_exists) {
my (@x) = sort _sort_subdirs @$subdirs;
print STDERR "subdirs; @x \n";
for my $xdir (sort _sort_subdirs @$subdirs) {
eval q{
use Mail::Message::ToHTML;
&Mail::Message::ToHTML::htmlify_dir($xdir, {
directory => $dst_dir,
});
};
croak($@) if $@;
}
}
else {
eval q{
use Mail::Message::ToHTML;
&Mail::Message::ToHTML::htmlify_dir($src_dir, {
directory => $dst_dir,
});
};
croak($@) if $@;
}
}
else {
croak("no destination directory\n");
}
}
# Descriptions: sort subdirs by the last dirname
# Arguments: implicit ($a, $b)
# Side Effects: none
# Return Value: NUM(-1, 0, 1)
sub _sort_subdirs
{
my ($xa, $xb);
if ($a =~ /(\d+)$/) { $xa = $1;}
if ($b =~ /(\d+)$/) { $xb = $1;}
$xa <=> $xb;
}
# Descriptions: check wheter $src_dir has sub-directories in it
# Arguments: STR($src_dir)
# Side Effects: none
# Return Value: ARRAY( STR, ARRAY_REF )
sub _check_subdir_exists
{
my ($src_dir) = @_;
my $status = 0;
my $subdir = '';
my @subdir = ();
use File::Spec;
use DirHandle;
my $dh = new DirHandle $src_dir;
if (defined $dh) {
while (defined($_ = $dh->read)) {
next if /^\./;
$subdir = File::Spec->catfile($src_dir, $_);
if (-d $subdir) {
push(@subdir, $subdir);
$status = 1;
}
}
}
return( $status, \@subdir );
}
=head1 CODING STYLE
See C on fml coding style guide.
=head1 AUTHOR
Ken'ichi Fukamachi
=head1 COPYRIGHT
Copyright (C) 2002 Ken'ichi Fukamachi
All rights reserved. This program is free software; you can
redistribute it and/or modify it under the same terms as Perl itself.
=head1 HISTORY
FML::Command::HTMLify first appeared in fml8 mailing list driver package.
See C for more details.
=cut
1;