factor this out into a private method
[gitmo/Moose.git] / lib / Class / MOP / Mixin / HasMethods.pm
index bfea578..aedd190 100644 (file)
@@ -208,6 +208,12 @@ sub _full_method_map {
 my $overload_operators;
 sub overload_operators {
     $overload_operators ||= [map { split /\s+/ } values %overload::ops];
+    return @$overload_operators;
+}
+
+sub is_overloaded {
+    my $self = shift;
+    return overload::Overloaded($self->name);
 }
 
 # XXX this could probably stand to be cached, but i figure it should be
@@ -215,11 +221,11 @@ sub overload_operators {
 sub _overload_map {
     my $self = shift;
 
-    return {} unless overload::Overloaded($self->name);
+    return {} unless $self->is_overloaded;
 
     my %map;
-    for my $op (@{ $self->overload_operators }) {
-        my $body = overload::Method($self->name, $op);
+    for my $op ($self->overload_operators) {
+        my $body = $self->_get_overloaded_operator_body($op);
         next unless defined $body;
         $map{$op} = $body;
     }
@@ -241,23 +247,29 @@ sub get_overloaded_operators {
 sub has_overloaded_operator {
     my $self = shift;
     my ($op) = @_;
-    return defined overload::Method($self->name, $op);
+    return defined $self->_get_overloaded_operator_body($op);
 }
 
 sub get_overloaded_operator {
     my $self = shift;
     my ($op) = @_;
-    my $body = overload::Method($self->name, $op);
+    my $body = $self->_get_overloaded_operator_body($op);
     return unless defined $body;
     return $self->_wrap_overload($op, $body);
 }
 
-sub add_overload {
+sub add_overloaded_operator {
     my $self = shift;
     my ($op, $body) = @_;
     $self->name->overload::OVERLOAD($op => $body);
 }
 
+sub _get_overloaded_operator_body {
+    my $self = shift;
+    my ($op) = @_;
+    return overload::Method($self->name, $op);
+}
+
 sub _wrap_overload {
     my $self = shift;
     my ($op, $body) = @_;