revbank/lib/RevBank/Global.pm
Juerd Waalboer 3470ebeb1c Explicitly use Perl 5.32
Was already implicitly required (since 59387ddb) because RevBank::Amount
uses the "isa" feature, which was introduced in Perl 5.32 (but no longer
experimental since 5.36, not 5.32 as the old comment said).

Perl 5.32 was released in June 2020, and ships with Debian bullseye
("oldstable") which was released in August 2021.
2023-12-12 00:28:17 +01:00

53 lines
1.6 KiB
Perl

package RevBank::Global;
use v5.32;
use warnings;
use experimental 'signatures'; # stable since v5.36
use POSIX qw(strftime);
use RevBank::Amount;
use RevBank::FileIO;
sub import {
require RevBank::Plugins;
require RevBank::Users;
no strict 'refs';
my $caller = caller;
*{"$caller\::ACCEPT"} = sub () { \1 };
*{"$caller\::ABORT"} = sub () { \2 };
*{"$caller\::REJECT"} = sub () { \3 };
*{"$caller\::NEXT"} = sub () { \4 };
*{"$caller\::DONE"} = sub () { \5 };
*{"$caller\::REDO"} = sub () { \6 };
*{"$caller\::slurp"} = \&RevBank::FileIO::slurp;
*{"$caller\::spurt"} = \&RevBank::FileIO::spurt;
*{"$caller\::rewrite"} = \&RevBank::FileIO::rewrite;
*{"$caller\::append"} = \&RevBank::FileIO::append;
*{"$caller\::with_lock"} = \&RevBank::FileIO::with_lock;
*{"$caller\::parse_user"} = \&RevBank::Users::parse_user;
*{"$caller\::parse_amount"} = sub ($amount) {
defined $amount or return undef;
length $amount or return undef;
$amount = RevBank::Amount->parse_string($amount) // return undef;
if ($amount->cents < 0) {
die "For our sanity, no negative amounts, please :).\n";
}
if ($amount->cents > 99900) {
die "That's way too much money.\n";
}
return $amount;
};
*{"$caller\::call_hooks"} = \&RevBank::Plugins::call_hooks;
*{"$caller\::say"} = sub {
print @_, "\n";
};
*{"$caller\::now"} = sub () {
return strftime '%Y-%m-%d_%H:%M:%S', localtime;
};
}
__PACKAGE__->import;
1;