Commit 920477d9 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

parse most info and make it available properly

parent f0b539d7
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -145,13 +145,16 @@ sub display_connection {
			$c->delay, $c->departure_stime, $c->arrival_stime );
	}

	for my $extra ( $c->extra ) {

	for my $extra ( $c->sched_info ) {
		if ( not( length $ignore_info and $extra =~ /$ignore_info/i ) ) {
			say "# $extra";
		}
	}

	for my $notice ( $c->current_info ) {
		printf( "# %s - %s\n", $notice->{subtitle}, $notice->{subject} );
	}

	if ( $opt->{maps} ) {
		for my $m ( $c->departure_routemaps, $c->departure_stationmaps ) {
			say "# $m";
+34 −4
Original line number Diff line number Diff line
@@ -497,6 +497,31 @@ sub itdtime_str {
		$node->getAttribute('minute') );
}

sub parse_cur_info {
	my ( $self, $node ) = @_;

	my $xp_text     = XML::LibXML::XPathExpression->new('./infoLinkText');
	my $xp_subject  = XML::LibXML::XPathExpression->new('./infoText/subject');
	my $xp_subtitle = XML::LibXML::XPathExpression->new('./infoText/subtitle');
	my $xp_content  = XML::LibXML::XPathExpression->new('./infoText/content');

	my $e_text     = ( $node->findnodes($xp_text) )[0];
	my $e_subject  = ( $node->findnodes($xp_subject) )[0];
	my $e_subtitle = ( $node->findnodes($xp_subtitle) )[0];
	my $e_content  = ( $node->findnodes($xp_content) )[0];

	my $ret = {
		summary  => $e_text->textContent,
		subject  => $e_subject->textContent,
		subtitle => $e_subtitle->textContent,
		content  => $e_content->textContent,
	};
	for my $key ( keys %{$ret} ) {
		$ret->{$key} = decode( 'UTF-8', $ret->{$key} );
	}
	return $ret;
}

sub parse_xml_part {
	my ( $self, $route ) = @_;

@@ -519,8 +544,10 @@ sub parse_xml_part {
	my $xp_fp_e
	  = XML::LibXML::XPathExpression->new('./itdFootPathInfo/itdFootPathElem');
	my $xp_delay = XML::LibXML::XPathExpression->new('./itdRBLControlled');
	my $xp_info
	  = XML::LibXML::XPathExpression->new('./itdInfoTextList/infoTextListElem | ./infoLink/infoLinkText');

	my $xp_sched_info
	  = XML::LibXML::XPathExpression->new('./itdInfoTextList/infoTextListElem');
	my $xp_cur_info = XML::LibXML::XPathExpression->new('./infoLink');

	my $xp_mapitem_rm = XML::LibXML::XPathExpression->new(
		'./itdMapItemList/itdMapItem[@type="RM"]/itdImage');
@@ -561,7 +588,8 @@ sub parse_xml_part {
		my $e_mot     = ( $e->findnodes($xp_mot) )[0];
		my $e_delay   = ( $e->findnodes($xp_delay) )[0];
		my $e_fp      = ( $e->findnodes($xp_fp) )[0];
		my @e_info    = $e->findnodes($xp_info);
		my @e_sinfo   = $e->findnodes($xp_sched_info);
		my @e_cinfo   = $e->findnodes($xp_cur_info);
		my @e_dmap_rm = $e_dep->findnodes($xp_mapitem_rm);
		my @e_dmap_sm = $e_dep->findnodes($xp_mapitem_sm);
		my @e_amap_rm = $e_arr->findnodes($xp_mapitem_rm);
@@ -662,7 +690,9 @@ sub parse_xml_part {
			);
		}

		$hash->{extra} = [ map { decode( 'UTF-8', $_->textContent ) } @e_info ];
		$hash->{sched_info}
		  = [ map { decode( 'UTF-8', $_->textContent ) } @e_sinfo ];
		$hash->{current_info} = [ map { $self->parse_cur_info($_) } @e_cinfo ];

		push( @route_parts, $hash );
	}
+20 −1
Original line number Diff line number Diff line
@@ -82,10 +82,29 @@ sub footpath_parts {
	return;
}

# DEPRECATED
sub extra {
	my ($self) = @_;

	return @{ $self->{extra} // [] };
	return @{ $self->{sched_info} // [] };
}

sub sched_info {
	my ($self) = @_;

	if ( $self->{sched_info} ) {
		return @{ $self->{sched_info} };
	}
	return;
}

sub current_info {
	my ($self) = @_;

	if ( $self->{current_info} ) {
		return @{ $self->{current_info} };
	}
	return;
}

sub via {