Daniel Friesel

NAME

Travel::Status::DE::IRIS::Stations - Station name to station code mapping

SYNOPSIS

    use Travel::Status::DE::IRIS::Stations;

    my $name = 'Essen Hbf';
    my @stations = Travel::Status::DE::IRIS::Stations::get_station_by_name(
      $name);

    if (@stations < 1) {
      # no matching stations
    }
    elsif (@stations > 1) {
      # too many matches
    }
    else {
      printf("Input '%s' matched station code %s (as '%s')\n",
        $name, @{$stations[0]});
    }

VERSION

version 0.04

DESCRIPTION

This module contains a mapping of DeutscheBahn station names to station codes. A station name is a (perhaps slightly abbreviated) string naming a particular station; a station code is a two to five character denoting a station for the IRIS web service.

Example station names (code in parentheses) are: "Essen HBf" (EE), "Aachen Schanz" (KASZ), "Do Universität" (EDUV).

Note: Station codes may contain whitespace.

METHODS

Travel::Status::DE::IRIS::get_stations

Returns a list of [station code, station name] listrefs lexically sorted by station name.

Travel::Status::DE::IRIS::get_station($in)

Returns a list of [station code, station name] listrefs matching $in.

If a $in is a valid station code, only one element ([$in, related name]) is returned. Otherwise, it is passed to get_station_by_name($in) (see below).

Note that station codes matching is case sensitive and must be exact.

Travel::Status::DE::IRIS::get_station_by_name($name)

Returns a list of [station code, station name] listrefs where the station name matches $name.

Matching happens in two steps: If a case-insensitive exact match exists, only this one is returned. Otherwise, all stations whose name contains $name as a substring (also case-insensitive) are returned.

This two-step behaviour makes sure that not prefix-free stations can still be matched directly. For instance, both "Essen-Steele" and "Essen-Steele Ost" are valid station names, but "essen-steele" will only return "Essen-Steele".

DIAGNOSTICS

None.

DEPENDENCIES

  • List::MoreUtils(3pm)

BUGS AND LIMITATIONS

There is no support for intelligent whitespaces (to also match "-" and similar) yet.

SEE ALSO

Travel::Status::DE::IRIS(3pm).

AUTHOR

Copyright (C) 2014 by Daniel Friesel <derf@finalrewind.org>

LICENSE

This module is licensed under the same terms as Perl itself.




Hosting generously
sponsored by Bytemark