Mojo::Path - パス
使い方
use Mojo::Path; # 解析 my $path = Mojo::Path->new('/foo%2Fbar%3B/baz.html'); say $path->[0]; # 構築 my $path = Mojo::Path->new('/i/♥'); push @$path, 'mojolicious'; say "$path";
説明
Mojo::PathはMojo::URLで利用される。URLのパスのコンテナです。
属性
Mojo::Pathは次の属性を実装しています。
charset
my $charset = $path->charset; $path = $path->charset('UTF-8');
エンコードとデコードに使う文字コード。デフォルトはUTF-8
です。
# エンコードとデコードを無効にする $path->charset(undef);
メソッド
Mojo::PathはMojo::Baseからすべてのメソッドを継承しており、 次のすべてのメソッドを実装しています。
canonicalize
$path = $path->canonicalize;
パスを正規化します。
# "/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;
clone
my $clone = $path->clone;
パスを複製し、新しいMojo::Pathオブジェクトを返します。
contains
my $bool = $path->contains('/i/♥/mojolicious');
パスが与えられたプレフィックスを含んでいるかどうかチェックします。
# 真 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);
パスは先頭にスラッシュを持ちます。 このメソッドはパスをノーマライズし、 %2F
はセキュリティ的な理由のために、 /
として扱われることに注意してください。
# "/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);
パスをマージします。 このメソッドはパスをノーマライズし、 %2F
はセキュリティ的な理由のために、 /
として扱われることに注意してください。
# "/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/bar%3B/baz.html');
新しいMojo::Pathオブジェクトを構築します。必要であれパスを解析します。
parse
$path = $path->parse('/foo/bar%3B/baz.html');
パスを解析します。
to_abs_string
my $str = $path->to_abs_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/]);
パスのパーツ。 このメソッドはパスをノーマライズし、 %2F
はセキュリティ的な理由のために、 /
として扱われることに注意してください。
# スラッシュつきの部分 push @{$path->parts}, 'foo/bar';
to_dir
my $dir = $route->to_dir;
パスを複製し、一番右のスラッシュの後のすべてを削除します。
# "/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;
パスをルートに変更します。
# "/i/♥/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;
パスを文字列に変換します。
# "/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);
パスは終わりにスラッシュを持ちます。 パスは先頭にスラッシュを持ちます。 このメソッドはパスをノーマライズし、 %2F
はセキュリティ的な理由のために、 /
として扱われることに注意してください。
# "/foo/bar/" Mojo::Path->new('/foo/bar')->trailing_slash(1); # "/foo/bar" Mojo::Path->new('/foo/bar/')->trailing_slash(0);
演算子
Mojo::Pathは次の演算子をオーバーロードしています。
配列
my @parts = @$path;
parts
のエイリアス。これはパスを正規化し、セキュリティ上の理由のために%2F
は/
として 扱われることに注意してください。
say $path->[0]; say for @$path;
真偽値
my $bool = !!$path;
いつでも真
文字列化
my $str = "$path";
to_string
のエイリアス。
参考
Mojolicious, Mojolicious::Guides, http://mojolicio.us.
(Mojolicious 8.12を反映。2019年5月23日更新)