Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use strict;
- use warnings;
- package TFX::Flight;
- use Moose;
- use MooseX::HasDefaults::RO;
- use Class::Load 'load_class';
- use lib '..';
- use TFX::Sealtix;
- has [ TFX::Sealtix->get_fields ] => ( isa => 'Any', lazy_build => 1 );
- sub build {
- my ( $class, %args ) = @_;
- my $source = delete $args{source};
- my $engine = "$class\::$source";
- load_class( $engine );
- return $engine->new( $args{data} );
- }
- sub as_hash {
- my ( $self ) = @_;
- my @fields = $self->hash_fields;
- my %hash = map $self->_get_field_value($_), @fields;
- return \%hash;
- }
- sub hash_fields {
- my ( $self ) = @_;
- my @fields = TFX::Sealtix->get_fields;
- # trim multi leg flight fields if it's a single leg flight
- @fields = grep { !/^leg\d_/ } @fields if @{ $self->legs } < 2;
- # trim certain flight fields if it's a multi leg flight
- @fields = grep { $_ ne 'flight_carrier' and $_ ne 'flight_number' } @fields if @{ $self->legs } > 1;
- return @fields;
- }
- sub _get_field_value {
- my ( $self, $field ) = @_;
- return ( $field => $self->$field ) if defined $self->$field;
- return;
- }
- 1;
Add Comment
Please, Sign In to add comment