TPath-Forester-File

 view release on metacpan or  search on metacpan

lib/TPath/Forester/File/Node.pm  view on Meta::CPAN

);
has is_link => (
    is      => 'ro',
    isa     => 'Bool',
    lazy    => 1,
    default => sub {
        my $self = shift;
        return unless $self->real;
        return -l $self;
    },
);
has is_binary => (
    is      => 'ro',
    isa     => 'Bool',
    lazy    => 1,
    default => sub {
        my $self = shift;
        return unless $self->real;
        return -B $self;
    },
);
has is_text => (
    is      => 'ro',
    isa     => 'Bool',
    lazy    => 1,
    default => sub {
        my $self = shift;
        return unless $self->real;
        return -T $self;
    },
);
has is_empty => (
    is      => 'ro',
    isa     => 'Bool',
    lazy    => 1,
    default => sub {
        my $self = shift;
        return unless $self->real;
        return $self->size == 0;
    }
);
has not_empty => (
    is      => 'ro',
    isa     => 'Bool',
    lazy    => 1,
    default => sub {
        my $self = shift;
        return unless $self->real;
        return !$self->is_empty;
    }
);


has user => ( is => 'ro', isa => 'Str', lazy => 1, builder => '_user' );

# memoized uid -> user converter
sub _user {
    my $self = shift;
    state %map;
    my $uid = $self->uid;
    my $user = $map{$uid} //= getpwuid($uid);
    return $user;
}


has group => ( is => 'ro', isa => 'Str', lazy => 1, builder => '_group' );

# memoized gid -> group converter
sub _group {
    my $self = shift;
    state %map;
    my $gid = $self->gid;
    my $group = $map{$gid} //= getgrgid($gid);
    return $group;
}


has is_root => (
    is      => 'ro',
    isa     => 'Bool',
    lazy    => 1,
    default => sub {
        my $self = shift;
        return unless $self->real;
        return !defined $self->parent;
    }
);

has can_read => (
    is      => 'ro',
    isa     => 'Bool',
    lazy    => 1,
    default => sub { stat_cando( shift->stats, Fcntl::S_IRUSR, 1 ) }
);

has can_truly_read => (
    is      => 'ro',
    isa     => 'Bool',
    lazy    => 1,
    builder => '_can_truly_read',
);

sub _can_truly_read {
    my $self = shift;
    use filetest 'access';
    return -r $self;
}

has can_write => (
    is      => 'ro',
    isa     => 'Bool',
    lazy    => 1,
    default => sub { stat_cando( shift->stats, Fcntl::S_IWUSR, 1 ) }
);

has can_truly_write => (
    is      => 'ro',
    isa     => 'Bool',
    lazy    => 1,
    builder => '_can_truly_write'
);



( run in 1.816 second using v1.01-cache-2.11-cpan-7f9471e7e0a )