summaryrefslogtreecommitdiff
path: root/fml/lib/FML/SequenceFile.pm
diff options
context:
space:
mode:
authorfukachan <fukachan>2001-02-20 15:03:55 +0000
committerfukachan <fukachan>2001-02-20 15:03:55 +0000
commita26eb812e065e82546a9c93bd9c721101ac59f69 (patch)
treef90fb35bbd487e07511c452561387976b619d362 /fml/lib/FML/SequenceFile.pm
parent60120edb4f3e83a82874a61b623d6c09e2978803 (diff)
downloadfml8-a26eb812e065e82546a9c93bd9c721101ac59f69.tar.gz
fml8-a26eb812e065e82546a9c93bd9c721101ac59f69.tar.bz2
fml8-a26eb812e065e82546a9c93bd9c721101ac59f69.zip
move FML::SequenceFile and Utils to File::
add File::Errors also to avoid errors
Diffstat (limited to 'fml/lib/FML/SequenceFile.pm')
-rw-r--r--fml/lib/FML/SequenceFile.pm140
1 files changed, 0 insertions, 140 deletions
diff --git a/fml/lib/FML/SequenceFile.pm b/fml/lib/FML/SequenceFile.pm
deleted file mode 100644
index a68457c1..00000000
--- a/fml/lib/FML/SequenceFile.pm
+++ /dev/null
@@ -1,140 +0,0 @@
-#-*- perl -*-
-#
-# Copyright (C) 2001 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.
-#
-# $Id$
-# $FML$
-#
-
-package FML::SequenceFile;
-use strict;
-use vars qw(@ISA @EXPORT @EXPORT_OK);
-use Carp;
-use FML::Errors qw(error_reason error error_reset);
-
-=head1 NAME
-
-FML::SequenceFile - maintain the sequence number
-
-=head1 SYNOPSIS
-
- use FML::SequenceFile;
- my $sfh = new FML::SequenceFile { sequence_file => $seq_file };
- my $id = $sfh->increment_id;
- if ($sfh->error) { use Carp; carp( $sfh->error ); }
-
-If you divide the $id by some modulus, use
-
- my $sfh = new FML::SequenceFile {
- sequence_file => $seq_file,
- modulus => $modules,
- };
- my $id = $sfh->increment_id;
-
-For example, if you do new() with modulus 3,
-
- my $sfh = new FML::SequenceFile {
- sequence_file => $seq_file,
- modulus => 3,
- };
-
-$id becomes 0, 1, 2, 0, 1, 2...
-
-=head1 DESCRIPTION
-
-=head2 C<new($args)>
-
-$args->{ sequence_file } is the file holding the current sequence number.
-
-=head2 C<increment_id([$file])>
-
-increment the sequence number.
-
-=cut
-
-require Exporter;
-@ISA = qw(Exporter);
-
-
-sub new
-{
- my ($self, $args) = @_;
- my ($type) = ref($self) || $self;
- my $me = {};
- $me->{ _sequence_file } = $args->{ sequence_file };
- $me->{ _modulus } = $args->{ modulus };
- return bless $me, $type;
-}
-
-
-sub increment_id
-{
- my ($self, $file) = @_;
- my $id = 0;
- my $seq_file = $file || $self->{ _sequence_file };
-
- unless ($seq_file) {
- $self->error_reason("the sequence file is not specified");
- return 0;
- };
-
- # touch the sequence file if it does not exist.
- unless (-f $seq_file) {
- use FML::Utils qw(touch);
- touch($seq_file);
- };
-
- use IO::File::Atomic;
- my ($rh, $wh) = IO::File::Atomic->rw_open($seq_file);
-
- # read the current sequence number
- if (defined $rh) {
- $id = $rh->getline;
- $rh->close;
- }
- else {
- $self->error_reason("cannot open the sequence file");
- return 0;
- }
-
- # compute the modulus
- if (defined $self->{ _modulus }) {
- my $modulus = $self->{ _modulus };
- $id++;
- $id = $id % $modulus;
- }
- # increment $id. The incremented number is the current article ID.
- else {
- $id++;
- }
-
- # save $id
- print $wh $id, "\n";
- $wh->close;
-
- $id;
-}
-
-
-=head1 AUTHOR
-
-Ken'ichi Fukamachi
-
-=head1 COPYRIGHT
-
-Copyright (C) 2001 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::SequenceFile appeared in fml5 mailing list driver package.
-See C<http://www.fml.org/> for more details.
-
-=cut
-
-
-1;