diff options
author | Daniel Friesel <derf@finalrewind.org> | 2020-07-05 15:19:34 +0200 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2020-07-05 15:19:34 +0200 |
commit | 220b3bf395fa4aa87a0b5b9c161ac6e59ba08d58 (patch) | |
tree | 4cefa5a6a25a12aca4a51f4ab16e934d7a1e043e /lib/Travel | |
parent | abf476761e14fbd190a4d06fad5f126dd2943cfc (diff) |
Switch to HAFAS::Message class for message handling
Diffstat (limited to 'lib/Travel')
-rw-r--r-- | lib/Travel/Status/DE/HAFAS.pm | 5 | ||||
-rw-r--r-- | lib/Travel/Status/DE/HAFAS/Message.pm | 98 |
2 files changed, 101 insertions, 2 deletions
diff --git a/lib/Travel/Status/DE/HAFAS.pm b/lib/Travel/Status/DE/HAFAS.pm index 4a74692..670cba6 100644 --- a/lib/Travel/Status/DE/HAFAS.pm +++ b/lib/Travel/Status/DE/HAFAS.pm @@ -13,6 +13,7 @@ use DateTime::Format::Strptime; use List::Util qw(any); use LWP::UserAgent; use POSIX qw(strftime); +use Travel::Status::DE::HAFAS::Message; use Travel::Status::DE::HAFAS::Result; use Travel::Status::DE::HAFAS::StopFinder; use XML::LibXML; @@ -299,11 +300,11 @@ sub add_message_node { return $message; } } - my $message = { + my $message = Travel::Status::DE::HAFAS::Message->new( header => $header, lead => $lead, ref_count => 1, - }; + ); push( @{ $self->{messages} }, $message ); return $message; } diff --git a/lib/Travel/Status/DE/HAFAS/Message.pm b/lib/Travel/Status/DE/HAFAS/Message.pm new file mode 100644 index 0000000..f691a94 --- /dev/null +++ b/lib/Travel/Status/DE/HAFAS/Message.pm @@ -0,0 +1,98 @@ +package Travel::Status::DE::HAFAS::Message; + +use strict; +use warnings; +use 5.014; + +use parent 'Class::Accessor'; + +our $VERSION = '3.01'; + +Travel::Status::DE::HAFAS::Message->mk_ro_accessors(qw(header lead ref_count)); + +sub new { + my ( $obj, %conf ) = @_; + + my $ref = \%conf; + bless( $ref, $obj ); + + return $ref; +} + +1; + +__END__ + +=head1 NAME + +Travel::Status::DE::HAFAS::Message - An arrival/departure-related message. + +=head1 SYNOPSIS + + if ($message->lead) { + printf("%s: %s\n", $message->header, $message->lead); + } + else { + say $message->header; + } + +=head1 VERSION + +version 3.01 + +=head1 DESCRIPTION + +Travel::Status::DE::HAFAS::Message describes a message belonging to an +arrival or departure. Messages may refer to planned schedule changes due to +construction work, the expected passenger volume, or similar. + +=head1 METHODS + +=head2 ACCESSORS + +=over + +=item $message->header + +Message header. May be a concise single-sentence summary or a mostly useless +string such as "Information". Does not contain newlines. + +=item $message->lead + +Detailed message content. Does not contain newlines. + +=item $message->ref_count + +Counter indicating how often this message is used by the requested +arrivals/departures. ref_count is an integer between 1 and the number of +results. If ref_count is 1, it is referenced by a single result only. + +=back + +=head1 DIAGNOSTICS + +None. + +=head1 DEPENDENCIES + +=over + +=item Class::Accessor(3pm) + +=back + +=head1 BUGS AND LIMITATIONS + +None known. + +=head1 SEE ALSO + +Travel::Status::DE::HAFAS(3pm). + +=head1 AUTHOR + +Copyright (C) 2020 by Daniel Friesel E<lt>derf@finalrewind.orgE<gt> + +=head1 LICENSE + +This module is licensed under the same terms as Perl itself. |