The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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