Egg::Model::FsaveDate::Base - Base class for model 'FsaveDate'.


Egg-Model-FsaveDate documentation Contained in the Egg-Model-FsaveDate distribution.

Index


Code Index:

NAME

Top

Egg::Model::FsaveDate::Base - Base class for model 'FsaveDate'.

DESCRIPTION

Top

This module is succeeded to from Egg::Model::FsaveDate in case of not being from the module if the controller module of Egg::Model::FsaveDate is prepared.

METHODS

Top

In addition, Egg::Base has been succeeded to.

save ([SAVE_TEXT], [BASE_PATH])

The directory of the date is made under the control of BASE_PATH, and SAVE_TEXT is preserved as a file in that.

When BASE_PATH is omitted, 'base_path' of the configuration is used.

After the file is output, the passing is returned.

  my $output_path= $e->model('fsavedate')->save($text);

The exception is generated when failing in the file output.

create_dir_name ([TIME_VALUE])

The date is returned from TIME_VALUE as a receipt directory name.

create_file_name ([SAVE_TEXT])

The HEX value generated with Digest::SHA1 by SAVE_TEXT is returned as a file name.

create_body ([SAVE_TEXT])

It is a method for the processing of the preservation data and the return. Data is only returned as it is usually. Please do override from the controller when processing it.

SEE ALSO

Top

Egg::Release, Egg::Model::FsaveDate, Egg::Helper::Model::FsaveDate, File::Path, FileHandle,

AUTHOR

Top

Masatoshi Mizuno <lushe&64;cpan.org>

COPYRIGHT AND LICENSE

Top


Egg-Model-FsaveDate documentation Contained in the Egg-Model-FsaveDate distribution.

package Egg::Model::FsaveDate::Base;
#
# Masatoshi Mizuno E<lt>lusheE<64>cpan.orgE<gt>
#
# $Id: Base.pm 283 2008-02-27 05:27:43Z lushe $
#
use strict;
use warnings;
use Carp qw/ croak /;
use base qw/ Egg::Base /;
use File::Path;
use FileHandle;

our $VERSION= '0.01';

sub save {
	my $self= shift;
	my $body= shift || croak q{ I want save data. };
	my $c= $self->config || $self->config_to(qw/ Model FsaveDate /);
	my $base= shift ||
	   do { $c->{base_path} ||= $self->e->path_to(qw{ etc FsaveDate }) };
	my $path= "$base/". $self->create_dir_name( time );
	unless ( -e $path ) {
		my $count= $c->{amount_save} || 90;
		for my $dir (sort{$b cmp $a}(<$base/*>)) {  ## no critic.
			next if --$count> 0;
			rmtree($dir);
		}
		mkpath($path, 0, 0755);  ## no critic.
	}
	my $ext= $c->{extention} || 'txt'; $ext=~s{^\.+} [];
	my $fname= $self->create_file_name(\$body);
	my $output_path= "${path}/${fname}.${ext}";
	my $fh= FileHandle->new("> $output_path")
	     || die qq{ save error (${path}/${fname}.${ext}): $! };
	print $fh $self->create_body(\$body);
	$fh->close;
	$output_path;
}
sub create_dir_name {
	my $self= shift;
	my @t= localtime( shift || time );
	sprintf("%02d%02d", ($t[5]+ 1900), ++$t[4], $t[3]);
}
sub create_file_name {
	my($self, $body)= @_;
	require Digest::SHA1;
	Digest::SHA1::sha1_hex($$body);
}
sub create_body {
	my($self, $body)= @_;
	return $$body;
}

1;

__END__