comparison lib/IMPL/lang.pm @ 412:30e8c6a74937 ref20150831

working on di container (role based registrations)
author cin
date Mon, 21 Sep 2015 19:54:10 +0300
parents f7eeafbd33da
children bbc4739c4d48
comparison
equal deleted inserted replaced
411:ee36115f6a34 412:30e8c6a74937
15 qw( 15 qw(
16 &is 16 &is
17 &clone 17 &clone
18 &isclass 18 &isclass
19 &typeof 19 &typeof
20 &ishash
21 &isarray
20 ) 22 )
21 ], 23 ],
22 24
23 declare => [ 25 declare => [
24 qw( 26 qw(
63 65
64 our @EXPORT_OK = keys %{ { map (($_,1) , map (@{$_}, values %EXPORT_TAGS) ) } }; 66 our @EXPORT_OK = keys %{ { map (($_,1) , map (@{$_}, values %EXPORT_TAGS) ) } };
65 67
66 use IMPL::Const qw(:all); 68 use IMPL::Const qw(:all);
67 69
68 sub is($$) { 70 sub is {
69 carp "A typename can't be undefined" unless $_[1]; 71 carp "A typename can't be undefined" unless $_[1];
70 blessed($_[0]) and $_[0]->isa( $_[1] ); 72 blessed($_[0]) and $_[0]->isa( $_[1] );
71 } 73 }
72 74
73 sub isclass { 75 sub isclass {
75 local $@; 77 local $@;
76 eval {not ref $_[0] and $_[0]->isa( $_[1] ) }; 78 eval {not ref $_[0] and $_[0]->isa( $_[1] ) };
77 } 79 }
78 80
79 sub typeof(*) { 81 sub typeof(*) {
80 local $@; 82 blessed($_[0]);
81 eval { $_[0]->_typeof } || blessed($_[0]) || ref($_[0]); 83 }
84
85 sub isarray {
86 not blessed($_[0]) and ref $_[0] eq 'ARRAY';
87 }
88
89 sub ishash {
90 not blessed($_[0]) and ref $_[0] eq 'HASH';
82 } 91 }
83 92
84 sub public($) { 93 sub public($) {
85 my $info = shift; 94 my $info = shift;
86 $info->{access} = ACCESS_PUBLIC; 95 $info->{access} = ACCESS_PUBLIC;