Mercurial > pub > Impl
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; |