From 9174cec546b4dba5821ce29a408feb860f49c244 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 8 Jul 2011 23:11:34 -0500 Subject: split rjbs engine out into its own dist --- lib/smartmatch/engine/rjbs.pm | 62 ------------------------------------------- 1 file changed, 62 deletions(-) delete mode 100644 lib/smartmatch/engine/rjbs.pm (limited to 'lib') diff --git a/lib/smartmatch/engine/rjbs.pm b/lib/smartmatch/engine/rjbs.pm deleted file mode 100644 index da40998..0000000 --- a/lib/smartmatch/engine/rjbs.pm +++ /dev/null @@ -1,62 +0,0 @@ -package smartmatch::engine::rjbs; -use strict; -use warnings; - -use overload (); -use Scalar::Util qw(blessed reftype); - -sub type { - my ($thing) = @_; - - if (!defined($thing)) { - return 'undef'; - } - elsif (!ref($thing)) { - return 'unknown non-ref'; - } - elsif (reftype($thing) eq 'REGEXP') { - return 'Regex'; - } - elsif (blessed($thing)) { - if (overload::Method($thing, '~~')) { - return 'Overloaded'; - } - elsif (overload::Method($thing, 'qr')) { - return 'Regex'; - } - else { - return 'unknown object'; - } - } - elsif (reftype($thing) eq 'CODE') { - return 'Code'; - } - else { - return 'unknown'; - } -} - -sub match { - my ($a, $b) = @_; - - if (type($b) eq 'undef') { - return !defined($a); - } - elsif (type($b) eq 'Overloaded') { - my $overload = overload::Method($b, '~~'); - return $b->$overload($a, 1); - } - elsif (type($b) eq 'Regex') { - return $a =~ $b; - } - elsif (type($b) eq 'Code') { - return $b->($a); - } - else { - $a //= 'undef'; - $b //= 'undef'; - die "invalid smart match: $a ~~ $b"; - } -} - -1; -- cgit v1.2.3-54-g00ecf