diff options
Diffstat (limited to 'lib/WebService/TFL/Bus/ResponseTypeRole.pm')
-rw-r--r-- | lib/WebService/TFL/Bus/ResponseTypeRole.pm | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/lib/WebService/TFL/Bus/ResponseTypeRole.pm b/lib/WebService/TFL/Bus/ResponseTypeRole.pm index 6cfd460..7f48419 100644 --- a/lib/WebService/TFL/Bus/ResponseTypeRole.pm +++ b/lib/WebService/TFL/Bus/ResponseTypeRole.pm @@ -1,16 +1,14 @@ package WebService::TFL::Bus::ResponseTypeRole; -use MooseX::Role::Parameterized; +use Package::Variant + importing => [ 'Moo::Role'], + subs => [ 'has' ]; use WebService::TFL::Bus::Fields; use WebService::TFL::Bus::Types 'DateTimeMillis'; -parameter type => ( - isa => 'Str', - required => 1, -); +sub make_variant { + my ($class,$target_package,$type) = @_; -role { - my $p = shift; - my $method = $p->type . '_return_fields'; + my $method = $type . '_return_fields'; my @fields = WebService::TFL::Bus::Fields->$method; for my $field (@fields) { @@ -18,12 +16,12 @@ role { is => 'ro', ( $field =~ /Time$/ ? ( isa => DateTimeMillis, - coerce => 1, + coerce => DateTimeMillis->coercion, ) : () ), ); } - method new_from_array => sub { + install new_from_array => sub { my ($class,$return_set,$array) = @_; my %args; @@ -35,6 +33,6 @@ role { } return $class->new(\%args); } -}; +} 1; |