NAME

Map::Tube::Text::Table - Table output for Map::Tube.

SYNOPSIS

use Map::Tube::Text::Table;

my $obj = Map::Tube::Text::Table->new(%params);
my $text = $obj->junctions;
my $text = $obj->line($line);
my $text = $obj->lines;
my $text = $obj->print;

METHODS

new(%params)
Constructor.
  • print_id

    Flag, that means printing of ID.
    Affected methods:
    - line()
    - print() (by line()).
    Default value is 0.
  • tube

    Map::Tube object.
    It is required.
    Default value is undef.
junctions()
Print junctions.
Returns string with unicode text table.
line($line)
Print line.
Returns string with unicode text table.
lines()
Print sorted lines.
Returns string with unicode text table.
print()
Print all (junctions + all lines).
Returns string with unicode text table.

ERRORS

new():
        Parameter 'tube' is required.
        Parameter 'tube' must be 'Map::Tube' object.
        From Class::Utils::set_params():
                Unknown parameter '%s'.

EXAMPLE

use strict;
use warnings;

use Encode qw(encode_utf8);
use English;
use Error::Pure qw(err);
use Map::Tube::Text::Table;

# Error::Pure environment.
$ENV{'ERROR_PURE'} = 'AllError';

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

# 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;
}

# GraphViz object.
my $table = Map::Tube::Text::Table->new(
        'tube' => $tube,
);

# Print out.
print encode_utf8($table->print);

# Output without arguments like:
# Usage: /tmp/SZXfa2g154 metro

# Output with 'Tbilisi' argument like:
# ┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
# │ Junctions                                                                                        │
# ├──────────────────┬──────────────────────────────────────────┬────────────────────────────────────┤
# │ Station          │ Line                                     │ Connected to                       │
# ├──────────────────┼──────────────────────────────────────────┼────────────────────────────────────┤
# │ სადგურის მოედანი │ ახმეტელი-ვარკეთილის ხაზი,საბურთალოს ხაზი │ მარჯანიშვილი, ნაძალადევი, წერეთელი │
# └──────────────────┴──────────────────────────────────────────┴────────────────────────────────────┘
# ┌───────────────────────────────────────────────────────────┐
# │ Line 'ახმეტელი-ვარკეთილის ხაზი'                           │
# ├──────────────────────┬────────────────────────────────────┤
# │ Station              │ Connected to                       │
# ├──────────────────────┼────────────────────────────────────┤
# │ ახმეტელის თეატრი     │ სარაჯიშვილი                        │
# │ სარაჯიშვილი          │ ახმეტელის თეატრი, გურამიშვილი      │
# │ გურამიშვილი          │ სარაჯიშვილი, ღრმაღელე              │
# │ ღრმაღელე             │ გურამიშვილი, დიდუბე                │
# │ დიდუბე               │ გოცირიძე, ღრმაღელე                 │
# │ გოცირიძე             │ დიდუბე, ნაძალადევი                 │
# │ ნაძალადევი           │ გოცირიძე, სადგურის მოედანი         │
# │ მარჯანიშვილი         │ რუსთაველი, სადგურის მოედანი        │
# │ რუსთაველი            │ თავისუფლების მოედანი, მარჯანიშვილი │
# │ თავისუფლების მოედანი │ ავლაბარი, რუსთაველი                │
# │ ავლაბარი             │ 300 არაგველი, თავისუფლების მოედანი │
# │ 300 არაგველი         │ ავლაბარი, ისანი                    │
# │ ისანი                │ 300 არაგველი, სამგორი              │
# │ სამგორი              │ ვარკეთილი, ისანი                   │
# │ ვარკეთილი            │ სამგორი                            │
# │ სადგურის მოედანი     │ მარჯანიშვილი, ნაძალადევი, წერეთელი │
# └──────────────────────┴────────────────────────────────────┘
# ┌────────────────────────────────────────────────────────────────────┐
# │ Line 'საბურთალოს ხაზი'                                             │
# ├─────────────────────────┬──────────────────────────────────────────┤
# │ Station                 │ Connected to                             │
# ├─────────────────────────┼──────────────────────────────────────────┤
# │ წერეთელი                │ სადგურის მოედანი, ტექნიკური უნივერსიტეტი │
# │ ტექნიკური უნივერსიტეტი  │ სამედიცინო უნივერსიტეტი, წერეთელი        │
# │ სამედიცინო უნივერსიტეტი │ დელისი, ტექნიკური უნივერსიტეტი           │
# │ დელისი                  │ ვაჟა-ფშაველა, სამედიცინო უნივერსიტეტი    │
# │ ვაჟა-ფშაველა            │ დელისი                                   │
# │ სადგურის მოედანი        │ მარჯანიშვილი, ნაძალადევი, წერეთელი       │
# └─────────────────────────┴──────────────────────────────────────────┘

DEPENDENCIES

Class::Utils, Error::Pure, Map::Tube::Text::Table::Utils, List::MoreUtils, 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-Table

AUTHOR

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

http://skim.cz

LICENSE AND COPYRIGHT

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

VERSION

0.05