X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMouse.git;a=blobdiff_plain;f=lib%2FMouse.pm;h=4731125524869b07aa88eea31c3dd8aaff376f62;hp=2743341a30aa09beada7423bb35d8325221bb05f;hb=abfdffe0146e788b3b808398fb075231163c3948;hpb=67fb42e0ee9e0d69d84de9908acfe34ef2c8fb49 diff --git a/lib/Mouse.pm b/lib/Mouse.pm index 2743341..4731125 100644 --- a/lib/Mouse.pm +++ b/lib/Mouse.pm @@ -4,7 +4,7 @@ use warnings; use 5.006; use base 'Exporter'; -our $VERSION = '0.16'; +our $VERSION = '0.18'; BEGIN { if ($ENV{MOUSE_DEBUG}) { @@ -32,13 +32,25 @@ sub has { my $names = shift; $names = [$names] if !ref($names); + my $metaclass = 'Mouse::Meta::Attribute'; + my %options = @_; + + if ( my $metaclass_name = delete $options{metaclass} ) { + my $new_class = Mouse::Util::resolve_metaclass_alias( + 'Attribute', + $metaclass_name + ); + if ( $metaclass ne $new_class ) { + $metaclass = $new_class; + } + } for my $name (@$names) { if ($name =~ s/^\+//) { - Mouse::Meta::Attribute->clone_parent($meta, $name, @_); + $metaclass->clone_parent($meta, $name, @_); } else { - Mouse::Meta::Attribute->create($meta, $name, @_); + $metaclass->create($meta, $name, @_); } } }