[SCM] Debian package checker branch, master, updated. 2.5.13-41-g5ac5f5d
The following commit has been merged in the master branch:
commit 8d6618df0e512b7d508879d2d8cf1362a1c3c77a
Author: Niels Thykier <niels@thykier.net>
Date: Sun Jun 23 12:52:51 2013 +0200
L::Path: Overload some operators
Signed-off-by: Niels Thykier <niels@thykier.net>
diff --git a/debian/changelog b/debian/changelog
index 0cf5481..93fc542 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -47,6 +47,8 @@ lintian (2.5.14) UNRELEASED; urgency=low
checks without the extension (with a deprecation warning).
* lib/Lintian/{Path,Util}.pm:
+ [NT] Remove deprecated methods.
+ * lib/Lintian/Path.pm:
+ + [NT] Overload some operators.
* reporting/config:
+ [NT] Replace /org with /srv.
diff --git a/lib/Lintian/Path.pm b/lib/Lintian/Path.pm
index d5f837d..56cac0a 100644
--- a/lib/Lintian/Path.pm
+++ b/lib/Lintian/Path.pm
@@ -20,8 +20,18 @@ package Lintian::Path;
use strict;
use warnings;
-
use parent qw(Class::Accessor);
+use overload (
+ '""' => \&_as_string,
+ 'qr' => \&_as_regex_ref,
+ 'bool' => \&_bool,
+ '!' => \&_bool_not,
+ '.' => \&_str_concat,
+ 'cmp' => \&_str_cmp,
+ 'eq' => \&_str_eq,
+ 'ne' => \&_str_ne,
+ 'fallback' => 0,
+);
use Carp qw(croak);
@@ -262,6 +272,54 @@ sub link_normalized {
return $target;
}
+### OVERLOADED OVERATORS ###
+
+# overload apparently does not like the mk_ro_accessor, so use a level
+# of indirection
+
+sub _as_regex_ref {
+ my ($self) = @_;
+ my $name = $self->name;
+ return qr{ \Q $name \E }xsm;
+}
+
+sub _as_string {
+ my ($self) = @_;
+ return $self->name;
+}
+
+sub _bool {
+ # Always true (used in "if ($info->index('some/path')) {...}")
+ return 1;
+}
+
+sub _bool_not {
+ my ($self) = @_;
+ return !$self->_bool;
+}
+
+sub _str_cmp {
+ my ($self, $str, $swap) = @_;
+ return $str cmp $self->name if $swap;
+ return $self->name cmp $str;
+}
+
+sub _str_concat {
+ my ($self, $str, $swap) = @_;
+ return $str . $self->name if $swap;
+ return $self->name . $str;
+}
+
+sub _str_eq {
+ my ($self, $str) = @_;
+ return $self->name eq $str;
+}
+
+sub _str_ne {
+ my ($self, $str) = @_;
+ return $self->name ne $str;
+}
+
=back
=head1 AUTHOR
--
Debian package checker
Reply to: