Koha/C4/Bull.pm
2004-07-30 14:01:48 +00:00

191 lines
4.5 KiB
Perl
Executable file

package C4::Bull; #assumes C4/Bull.pm
# Copyright 2000-2002 Katipo Communications
#
# This file is part of Koha.
#
# Koha is free software; you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with
# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
# Suite 330, Boston, MA 02111-1307 USA
use strict;
require Exporter;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
# set the version for version checking
$VERSION = 0.01;
=head1 NAME
C4::Bull - Give functions for serializing.
=head1 SYNOPSIS
use C4::Bull;
=head1 DESCRIPTION
Give all XYZ functions
=cut
@ISA = qw(Exporter);
@EXPORT = qw(&Initialize_Sequence &Find_Next_Date, &Get_Next_Seq);
# FIXME - Retirer ce FIXME il ne sert pas.
sub GetValue(@) {
my $seq = shift;
my $X = shift;
my $Y = shift;
my $Z = shift;
return $X if ($seq eq 'X');
return $Y if ($seq eq 'Y');
return $Z if ($seq eq 'Z');
return "5 Syntax Error in Sequence";
}
sub Initialize_Sequence(@) {
my $sequence = shift;
my $X = shift;
my $Xstate = shift;
my $Xfreq = shift;
my $Xstep = shift;
my $Y = shift;
my $Ystate = shift;
my $Yfreq = shift;
my $Ystep = shift;
my $Z = shift;
my $Zstate = shift;
my $Zfreq = shift;
my $Zstep = shift;
my $finalstring = "";
my @string = split //, $sequence;
my $etat = 0;
for (my $i = 0; $i < (scalar @string); $i++)
{
if ($string[$i] ne '{')
{
if (!$etat)
{
$finalstring .= $string[$i];
}
else
{
return "1 Syntax Error in Sequence";
}
}
else
{
# if ($string[$i + 1] eq '\'')
# {
# return "2 Syntax Error in Sequence"
# if ($string[$i + 2] ne 'X' && $string[$i + 2] ne 'Y' && $string[$i + 2] ne 'Z');
# $finalstring .= GetValueAsc($string[$i + 2], $X, $Y, $Z);
# $i += 3;
# }
# else
# {
return "3 Syntax Error in Sequence"
if ($string[$i + 1] ne 'X' && $string[$i + 1] ne 'Y' && $string[$i + 1] ne 'Z');
$finalstring .= GetValue($string[$i + 1], $X, $Y, $Z);
$i += 2;
# }
}
}
return "$finalstring";
}
sub Find_Next_Date(@) {
return "2004-29-03";
}
sub Step(@) {
my $X = shift;
my $Xstate = shift;
my $Xfreq = shift;
my $Xstep = shift;
my $Y = shift;
my $Ystate = shift;
my $Yfreq = shift;
my $Ystep = shift;
my $Z = shift;
my $Zstate = shift;
my $Zfreq = shift;
my $Zstep = shift;
my $Xpos = shift;
my $Ypos = shift;
my $Zpos = shift;
$X += $Xstep if ($Xstate == 1);
if ($Xstate == 2) { $Xpos += 1; if ($Xpos >= $Xfreq) {
$Xpos = 0; $X += $Xstep; } }
$Y += $Ystep if ($Ystate == 1);
if ($Ystate == 2) { $Ypos += 1; if ($Ypos >= $Yfreq) {
$Ypos = 0; $Y += $Ystep; } }
$Z += $Zstep if ($Zstate == 1);
if ($Zstate == 2) { $Zpos += 1; if ($Zpos >= $Zfreq) {
$Zpos = 0; $Z += $Zstep; } }
# $Y += $Ystep; if ($Ystate == 1);
# if ($Ystate == 2) { $Ypos += 1; if ($Ypos >= $Yfreq) {
#$Ypos = 0; $Y += $Ystep; } }
# $Z += $Zstep; if ($Zstate == 1);
# if ($Zstate == 2) { $Zpos += 1; if ($Zpos >= $Zfreq) {
# $Zpos = 0; $Z += $Zstep; } }
return ($X, $Y, $Z, $Xpos, $Ypos, $Zpos);
}
sub Get_Next_Seq(@) {
my $sequence = shift;
my $X = shift;
my $Xfreq = shift;
my $Xstep = shift;
my $Xstate = shift;
my $Y = shift;
my $Yfreq = shift;
my $Ystep = shift;
my $Ystate = shift;
my $Z = shift;
my $Zfreq = shift;
my $Zstep = shift;
my $Zstate = shift;
my $Xpos = shift;
my $Ypos = shift;
my $Zpos = shift;
return ("$sequence", $X, $Y, $Z)
if (!defined($X) && !defined($Y) && !defined($Z));
($X, $Y, $Z, $Xpos, $Ypos, $Zpos) =
Step($X, $Xstate, $Xfreq, $Xstep, $Y, $Ystate, $Yfreq,
$Ystep, $Z, $Zstate, $Zfreq, $Zstep, $Xpos, $Ypos, $Zpos);
return (Initialize_Sequence($sequence, $X, $Xstate,
$Xfreq, $Xstep, $Y, $Ystate, $Yfreq,
$Ystep, $Z, $Zstate, $Zfreq, $Zstep),
$X, $Y, $Z, $Xpos, $Ypos, $Zpos);
}
END { } # module clean-up code here (global destructor)