X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMouse.git;a=blobdiff_plain;f=lib%2FMouse%2FUtil.pm;h=625ed4eb4d07dff733e13c597efc69abcd59cbfd;hp=5b34083b8ad87439eb7bf62f0fe0c6ef2e323682;hb=577be3900a87552be0c16d354f2302ef7030cc2c;hpb=d8aea268546acbcb18c45b2cfbb9787b31d93cd7 diff --git a/lib/Mouse/Util.pm b/lib/Mouse/Util.pm index 5b34083..625ed4e 100644 --- a/lib/Mouse/Util.pm +++ b/lib/Mouse/Util.pm @@ -6,6 +6,8 @@ use base 'Exporter'; our %dependencies = ( 'Scalar::Util' => { + +# VVVVV CODE TAKEN FROM SCALAR::UTIL VVVVV 'blessed' => do { do { no strict 'refs'; @@ -69,8 +71,31 @@ our %dependencies = ( } : $t }, + 'openhandle' => sub { + my $fh = shift; + my $rt = reftype($fh) || ''; + + return defined(fileno($fh)) ? $fh : undef + if $rt eq 'IO'; + + if (reftype(\$fh) eq 'GLOB') { # handle openhandle(*DATA) + $fh = \(my $tmp=$fh); + } + elsif ($rt ne 'GLOB') { + return undef; + } + + (tied(*$fh) or defined(fileno($fh))) + ? $fh : undef; + }, + weaken => { + loaded => \&Scalar::Util::weaken, + not_loaded => sub { die "Scalar::Util required for weak reference support" }, + }, +# ^^^^^ CODE TAKEN FROM SCALAR::UTIL ^^^^^ }, 'MRO::Compat' => { +# VVVVV CODE TAKEN FROM MRO::COMPAT VVVVV 'get_linear_isa' => { loaded => \&mro::get_linear_isa, not_loaded => do { @@ -95,6 +120,7 @@ our %dependencies = ( } }, }, +# ^^^^^ CODE TAKEN FROM MRO::COMPAT ^^^^^ }, ); @@ -128,5 +154,6 @@ for my $module_name (keys %dependencies) { } } + 1;