
Mojo::Path - Path

use Mojo::Path;
my $path = Mojo::Path->new('/foo%2Fbar%3B/baz.html');
shift @{$path->parts};
say $path;

Mojo::Path is a container for URL paths.

Mojo::Path implements the following attributes.
leading_slashmy $leading_slash = $path->leading_slash; $path = $path->leading_slash(1);
Path has a leading slash.
partsmy $parts = $path->parts; $path = $path->parts([qw(foo bar baz)]);
The path parts.
# Part with slash
push @{$path->parts}, 'foo/bar';
trailing_slashmy $trailing_slash = $path->trailing_slash; $path = $path->trailing_slash(1);
Path has a trailing slash.

Mojo::Path inherits all methods from Mojo::Base and implements the following new ones.
new my $path = Mojo::Path->new;
my $path = Mojo::Path->new('/foo%2Fbar%3B/baz.html');
Construct a new Mojo::Path object.
canonicalize$path = $path->canonicalize;
Canonicalize path.
# "/foo/baz"
Mojo::Path->new('/foo/bar/../baz')->canonicalize;
clonemy $clone = $path->clone;
Clone path.
contains my $success = $path->contains('/foo');
Check if path contains given prefix.
# True
Mojo::Path->new('/foo/bar')->contains('/');
Mojo::Path->new('/foo/bar')->contains('/foo');
Mojo::Path->new('/foo/bar')->contains('/foo/bar');
# False
Mojo::Path->new('/foo/bar')->contains('/f');
Mojo::Path->new('/foo/bar')->contains('/bar');
Mojo::Path->new('/foo/bar')->contains('/whatever');
merge $path = $path->merge('/foo/bar');
$path = $path->merge('foo/bar');
$path = $path->merge(Mojo::Path->new('foo/bar'));
Merge paths.
# "/baz/yada"
Mojo::Path->new('/foo/bar')->merge('/baz/yada');
# "/foo/baz/yada"
Mojo::Path->new('/foo/bar')->merge('baz/yada');
# "/foo/bar/baz/yada"
Mojo::Path->new('/foo/bar/')->merge('baz/yada');
parse $path = $path->parse('/foo%2Fbar%3B/baz.html');
Parse path. Note that %2F will be treated as / for security reasons.
to_abs_stringmy $string = $path->to_abs_string;
Turn path into an absolute string.
to_stringmy $string = $path->to_string;
Turn path into a string.
