Commit 107ca442 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

efa: Add -E option to display total route time and ticket class/price

parent 24a55903
Loading
Loading
Loading
Loading
+20 −1
Original line number Diff line number Diff line
@@ -6,6 +6,8 @@ use strict;
use warnings;
use 5.010;

use utf8;

use Travel::Routing::DE::VRR;
use Exception::Class;
use Getopt::Long qw/:config no_ignore_case/;
@@ -112,6 +114,7 @@ GetOptions(
		date|d=s
		depart=s
		exclude|e=s@
		extended-info|E
		from=s@{2}
		help|h
		ignore-info|I:s
@@ -188,7 +191,23 @@ check_for_error($@);
my @routes = $efa->routes;

for my $i ( 0 .. $#routes ) {
	for my $c ( $routes[$i]->parts ) {

	my $route = $routes[$i];

	if ($opt->{'extended-info'}) {
		print '# ' . $route->duration;
		if ($route->ticket_type) {
			printf(", class %s (%s€ / %s€)\n\n",
				$route->ticket_type,
				$route->fare_adult, $route->fare_child,
			);
		}
		else {
			print "\n\n";
		}
	}

	for my $c ( $route->parts ) {

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

+14 −4
Original line number Diff line number Diff line
@@ -432,8 +432,6 @@ sub itdtime_str {
sub parse_part {
	my ($self, $route) = @_;

	my $info;

	my $xp_route = XML::LibXML::XPathExpression->new('./itdPartialRouteList/itdPartialRoute');
	my $xp_dep = XML::LibXML::XPathExpression->new('./itdPoint[@usage="departure"]');
	my $xp_arr = XML::LibXML::XPathExpression->new('./itdPoint[@usage="arrival"]');
@@ -444,11 +442,23 @@ sub parse_part {
	my $xp_mot   = XML::LibXML::XPathExpression->new('./itdMeansOfTransport');
	my $xp_info  = XML::LibXML::XPathExpression->new('./itdInfoTextList/infoTextListElem');

	my $xp_fare  = XML::LibXML::XPathExpression->new('./itdFare/itdSingleTicket');

	my @route_parts;

	$info->{vehicle_time} = $route->getAttribute('vehicleTime');
	$info->{duration} = $route->getAttribute('publicDuration');
	my $info = {
		duration => $route->getAttribute('publicDuration'),
		vehicle_time => $route->getAttribute('vehicleTime'),
	};

	my $e_fare = ( $route->findnodes($xp_fare) )[0];

	if ($e_fare) {
		$info->{ticket_type} = $e_fare->getAttribute('unitsAdult');
		$info->{fare_adult} = $e_fare->getAttribute('fareAdult');
		$info->{fare_child} = $e_fare->getAttribute('fareChild');
		$info->{ticket_text} = $e_fare->textContent;
	}

	for my $e ( $route->findnodes($xp_route) ) {

+6 −0
Original line number Diff line number Diff line
@@ -4,10 +4,16 @@ use strict;
use warnings;
use 5.010;

use parent 'Class::Accessor';

use Travel::Routing::DE::VRR::Route::Part;

our $VERSION = '1.06';

Travel::Routing::DE::VRR::Route->mk_ro_accessors(
	qw(duration ticket_text ticket_type fare_adult fare_child vehicle_time)
);

sub new {
	my ( $obj, $info, @parts ) = @_;