NAME
Mojo::Path - Path
SYNOPSIS
my $path = Mojo::Path->new( '/foo%2Fbar%3B/baz.html' );
say $path ->[0];
my $path = Mojo::Path->new( '/i/♥' );
push @$path , 'mojolicious' ;
say "$path" ;
|
DESCRIPTION
Mojo::Path is a container for paths used by Mojo::URL, based on RFC 3986.
ATTRIBUTES
Mojo::Path implements the following attributes.
charset
my $charset = $path ->charset;
$path = $path ->charset( 'UTF-8' );
|
Charset used for encoding and decoding, defaults to UTF-8
.
METHODS
Mojo::Path inherits all methods from Mojo::Base and implements the following new ones.
canonicalize
$path = $path ->canonicalize;
|
Canonicalize path by resolving .
and ..
, in addition ...
will be treated as .
to protect from path traversal attacks.
Mojo::Path->new( '/foo/./bar/../baz' )->canonicalize;
Mojo::Path->new( '/foo/../bar/../../baz' )->canonicalize;
Mojo::Path->new( '/foo/.../bar' )->canonicalize;
|
clone
my $clone = $path ->clone;
|
Return a new Mojo::Path object cloned from this path.
contains
my $bool = $path ->contains( '/i/♥/mojolicious' );
|
Check if path contains given prefix.
Mojo::Path->new( '/foo/bar' )->contains( '/' );
Mojo::Path->new( '/foo/bar' )->contains( '/foo' );
Mojo::Path->new( '/foo/bar' )->contains( '/foo/bar' );
Mojo::Path->new( '/foo/bar' )->contains( '/f' );
Mojo::Path->new( '/foo/bar' )->contains( '/bar' );
Mojo::Path->new( '/foo/bar' )->contains( '/whatever' );
|
leading_slash
my $bool = $path ->leading_slash;
$path = $path ->leading_slash( $bool );
|
Path has a leading slash. Note that this method will normalize the path and that %2F
will be treated as /
for security reasons.
Mojo::Path->new( 'foo/bar' )->leading_slash(1);
Mojo::Path->new( '/foo/bar' )->leading_slash(0);
|
merge
$path = $path ->merge( '/foo/bar' );
$path = $path ->merge( 'foo/bar' );
$path = $path ->merge(Mojo::Path->new);
|
Merge paths. Note that this method will normalize both paths if necessary and that %2F
will be treated as /
for security reasons.
Mojo::Path->new( '/foo/bar' )->merge( '/baz/yada' );
Mojo::Path->new( '/foo/bar' )->merge( 'baz/yada' );
Mojo::Path->new( '/foo/bar/' )->merge( 'baz/yada' );
|
new
my $path = Mojo::Path->new;
my $path = Mojo::Path->new( '/foo%2Fbar%3B/baz.html' );
|
Construct a new Mojo::Path object and "parse" path if necessary.
parse
$path = $path ->parse( '/foo%2Fbar%3B/baz.html' );
|
Parse path.
to_abs_string
my $str = $path ->to_abs_string;
|
Turn path into an absolute string.
Mojo::Path->new( '/i/%E2%99%A5/mojolicious' )->to_abs_string;
Mojo::Path->new( 'i/%E2%99%A5/mojolicious' )->to_abs_string;
|
parts
my $parts = $path ->parts;
$path = $path ->parts([ qw(foo bar baz) ]);
|
The path parts. Note that this method will normalize the path and that %2F
will be treated as /
for security reasons.
push @{ $path ->parts}, 'foo/bar' ;
|
to_dir
my $dir = $route ->to_dir;
|
Clone path and remove everything after the right-most slash.
Mojo::Path->new( '/i/%E2%99%A5/mojolicious' )->to_dir->to_abs_string;
Mojo::Path->new( 'i/%E2%99%A5/mojolicious' )->to_dir->to_abs_string;
|
to_route
my $route = $path ->to_route;
|
Turn path into a route.
Mojo::Path->new( '/i/%E2%99%A5/mojolicious' )->to_route;
Mojo::Path->new( 'i/%E2%99%A5/mojolicious' )->to_route;
|
to_string
my $str = $path ->to_string;
|
Turn path into a string.
Mojo::Path->new( '/i/%E2%99%A5/mojolicious' )->to_string;
Mojo::Path->new( 'i/%E2%99%A5/mojolicious' )->to_string;
|
trailing_slash
my $bool = $path ->trailing_slash;
$path = $path ->trailing_slash( $bool );
|
Path has a trailing slash. Note that this method will normalize the path and that %2F
will be treated as /
for security reasons.
Mojo::Path->new( '/foo/bar' )->trailing_slash(1);
Mojo::Path->new( '/foo/bar/' )->trailing_slash(0);
|
OPERATORS
Mojo::Path overloads the following operators.
array
Alias for "parts". Note that this will normalize the path and that %2F
will be treated as /
for security reasons.
say $path ->[0];
say for @$path ;
|
bool
Always true.
stringify
Alias for "to_string".
SEE ALSO
Mojolicious, Mojolicious::Guides, https://mojolicious.org.