summaryrefslogtreecommitdiffstats
path: root/lib/WWW/YNAB/ModelHelpers.pm
blob: 09f5cfbc53d328e753968b68f08e29d664d0b253 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package WWW::YNAB::ModelHelpers;

use Moose::Role;

sub model_from_data {
    my $self = shift;
    my ($class, $data, $server_knowledge) = @_;

    my @init_args = grep {
        $_ !~ /^_/
    } map {
        $_->init_arg
    } $class->meta->get_all_attributes;

    my %args = map {
        $_ => $data->{$_}
    } grep {
        exists $data->{$_}
    } @init_args;

    if (defined $server_knowledge) {
        $args{server_knowledge} = $server_knowledge;
    }

    $class->new(%args, _ua => $self->_ua);
}

no Moose::Role;

=begin Pod::Coverage

  model_from_data

=end Pod::Coverage

=cut

1;