Path::Resolver::Role::FileResolver - a resolver that natively finds absolute file paths


Path-Resolver documentation Contained in the Path-Resolver distribution.

Index


Code Index:

NAME

Top

Path::Resolver::Role::FileResolver - a resolver that natively finds absolute file paths

VERSION

Top

version 3.100451

SYNOPSIS

Top

The FileResolver role is a specialized form of the Resolver role, and can be used in its place. (Anything that does the FileResolver role automatically does the Resolver role, too.)

FileResolver classes have a native type of Path::Resolver::Types::AbsFilePath (from Path::Resolver::Types). Basically, they will natively return a Path::Class::File pointing to an absolute file path.

FileResolver classes also have a default converter that will convert the AbsFilePath to a Path::Resolver::SimpleEntity, meaning that by default a FileResolver's entity_at will return a SimpleEntity. This entity will be constructed by reading the file in raw mode. In other words, it is the byte string contents of the file, not any decoded character string. If you want to a Unicode string of a file's contents, you must decode it yourself.

AUTHOR

Top

Ricardo Signes <rjbs@cpan.org>

COPYRIGHT AND LICENSE

Top


Path-Resolver documentation Contained in the Path-Resolver distribution.

package Path::Resolver::Role::FileResolver;
BEGIN {
  $Path::Resolver::Role::FileResolver::VERSION = '3.100451';
}
# ABSTRACT: a resolver that natively finds absolute file paths
use Moose::Role;
with 'Path::Resolver::Role::Resolver' => { -excludes => 'default_converter' };

use autodie;
use namespace::autoclean;

use Path::Resolver::SimpleEntity;
use Path::Resolver::Types qw(AbsFilePath);
use Path::Resolver::CustomConverter;

use MooseX::Types;


sub native_type { AbsFilePath }

my $converter = Path::Resolver::CustomConverter->new({
  input_type  => AbsFilePath,
  output_type => class_type('Path::Resolver::SimpleEntity'),
  converter   => sub {
    my ($converter, $abs_path) = @_;

    open my $fh, '<:raw', "$abs_path";
    my $content = do { local $/; <$fh> };
    Path::Resolver::SimpleEntity->new({ content_ref => \$content });
  },
});

sub default_converter { $converter }

1;

__END__