Your IP : 3.149.240.101
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;