Skip to content

michal-josef-spacek/Map-Tube-Warsaw

Repository files navigation

NAME
    Map::Tube::Warsaw - Interface to the Warsaw Tube Map.

SYNOPSIS
     use Map::Tube::Warsaw;

     my $obj = Map::Tube::Warsaw->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 = $obj->xml;

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

    For more information about Warsaw Map, click here
    <https://en.wikipedia.org/wiki/Warsaw_Metro>.

METHODS
  "new"
     my $obj = Map::Tube::Warsaw->new;

    Constructor.

    Returns instance of object.

  "get_all_routes"
     my $routes_ar = $obj->get_all_routes($from, $to);

    Get all routes from station to station.

    Returns reference to array with Map::Tube::Route objects.

  "get_line_by_id"
     my $line = $obj->get_line_by_id($line_id);

    Get line object defined by id.

    Returns Map::Tube::Line object.

  "get_line_by_name"
     my $line = $obj->get_line_by_name($line_name);

    Get line object defined by name.

    Returns Map::Tube::Line object.

  "get_lines"
     my $lines_ar = $obj->get_lines;

    Get lines in metro map.

    Returns reference to unsorted array with Map::Tube::Line objects.

  "get_node_by_id"
     my $station = $obj->get_node_by_id($station_id);

    Get station node by id.

    Returns Map::Tube::Node object.

  "get_node_by_name"
     my $station = $obj->get_node_by_name($station_name);

    Get station node by name.

    Returns Map::Tube::Node object.

  "get_shortest_route"
     my $route = $obj->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"
     my $stations_ar = $obj->get_stations($line);

    Get list of stations for concrete metro line.

    Returns reference to array with Map::Tube::Node objects.

  "name"
     my $metro_name = $obj->name;

    Get metro name.

    Returns string with metro name.

  "xml"
     my $xml = $obj->xml;

    Get XML specification of Warsaw metro.

    Returns string with XML.

EXAMPLE1
     use strict;
     use warnings;

     use Encode qw(decode_utf8 encode_utf8);
     use Map::Tube::Warsaw;

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

     # Get route.
     my $route = $obj->get_shortest_route(decode_utf8('Imielin'), decode_utf8('Świętokrzyska'));

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

     # Output:
     # Route: Imielin (Linia M1), Stokłosy (Linia M1), Ursynów (Linia M1), Służew (Linia M1), Wilanowska (Linia M1), Wierzbno (Linia M1), Racławicka (Linia M1), Pole Mokotowskie (Linia M1), Politechnika (Linia M1), Centrum (Linia M1), Świętokrzyska (Linia M1)

EXAMPLE2
     use strict;
     use warnings;

     use Map::Tube::Warsaw;

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

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

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

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

EXAMPLE3
     use strict;
     use warnings;

     use Map::Tube::GraphViz;
     use Map::Tube::GraphViz::Utils qw(node_color_without_label);
     use Map::Tube::Warsaw;

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

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

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

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

     # Output like:
     # -rw-r--r-- 1 skim skim 90061 lis  3 23:18 Warsaw.png

EXAMPLE4
     use strict;
     use warnings;

     use Encode qw(encode_utf8);
     use Map::Tube::Warsaw;

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

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

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

     # Output:
     # Linia M1
     # Linia M2

EXAMPLE5
     use strict;
     use warnings;

     use Encode qw(encode_utf8);
     use Map::Tube::Warsaw;

     # Arguments.
     if (@ARGV < 1) {
             print STDERR "Usage: $0 line\n";
             exit 1;
     }
     my $line = $ARGV[0];

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

     # Get stations for line.
     my $stations_ar = $obj->get_stations($line);

     # Print out.
     map { print encode_utf8($_->name)."\n"; } @{$stations_ar};

     # Output:
     # Usage: __PROG__ line

     # Output with 'foo' argument.
     # Map::Tube::get_stations(): ERROR: Invalid Line Name [foo]. (status: 105) file __PROG__ on line __LINE__

     # Output with 'Linia M1' argument.
     # Kabaty
     # Natolin
     # Imielin
     # Stokłosy
     # Ursynów
     # Służew
     # Wilanowska
     # Wierzbno
     # Racławicka
     # Pole Mokotowskie
     # Politechnika
     # Centrum
     # Świętokrzyska
     # Ratusz Arsenał
     # Dworzec Gdański
     # Plac Wilsona
     # Marymont
     # Słodowiec
     # Stare Bielany
     # Wawrzyszew
     # Młociny

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/michal-josef-spacek/Map-Tube-Warsaw>

AUTHOR
    Michal Josef Špaček <mailto:skim@cpan.org>

    <http://skim.cz>

LICENSE AND COPYRIGHT
    © 2014-2021 Michal Josef Špaček

    Artistic License

    BSD 2-Clause License

VERSION
    0.09

About

Interface to the Warsaw Tube Map.

Resources

License

Unknown, BSD-2-Clause licenses found

Licenses found

Unknown
LICENSE.artistic_2
BSD-2-Clause
LICENSE.bsd

Stars

Watchers

Forks

Packages

No packages published

Languages