| Finance-Wesabe documentation | Contained in the Finance-Wesabe distribution. |
Finance::Wesabe::Utils - Utility methods for Finance::Wesabe
This module is a collection of utility methods for accessing particular aspects of the structure returned from an HTTP response.
Acceses a top-level hash element.
Acceses data stored in a field with a content sub-key.
Acceses a top-level hash element and creates a DateTime object.
Creates a DateTime object from data stored in a content sub key.
Similar to mk_simple_field, but uses a different accessor name.
Similar to mk_deep_field, but uses a different accessor name.
Brian Cassidy <bricas@cpan.org>
Copyright 2009-2010 by Brian Cassidy
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Finance-Wesabe documentation | Contained in the Finance-Wesabe distribution. |
package Finance::Wesabe::Utils; use Moose; extends 'Exporter'; our @EXPORT = qw( mk_simple_field mk_simple_date_field mk_deep_date_field mk_field_map mk_deep_field_map mk_deep_field ); use DateTime::Format::ISO8601;
sub mk_simple_field { my( $package, @fields ) = @_; for my $field ( @fields ) { ( my $sub = $field ) =~ s{-}{_}; no strict 'refs'; *{ "$package\::$sub" } = sub { return shift->content->{ $field }; } } }
sub mk_deep_field { my( $package, @fields ) = @_; for my $field ( @fields ) { ( my $sub = $field ) =~ s{-}{_}; no strict 'refs'; *{ "$package\::$sub" } = sub { return shift->content->{ $field }->{ content }; } } }
sub mk_simple_date_field { my( $package, @fields ) = @_; for my $field ( @fields ) { ( my $sub = $field ) =~ s{-}{_}; no strict 'refs'; *{ "$package\::$sub" } = sub { return DateTime::Format::ISO8601->parse_datetime( shift->content->{ $field } ); } } }
sub mk_deep_date_field { my( $package, @fields ) = @_; for my $field ( @fields ) { ( my $sub = $field ) =~ s{-}{_}; no strict 'refs'; *{ "$package\::$sub" } = sub { return DateTime::Format::ISO8601->parse_datetime( shift->content->{ $field }->{ content } ); } } }
sub mk_field_map { my( $package, %fields ) = @_; for my $field ( keys %fields ) { my $sub = $fields{ $field }; no strict 'refs'; *{ "$package\::$sub" } = sub { return shift->content->{ $field }; } } }
sub mk_deep_field_map { my( $package, %fields ) = @_; for my $field ( keys %fields ) { my $sub = $fields{ $field }; no strict 'refs'; *{ "$package\::$sub" } = sub { return shift->content->{ $field }->{ content }; } } } no Moose; __PACKAGE__->meta->make_immutable;
1;