|
NAMEMojo::Path - Path SYNOPSIS use Mojo::Path;
# Parse
my $path = Mojo::Path->new('/foo%2Fbar%3B/baz.html');
say $path->[0];
# Build
my $path = Mojo::Path->new('/i/♥');
push @$path, 'mojolicious';
say "$path";
DESCRIPTIONMojo::Path is a container for paths used by Mojo::URL, based on RFC 3986 <https://tools.ietf.org/html/rfc3986>. ATTRIBUTESMojo::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". # Disable encoding and decoding $path->charset(undef); METHODSMojo::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. # "/foo/baz"
Mojo::Path->new('/foo/./bar/../baz')->canonicalize;
# "/../baz"
Mojo::Path->new('/foo/../bar/../../baz')->canonicalize;
# "/foo/bar"
Mojo::Path->new('/foo/.../bar')->canonicalize;
clonemy $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. # 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');
leading_slashmy $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. # "/foo/bar"
Mojo::Path->new('foo/bar')->leading_slash(1);
# "foo/bar"
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. # "/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');
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_stringmy $str = $path->to_abs_string; Turn path into an absolute string. # "/i/%E2%99%A5/mojolicious"
Mojo::Path->new('/i/%E2%99%A5/mojolicious')->to_abs_string;
Mojo::Path->new('i/%E2%99%A5/mojolicious')->to_abs_string;
partsmy $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. # Part with slash
push @{$path->parts}, 'foo/bar';
to_dirmy $dir = $route->to_dir; Clone path and remove everything after the right-most slash. # "/i/%E2%99%A5/"
Mojo::Path->new('/i/%E2%99%A5/mojolicious')->to_dir->to_abs_string;
# "i/%E2%99%A5/"
Mojo::Path->new('i/%E2%99%A5/mojolicious')->to_dir->to_abs_string;
to_routemy $route = $path->to_route; Turn path into a route. # "/i/♥/mojolicious"
Mojo::Path->new('/i/%E2%99%A5/mojolicious')->to_route;
Mojo::Path->new('i/%E2%99%A5/mojolicious')->to_route;
to_stringmy $str = $path->to_string; Turn path into a string. # "/i/%E2%99%A5/mojolicious"
Mojo::Path->new('/i/%E2%99%A5/mojolicious')->to_string;
# "i/%E2%99%A5/mojolicious"
Mojo::Path->new('i/%E2%99%A5/mojolicious')->to_string;
trailing_slashmy $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. # "/foo/bar/"
Mojo::Path->new('/foo/bar')->trailing_slash(1);
# "/foo/bar"
Mojo::Path->new('/foo/bar/')->trailing_slash(0);
OPERATORSMojo::Path overloads the following operators. arraymy @parts = @$path; 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; boolmy $bool = !!$path; Always true. stringifymy $str = "$path"; Alias for "to_string". SEE ALSOMojolicious, Mojolicious::Guides, <https://mojolicious.org>.
|