summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2017-01-13 19:00:33 +0100
committerDaniel Friesel <derf@finalrewind.org>2017-01-13 19:00:33 +0100
commitc280291a0b7150c902e9dae5f4f670148307bdf3 (patch)
treec1e7ce8e04cf7e43ce9f3b90577b01c16dba240b
parent5874d734a0d851369a45f2ad869be03a8699162d (diff)
initial support for stop messages (todo: documentation) (closes #6)
-rwxr-xr-xbin/ura-m5
-rw-r--r--lib/Travel/Status/DE/URA.pm37
2 files changed, 41 insertions, 1 deletions
diff --git a/bin/ura-m b/bin/ura-m
index 7ff4c65..3111cda 100755
--- a/bin/ura-m
+++ b/bin/ura-m
@@ -93,6 +93,7 @@ my $status = Travel::Status::DE::URA->new(
developer_mode => $developer_mode,
ura_base => $ura_base,
ura_version => $ura_version,
+ with_messages => 1,
);
sub show_help {
@@ -211,6 +212,10 @@ sub show_results {
my $dt_format
= DateTime::Format::Duration->new( pattern => $strfrel_format );
+ for my $m ( $status->messages_by_stop_name($stop_name) ) {
+ printf( "# %s\n", $m );
+ }
+
for my $d (
$status->results(
calculate_routes => $calculate_routes,
diff --git a/lib/Travel/Status/DE/URA.pm b/lib/Travel/Status/DE/URA.pm
index f290e53..be405c2 100644
--- a/lib/Travel/Status/DE/URA.pm
+++ b/lib/Travel/Status/DE/URA.pm
@@ -63,6 +63,9 @@ sub new {
},
};
+ if ( $opt{with_messages} ) {
+ $self->{post}{ReturnList} .= ',messagetext,messagetype';
+ }
if ( $opt{with_stops} ) {
$self->{post}{StopAlso} = 'True';
}
@@ -158,7 +161,20 @@ sub parse_raw_data {
);
}
}
- if ( $type == TYPE_PREDICTION ) {
+ elsif ( $type == TYPE_MESSAGE ) {
+ push(
+ @{ $self->{messages} },
+ {
+ stop_name => $fields[1],
+ stop_id => $fields[2],
+
+ # 0 = long text. 2 = short text for station displays?
+ type => $fields[6],
+ text => $fields[7],
+ }
+ );
+ }
+ elsif ( $type == TYPE_PREDICTION ) {
push( @{ $self->{stop_names} }, $fields[1] );
}
}
@@ -193,6 +209,25 @@ sub errstr {
return $self->{errstr};
}
+sub messages_by_stop_id {
+ my ( $self, $stop_id ) = @_;
+
+ my @messages = grep { $_->{stop_id} == $stop_id } @{ $self->{messages} };
+ @messages = map { $_->{text} } @messages;
+
+ return @messages;
+}
+
+sub messages_by_stop_name {
+ my ( $self, $stop_name ) = @_;
+
+ my @messages
+ = grep { $_->{stop_name} eq $stop_name } @{ $self->{messages} };
+ @messages = map { $_->{text} } @messages;
+
+ return @messages;
+}
+
sub results {
my ( $self, %opt ) = @_;
my @results;