The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Map::Tube::Prague - Interface to the Prague Metro Map.

SYNOPSIS

 use Map::Tube::Prague;
 my $obj = Map::Tube::Prague->new;
 my $routes_ar = $obj->get_all_routes($from, $to);
 my $line = $obj->get_line_by_id($line_id);
 my $line = $obj->get_line_by_name($line_name);
 my $lines_ar = $obj->get_lines;
 my $station = $obj->get_node_by_id($station_id);
 my $station = $obj->get_node_by_name($station_name);
 my $route = $obj->get_shortest_route($from, $to);
 my $stations_ar = $obj->get_stations($line);
 my $metro_name = $obj->name;
 my $xml_file = $obj->xml;

DESCRIPTION

It currently provides functionality to find the shortest route between the two given nodes.

For more information about Prague Map, click here.

METHODS

new()
 Constructor.
get_all_routes($from, $to) [EXPERIMENTAL]
 Get all routes from station to station.
 Returns reference to array with Map::Tube::Route objects.
get_line_by_id($line_id)
 Get line object defined by id.
 Returns Map::Tube::Line object.
get_line_by_name($line_name)
 Get line object defined by name.
 Returns Map::Tube::Line object.
get_lines()
 Get lines in metro map.
 Returns reference to unsorted array with Map::Tube::Line objects.
get_node_by_id($station_id)
 Get station node by id.
 Returns Map::Tube::Node object.
get_node_by_name($station_name)
 Get station node by name.
 Returns Map::Tube::Node object.
get_shortest_route($from, $to)
 Get shortest route between $from and $to node names. Node names in $from and $to are case insensitive.
 Returns Map::Tube::Route object.
get_stations($line)
 Get list of stations for concrete metro line.
 Returns reference to array with Map::Tube::Node objects.
name()
 Get metro name.
 Returns string with metro name.
xml()
 Get XML specification of Prague metro.
 Returns string with XML.

EXAMPLE1

 # Pragmas.
 use strict;
 use warnings;

 # Modules.
 use Encode qw(decode_utf8 encode_utf8);
 use Map::Tube::Prague;

 # Object.
 my $obj = Map::Tube::Prague->new;

 # Get route.
 my $route = $obj->get_shortest_route(decode_utf8('Dejvická'), decode_utf8('Ládví'));

 # Print out type.
 print "Route: ".encode_utf8($route)."\n";

 # Output:
 # Route: Dejvická (Linka A), Hradčanská (Linka A), Malostranská (Linka A), Staroměstská (Linka A), Můstek (Linka A, Tunnel), Můstek (Linka B, Tunnel), Náměstí Republiky (Linka B), Florenc (Linka B, Tunnel), Florenc (Linka C, Tunnel), Vltavská (Linka C), Nádraží Holešovice (Linka C), Kobylisy (Linka C), Ládví (Linka C)

EXAMPLE2

 # Pragmas.
 use strict;
 use warnings;

 # Modules.
 use Map::Tube::Prague;

 # Object.
 my $obj = Map::Tube::Prague->new;

 # Get XML file.
 my $xml_file = $obj->xml;

 # Print out XML file.
 print "XML file: $xml_file\n";

 # Output like:
 # XML file: .*/prague-map.xml

EXAMPLE3

 # Pragmas.
 use strict;
 use warnings;

 # Modules.
 use Map::Tube::GraphViz;
 use Map::Tube::GraphViz::Utils qw(node_color_without_label);
 use Map::Tube::Prague;

 # Object.
 my $obj = Map::Tube::Prague->new;

 # GraphViz object.
 my $g = Map::Tube::GraphViz->new(
         'callback_node' => \&node_color_without_label,
         'tube' => $obj,
 );

 # Get graph to file.
 $g->graph('Prague.png');

 # Print file.
 system "ls -l Prague.png";

 # Output like:
 # -rw-r--r-- 1 skim skim 166110 Apr  6 23:12 Prague.png
Pražské metro

EXAMPLE4

 # Pragmas.
 use strict;
 use warnings;

 # Modules.
 use Map::Tube::Prague;

 # Object.
 my $obj = Map::Tube::Prague->new;

 # Get lines.
 my $lines_ar = $obj->get_lines;

 # Print out.
 map { print $_->name."\n"; } sort @{$lines_ar};

 # Output:
 # Linka A
 # Linka B
 # Linka C

DEPENDENCIES

File::Share, Map::Tube, Moo, namespace::clean.

SEE ALSO

Map::Tube

Core library as Role (Moo) to process map data.

Task::Map::Tube

Install the Map::Tube modules.

Task::Map::Tube::Metro

Install the Map::Tube concrete metro modules.

REPOSITORY

https://github.com/tupinek/Map-Tube-Prague

AUTHOR

Michal Špaček mailto:skim@cpan.org

http://skim.cz

LICENSE AND COPYRIGHT

 © 2014-2015 Michal Špaček
 Artistic License
 BSD 2-Clause License

VERSION

0.13