MORIYA Masaki (守屋 雅樹)
and 1 contributors

NAME / 名称

MooseX::Types::Moose::MutualCoercion::JA - (ja) Mooseの一般的な型制約のための相互型変換

バージョン

この文書はMooseX::Types::Moose::MutualCoercionのバージョン0.04について記述しています。

概要

    {
        package Foo;
        use Moose;
        use MooseX::Types::Moose::MutualCoercion
            qw(StrToArrayRef ArrayRefToHashKeys);
        has 'thingies' =>
            (is => 'rw', isa => StrToArrayRef, coerce => 1);
        has 'lookup_table' =>
            (is => 'rw', isa => ArrayRefToHashKeys, coerce => 1);
        1;
    }

    my $foo = Foo->new( thingies => 'bar' );
    print $foo->thingies->[0];                              # 'bar'

    $foo->lookup_table( [qw(baz qux)] );
    print 'eureka!'                                         # 'eureka!'
        if grep {
            exists $foo->lookup_table->{$_};
        } qw(foo bar baz);

翻訳

MooseX::Types::Moose::MutualCoercionの文書の大部分は他の言語に翻訳されています。

en: 英語

MooseX::Types::Moose::MutualCoercion

ja: 日本語

MooseX::Types::Moose::MutualCoercion::JA (この文書)

解説

このモジュールは型変換付きのいくつかのMoose::Util::TypeConstraints型制約をまとめたものです。 Mooseでよく知られている組み込みおよび一般的な型を相互に型変換するために設計されています。

型制約と型変換

: これらの型制約はデフォルトでは何もエクスポートされません。 以下のようにインポートリストを使ってインポートしてください:

    use MooseX::Types::Moose::MutualCoercion qw(NumToInt ScalarRefToStr);

Int

NumToInt

Intのサブタイプです。 coerceを有効にした場合、Numは整数になります。 例えば、3.143に変換されます。

Str

ScalarRefToStr

Strのサブタイプです。 coerceを有効にした場合、ScalarRef[Str]はデリファレンスされた文字列になります。 例えば、\do{'foo'}fooに変換されます。

ArrayRefToLines

Strのサブタイプです。 coerceを有効にした場合、ArrayRef[Str]の全ての要素は$/で結合されます。 例えば、[qw(foo bar baz)]foo\nbar\nbaz\nに変換されます。

: 最後の要素にも$/が付加されます。

ClassName

StrToClassName

警告: この型制約・型変換は非推奨です。 これの代わりに、MooseX::Types::LoadableClassのLodableClass を使ってください。 さらに、MooseX::Types::LoadableClass にはLodableRoleも備わっています。

ClassNameのサブタイプです。 coerceを有効にした場合、MooseX::Types::Common::String由来のNonEmptyStrはクラス名として扱われます。 それがまだロードされていなければ、Class::Load::load_class()によってロードされます。

ScalarRef

StrToScalarRef

ScalarRef[Str]のサブタイプです。 coerceを有効にした場合、Strはリファレンスになります。 例えば、foo\do{'foo'}に変換されます。

ArrayRef

StrToArrayRef

ArrayRefのサブタイプです。 coerceを有効にした場合、Strは配列リファレンスの最初の要素に割り当てられます。 例えば、foo[qw(foo)]に変換されます。

LinesToArrayRef

ArrayRefのサブタイプです。 coerceを有効にした場合、Str$/によって分割され、配列リファレンスの各要素に割り当てられます。 例えば、foo\nbar\nbaz\n["foo\n", "bar\n", "baz\n"]に変換されます。

: $/は取り除かれません。

HashRefToArrayRef

ArrayRefのサブタイプです。 coerceを有効にした場合、HashRefは平坦化されて配列リファレンスになります。 例えば、{foo => 0, bar => 1}[qw(bar 1 foo 0)]に変換されます。

: キー/値の順番は辞書順に並べ替えられたキーと同じです。

HashKeysToArrayRef

ArrayRefのサブタイプです。 coerceを有効にした場合、HashRefの辞書順に並び替えられたキーのリストは配列リファレンスになります。 例えば、{foo => 0, bar => 1}[qw(bar foo)]に変換されます。

HashValuesToArrayRef

ArrayRefのサブタイプです。 coerceを有効にした場合、HashRefの値のリストは配列リファレンスになります。 例えば、{foo => 0, bar => 1}[qw(1 0)]に変換されます。

: 値の順番は辞書順に並べ替えられたキーと同じです。

OddArrayRef

ArrayRefのサブタイプで、要素が奇数個であるという制約が加えられています。 coerceを有効にした場合、偶数個の要素を持つArrayRefへはその最後の要素としてundefが付け加えられます。 例えば、[qw(foo bar)][qw(foo bar), undef]に変換されます。

EvenArrayRef

ArrayRefのサブタイプで、要素が偶数個であるという制約が加えられています。 coerceを有効にした場合、奇数個の要素を持つArrayRefへはその最後の要素としてundefが付け加えられます。 例えば、[qw(foo)][qw(foo), undef]に変換されます。

HashRef

ArrayRefToHashRef

HashRefのサブタイプです。 coerceを有効にした場合、EvenArrayRefの全ての要素はハッシュリファレンスに代入されます。 例えば、[qw(foo 0 bar 1)]{foo => 0, bar => 1}に変換されます。

ArrayRefToHashKeys

HashRefのサブタイプです。 coerceを有効にした場合、ArrayRefの全ての要素はハッシュリファレンスのキーに代入されます。 例えば、[qw(foo bar baz)]{foo => undef, bar => undef, baz => undef}に変換されます。

RegexpRef

ArrayRefToRegexpRef

RegexpRefのサブタイプです。 coerceを有効にした場合、ArrayRefの全ての要素は|(代替を示すメタ文字)で結合され、正規表現リファレンスになります。 例えば、[qw(foo bar baz)]qr{foo|bar|baz}に変換されます。

: Regexp::Assembleを動的に(つまり実行時に)ロード出来る場合、正規表現リファレンスはそのモジュールを用いて構築されます。 例えば、[qw(foo bar baz)]qr{(?:ba[rz]|foo)}に変換されます。

関連情報

非互換性

互換性のない変更点はありません。

バグと制約事項

バグは報告されていません。

提案やバグ報告の方法

何かバグを発見されたら、機能のご要望がありましたら、または改善のためのご意見がありましたら、メール(<bug-moosex-types-moose-mutualcoercion at rt.cpan.org>宛)で報告してください。 または、Webインターフェース(http://rt.cpan.org/Public/Bug/Report.html?Queue=MooseX-Types-Moose-MutualCoercion)を使って報告してください。 これによって、その報告内容が開発者へ通知されます。 さらに、バグや要望の対応状況について、報告者が通知を自動的に受けることも出来ます。

バグを報告いただく際には、もし可能であれば、バグを再現するための出来るだけ少量のサンプルコードを添えてください。 提案やパッチは勿論歓迎します。

サポート

このモジュールの文書はperldocコマンドで閲覧出来ます。

    % perldoc MooseX::Types::Moose::MutualCoercion

日本語版はPod::PerldocJpを使ったperldocjpコマンドで閲覧出来ます。

    % perldocjp MooseX::Types::Moose::MutualCoercion::JA

また、以下の場所も参照してください:

RT: CPAN's request tracker

http://rt.cpan.org/Public/Dist/Display.html?Name=MooseX-Types-Moose-MutualCoercion

AnnoCPAN: Annotated CPAN documentation

http://annocpan.org/dist/MooseX-Types-Moose-MutualCoercion

Search CPAN

http://search.cpan.org/dist/MooseX-Types-Moose-MutualCoercion

CPAN Ratings

http://cpanratings.perl.org/dist/MooseX-Types-Moose-MutualCoercion

バージョン管理

このモジュールはGitを使って保守されています。

最新版はgit://github.com/gardejo/p5-moosex-types-moose-mutualcoercion.gitにあります。

今後の予定

  • テストの拡充

著者

守屋 雅樹 (Gardejo) (en: MORIYA Masaki, alias Gardejo)

<moriya at cpan dot org>, http://gardejo.org/

訳註: 訳者

守屋 雅樹 (Gardejo) (en: MORIYA Masaki, alias Gardejo)

<moriya at cpan dot org>, http://gardejo.org/

著作権と使用許諾条件

著作権保有 (c) 2010 守屋 雅樹 (Gardejo)

このモジュールはフリーソフトウェアです。 あなたはこれをPerlと同じように自由に再配布・改変することが出来ます。 詳しくはperlgplおよびperlartisticを参照してください。

使用許諾条件の全文はこのディストリビューションに同梱されているLICENSEファイルにあります。

訳註: 著作権と使用許諾条件の原文

Copyright (c) 2010 MORIYA Masaki, alias Gardejo

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlgpl and perlartistic.

The full text of the license can be found in the LICENSE file included with this distribution.