NAME
Map::Tube::Text::Shortest - Shortest route information via Map::Tube object.
SYNOPSIS
use Map::Tube::Test::Shortest;
my $obj = Map::Tube::Text::Shortest->new(%params);
print $obj->print($from, $to);
METHODS
new
my $obj = Map::Tube::Text::Shortest->new(%params);
Constructor.
tube
Map::Tube object.
Parameter is required.
Default value is undef.
Returns instance of object.
print
print $obj->print($from, $to);
Print shortest route table.
Returns string with table.
ERRORS
new():
Parameter 'tube' is required.
Parameter 'tube' must be 'Map::Tube' object.
EXAMPLE
use strict;
use warnings;
use English;
use Encode qw(decode_utf8 encode_utf8);
use Error::Pure qw(err);
use Map::Tube::Text::Shortest;
# Arguments.
if (@ARGV < 3) {
print STDERR "Usage: $0 metro from to\n";
exit 1;
}
my $metro = $ARGV[0];
my $from = decode_utf8($ARGV[1]);
my $to = decode_utf8($ARGV[2]);
# Load metro object.
my $class = 'Map::Tube::'.$metro;
eval "require $class;";
if ($EVAL_ERROR) {
err "Cannot load '$class' class.",
'Error', $EVAL_ERROR;
}
# Metro object.
my $tube = eval "$class->new";
if ($EVAL_ERROR) {
err "Cannot create object for '$class' class.",
'Error', $EVAL_ERROR;
}
# Table object.
my $table = Map::Tube::Text::Shortest->new(
'tube' => $tube,
);
# Print out.
print encode_utf8(scalar $table->print($from, $to))."\n";
# Output without arguments like:
# Usage: /tmp/O0s_2qtAuB metro from to
# Output with 'Budapest', 'Fővám tér', 'Opera' arguments like:
#
# From Fővám tér to Opera
# =======================
#
# -- Route 1 (cost ?) ----------
# [ M4 ] Fővám tér
# [ M3 ] Kálvin tér
# [ * M4 ] Kálvin tér
# [ M3 ] Ferenciek tere
# [ M1 ] Deák Ferenc tér
# [ * M2 ] Deák Ferenc tér
# [ M3 ] Deák Ferenc tér
# [ M1 ] Bajcsy-Zsilinszky út
# [ M1 ] Opera
#
# M1 Linia M1
# M3 Linia M3
# M2 Linia M2
# M4 Linia M4
#
# *: Transfer to other line
# +: Transfer to other station
#
DEPENDENCIES
Class::Utils, Error::Pure, List::Util, Readonly, Scalar::Util.
SEE ALSO
- Task::Map::Tube
-
Install the Map::Tube modules.
- Task::Map::Tube::Metro
-
Install the Map::Tube concrete metro modules.
REPOSITORY
https://github.com/michal-josef-spacek/Map-Tube-Text-Shortest
AUTHOR
Michal Josef Špaček mailto:skim@cpan.org
LICENSE AND COPYRIGHT
© 2014-2023 Michal Josef Špaček
Artistic License
BSD 2-Clause License
VERSION
0.02