[Koha-bugs] [Bug 29746] Add a handy Koha::Result::Boolean class
bugzilla-daemon at bugs.koha-community.org
bugzilla-daemon at bugs.koha-community.org
Thu Dec 23 13:45:35 CET 2021
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=29746
Tomás Cohen Arazi <tomascohen at gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |katrin.fischer at bsz-bw.de
--- Comment #7 from Tomás Cohen Arazi <tomascohen at gmail.com> ---
I've just renamed the class because this is not an attempt to introduce
booleans in Perl :-D but a way to have a consistent way to return values and
have them evaluated in the core codebase.
I will pick a real-life example to highlight how it can be useful:
CanItemBeReserved.
This method is called like this:
C4/Circulation.pm:
@items = grep { CanItemBeReserved( ... )->{status} eq 'OK' } @items;
In this case, the reason why it is not holdable doesn't really care. We are
comparing to an arbitrary string that represents a boolean value (to be fair,
OK is the obvious pick :-D, but the ->{status} bit could vary from one
implementation to another).
If it used this library as a return value, we would only evaluate the result in
a boolean context:
@items = grep { CanItemBeReserved( ... ) } @items;
And if we wanted to know 'why', we could do:
my $result_object = CanItemBeReserved( ... );
and then have a consistent way for this method and all other methods that need
to return extra info:
if ( !$result_object ) {
foreach my $message ( @{$result_object->messages} ) {
$template->param( do_your_thingy );
}
}
Please feel free to comment about this and add your thoughts. As this return
value has its own class instead of what we did before, we could do things like:
- implement a to_api() method that makes it render in a suitable way, have it
embed the messages, etc. I can see how it can be useful.
- some other caller contexts could be considered. for instance, some methods we
have return, in list context, a boolean (the result) and a payload with extra
info. We could make this class do the same, for an easy transition of legacy
code.
--
You are receiving this mail because:
You are watching all bug changes.
More information about the Koha-bugs
mailing list