summaryrefslogtreecommitdiff
path: root/lib/WebService/TFL/Bus/ResponseTypeRole.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/WebService/TFL/Bus/ResponseTypeRole.pm')
-rw-r--r--lib/WebService/TFL/Bus/ResponseTypeRole.pm20
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;