1package Data::Dump::FilterContext; 2 3sub new { 4 my($class, $obj, $oclass, $type, $ref, $pclass, $pidx, $idx) = @_; 5 return bless { 6 object => $obj, 7 class => $ref && $oclass, 8 reftype => $type, 9 is_ref => $ref, 10 pclass => $pclass, 11 pidx => $pidx, 12 idx => $idx, 13 }, $class; 14} 15 16sub object_ref { 17 my $self = shift; 18 return $self->{object}; 19} 20 21sub class { 22 my $self = shift; 23 return $self->{class} || ""; 24} 25 26*is_blessed = \&class; 27 28sub reftype { 29 my $self = shift; 30 return $self->{reftype}; 31} 32 33sub is_scalar { 34 my $self = shift; 35 return $self->{reftype} eq "SCALAR"; 36} 37 38sub is_array { 39 my $self = shift; 40 return $self->{reftype} eq "ARRAY"; 41} 42 43sub is_hash { 44 my $self = shift; 45 return $self->{reftype} eq "HASH"; 46} 47 48sub is_code { 49 my $self = shift; 50 return $self->{reftype} eq "CODE"; 51} 52 53sub is_ref { 54 my $self = shift; 55 return $self->{is_ref}; 56} 57 58sub container_class { 59 my $self = shift; 60 return $self->{pclass} || ""; 61} 62 63sub container_self { 64 my $self = shift; 65 return "" unless $self->{pclass}; 66 my $idx = $self->{idx}; 67 my $pidx = $self->{pidx}; 68 return Data::Dump::fullname("self", [@$idx[$pidx..(@$idx - 1)]]); 69} 70 71sub object_isa { 72 my($self, $class) = @_; 73 return $self->{class} && $self->{class}->isa($class); 74} 75 76sub container_isa { 77 my($self, $class) = @_; 78 return $self->{pclass} && $self->{pclass}->isa($class); 79} 80 81sub depth { 82 my $self = shift; 83 return scalar @{$self->{idx}}; 84} 85 861; 87