관리-도구
편집 파일: FilterContext.pm
package Data::Dump::FilterContext; sub new { my($class, $obj, $oclass, $type, $ref, $pclass, $pidx, $idx) = @_; return bless { object => $obj, class => $ref && $oclass, reftype => $type, is_ref => $ref, pclass => $pclass, pidx => $pidx, idx => $idx, }, $class; } sub object_ref { my $self = shift; return $self->{object}; } sub class { my $self = shift; return $self->{class} || ""; } *is_blessed = \&class; sub reftype { my $self = shift; return $self->{reftype}; } sub is_scalar { my $self = shift; return $self->{reftype} eq "SCALAR"; } sub is_array { my $self = shift; return $self->{reftype} eq "ARRAY"; } sub is_hash { my $self = shift; return $self->{reftype} eq "HASH"; } sub is_code { my $self = shift; return $self->{reftype} eq "CODE"; } sub is_ref { my $self = shift; return $self->{is_ref}; } sub container_class { my $self = shift; return $self->{pclass} || ""; } sub container_self { my $self = shift; return "" unless $self->{pclass}; my $idx = $self->{idx}; my $pidx = $self->{pidx}; return Data::Dump::fullname("self", [@$idx[$pidx..(@$idx - 1)]]); } sub expr { my $self = shift; my $top = shift || "var"; $top =~ s/^\$//; # it's always added by fullname() my $idx = $self->{idx}; return Data::Dump::fullname($top, $idx); } sub object_isa { my($self, $class) = @_; return $self->{class} && $self->{class}->isa($class); } sub container_isa { my($self, $class) = @_; return $self->{pclass} && $self->{pclass}->isa($class); } sub depth { my $self = shift; return scalar @{$self->{idx}}; } 1;