Provided by: libmojolicious-perl_4.63+dfsg-1_all
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; # "/../baz" Mojo::Path->new('/foo/../bar/../../baz')->canonicalize; clone my $clone = $path->clone; Clone path. contains my $bool = $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 $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. 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 $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; 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 $str = $path->to_string; my $str = "$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 $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.
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>.