X-Git-Url: https://git.cweiske.de/bdrem.git/blobdiff_plain/e86787a8eb6a31fbe95f1a3854d66e25e5e63c67..400a6537534c4083b39debdd9e49032daf093813:/src/bdrem/Renderer/Console.php diff --git a/src/bdrem/Renderer/Console.php b/src/bdrem/Renderer/Console.php index 01d6eb2..87eeb9a 100644 --- a/src/bdrem/Renderer/Console.php +++ b/src/bdrem/Renderer/Console.php @@ -1,34 +1,94 @@ loadConfig(); + if ($this->ansi) { + $this->cc = new \Console_Color2(); + } + $tbl = new \Console_Table( CONSOLE_TABLE_ALIGN_LEFT, - array('sect' => '', 'rule' => '-', 'vert' => '') + array('intersection' => '', 'horizontal' => '-', 'vertical' => ''), + 1, null, $this->ansi ); $tbl->setAlign(0, CONSOLE_TABLE_ALIGN_RIGHT); $tbl->setAlign(1, CONSOLE_TABLE_ALIGN_RIGHT); $tbl->setHeaders( - array('Days', 'Age', 'Name', 'Event', 'Date', 'Day') + $this->ansiWrap( + array('Days', 'Age', 'Name', 'Event', 'Date', 'Day'), + '%_%9' + ) + ); + $tbl->setBorderVisibility( + array( + 'left' => false, + 'right' => false, + 'top' => true, + 'bottom' => false, + 'inner' => true, + ) ); foreach ($arEvents as $event) { + $colorCode = null; + if ($event->days == 0) { + $colorCode = '%R'; + } $tbl->addRow( - array( - $event->days, - $event->age, - wordwrap($event->title, 30, "\n", true), - wordwrap($event->type, 20, "\n", true), - $event->date, - strftime('%a', strtotime($event->localDate)) + $this->ansiWrap( + array( + $event->days, + $event->age, + wordwrap($event->title, 30, "\n", true), + wordwrap($event->type, 20, "\n", true), + $this->getLocalDate($event->date), + strftime('%a', strtotime($event->localDate)) + ), + $colorCode ) ); } return $tbl->getTable(); } + + protected function ansiWrap($data, $colorCode = null) + { + if (!$this->ansi || $colorCode === null) { + return $data; + } + + foreach ($data as $k => &$value) { + $value = $this->cc->convert( + $colorCode . $value . '%n' + ); + } + return $data; + } + + protected function loadConfig() + { + if (isset($this->config->ansi)) { + $this->ansi = $this->config->ansi; + } + } } ?>