aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bdrem/Renderer/Console.php68
-rw-r--r--src/bdrem/WebText.php1
2 files changed, 60 insertions, 9 deletions
diff --git a/src/bdrem/Renderer/Console.php b/src/bdrem/Renderer/Console.php
index 01d6eb2..195f53d 100644
--- a/src/bdrem/Renderer/Console.php
+++ b/src/bdrem/Renderer/Console.php
@@ -3,32 +3,82 @@ namespace bdrem;
class Renderer_Console
{
+ /**
+ * Use ANSI color codes for output coloring
+ *
+ * @var boolean
+ */
+ public $ansi = true;
+
+ /**
+ * @var \Console_Color2
+ */
+ protected $cc;
+
public function render($arEvents)
{
+ if ($this->ansi) {
+ $this->cc = new \Console_Color2();
+ }
+
$tbl = new \Console_Table(
CONSOLE_TABLE_ALIGN_LEFT,
- array('sect' => '', 'rule' => '-', 'vert' => '')
+ array('sect' => '', 'rule' => '-', 'vert' => ''),
+ 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),
+ $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;
+ }
}
?>
diff --git a/src/bdrem/WebText.php b/src/bdrem/WebText.php
index aaace51..fe2e5dc 100644
--- a/src/bdrem/WebText.php
+++ b/src/bdrem/WebText.php
@@ -7,6 +7,7 @@ class WebText extends Web
{
header('Content-type: text/plain; charset=utf-8');
$r = new Renderer_Console();
+ $r->ansi = false;
echo $r->render($arEvents);
}
}