File Coverage

blib/lib/Path/Dispatcher/Path.pm
Criterion Covered Total %
statement 19 19 100.0
branch n/a
condition n/a
subroutine 7 7 100.0
pod 0 2 0.0
total 26 28 92.8


line stmt bran cond sub pod time code
1             package Path::Dispatcher::Path;
2             # ABSTRACT: path and some optional metadata
3              
4             our $VERSION = '1.07';
5              
6 32     32   244 use Moo;
  32         76  
  32         208  
7              
8 32     32   9863 use Types::Standard qw(Str HashRef);
  32         71  
  32         180  
9 32     32   18978 use overload q{""} => sub { shift->path };
  32     5   74  
  32         304  
  5         891  
10              
11             has path => (
12             is => 'ro',
13             isa => Str,
14             predicate => 'has_path',
15             );
16              
17             has metadata => (
18             is => 'ro',
19             isa => HashRef,
20             predicate => 'has_metadata',
21             );
22              
23             # allow Path::Dispatcher::Path->new($path)
24             around BUILDARGS => sub {
25             my $orig = shift;
26             my $self = shift;
27              
28             if (@_ == 1 && !ref($_[0])) {
29             unshift @_, 'path';
30             }
31              
32             $self->$orig(@_);
33             };
34              
35             sub clone_path {
36 201     201 0 318 my $self = shift;
37 201         293 my $path = shift;
38              
39 201         4500 return $self->new({ %$self, path => $path, @_ });
40             }
41              
42             sub get_metadata {
43 3     3 0 6 my $self = shift;
44 3         6 my $name = shift;
45              
46 3         13 return $self->metadata->{$name};
47             }
48              
49             __PACKAGE__->meta->make_immutable;
50 32     32   7272 no Moo;
  32         91  
  32         177  
51              
52             1;
53              
54             __END__