summaryrefslogtreecommitdiff
path: root/bin/dbwagenreihung
diff options
context:
space:
mode:
Diffstat (limited to 'bin/dbwagenreihung')
-rw-r--r--bin/dbwagenreihung69
1 files changed, 63 insertions, 6 deletions
diff --git a/bin/dbwagenreihung b/bin/dbwagenreihung
index 1d842fa..0d75fd7 100644
--- a/bin/dbwagenreihung
+++ b/bin/dbwagenreihung
@@ -6,6 +6,7 @@ use utf8;
our $VERSION = '0.00';
+use List::Util qw(min);
use Travel::Status::DE::IRIS;
use Travel::Status::DE::DBWagenreihung;
@@ -27,16 +28,72 @@ if (@trains != 1) {
my $wr = Travel::Status::DE::DBWagenreihung->new(
departure => $trains[0]->sched_departure,
+ developer_mode => 1,
train_number => $train_number,
);
+for my $section ($wr->sections) {
+ my $section_length = $section->{end_percent} - $section->{start_percent};
+ my $spacing_left = int(($section_length - 2) / 2) - 1;
+ my $spacing_right = int(($section_length - 2) / 2);
+
+ if ($section_length % 2) {
+ $spacing_left++;
+ }
+
+ printf("|%s%s%s|",
+ ' ' x $spacing_left,
+ $section->{name},
+ ' ' x $spacing_right
+ );
+}
+print "\n";
+
+my @start_percentages = map { $_->{position}{start_percent} } $wr->wagons;
+print ' ' x ((min @start_percentages) - 1);
+print '[';
+
for my $wagon ($wr->wagons) {
- printf("%s %2s", $wagon->section, $wagon->number || 'X');
- if ($wagon->class_type == 12) {
- print(" 1/2");
+ my $wagon_length = $wagon->{position}->{end_percent} - $wagon->{position}->{start_percent};
+ my $spacing_left = int($wagon_length / 2) - 2;
+ my $spacing_right = int($wagon_length / 2) - 1;
+
+ if ($wagon_length % 2) {
+ $spacing_left++;
}
- elsif ($wagon->class_type) {
- printf(" %d", $wagon->class_type);
+
+ my $wagon_desc = $wagon->number || '?';
+
+ if ($wagon->is_locomotive or $wagon->is_powercar) {
+ $wagon_desc = '<->';
}
- print("\n");
+
+ printf("%s%3s%s", ' ' x $spacing_left, $wagon_desc, ' ' x $spacing_right);
+}
+print "]\n";
+
+print ' ' x (min @start_percentages);
+for my $wagon ($wr->wagons) {
+ my $wagon_length = $wagon->{position}->{end_percent} - $wagon->{position}->{start_percent};
+ my $spacing_left = int($wagon_length / 2) - 2;
+ my $spacing_right = int($wagon_length / 2) - 1;
+
+ if ($wagon_length % 2) {
+ $spacing_left++;
+ }
+
+ my $class = '';
+
+ if ($wagon->class_type == 1) {
+ $class = ' 1 ';
+ }
+ elsif ($wagon->class_type == 2) {
+ $class = ' 2 ';
+ }
+ elsif ($wagon->class_type == 12) {
+ $class = '1/2';
+ }
+
+ printf("%s%3s%s", ' ' x $spacing_left, $class, ' ' x $spacing_right);
}
+print "\n";