NAME¶
Mojo::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/X');
push @$path, 'mojolicious';
say "$path";
DESCRIPTION¶
Mojo::Path is a container for paths used by Mojo::URL.
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".
# Disable encoding and decoding
$path->charset(undef);
METHODS¶
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 and "parse" path if necessary.
canonicalize¶
$path = $path->canonicalize;
Canonicalize path.
# "/foo/baz"
Mojo::Path->new('/foo/./bar/../baz')->canonicalize;
clone¶
my $clone = $path->clone;
Clone path.
contains¶
my $success = $path->contains('/i/X/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_slash¶
my $slash = $path->leading_slash;
$path = $path->leading_slash(1);
Path has a leading slash. Note that this method will normalize the path and that
%2F will be treated as "/" for security reasons.
merge¶
$path = $path->merge('/foo/bar');
$path = $path->merge('foo/bar');
$path = $path->merge(Mojo::Path->new('foo/bar'));
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');
parse¶
$path = $path->parse('/foo%2Fbar%3B/baz.html');
Parse path.
to_abs_string¶
my $string = $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;
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.
# Part with slash
push @{$path->parts}, 'foo/bar';
to_dir¶
my $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_route¶
my $route = $path->to_route;
Turn path into a route.
# "/i/X/mojolicious"
Mojo::Path->new('/i/%E2%99%A5/mojolicious')->to_route;
Mojo::Path->new('i/%E2%99%A5/mojolicious')->to_route;
to_string¶
my $string = $path->to_string;
my $string = "$path";
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_slash¶
my $slash = $path->trailing_slash;
$path = $path->trailing_slash(1);
Path has a trailing slash. Note that this method will normalize the path and
that %2F will be treated as "/" for security reasons.
PATH PARTS¶
Direct array reference access to path parts is also possible. Note that this
will normalize the path and that %2F will be treated as "/" for
security reasons.
say $path->[0];
say for @$path;
SEE ALSO¶
Mojolicious, Mojolicious::Guides, <
http://mojolicio.us>.