+ /**
+ * Let the CLI option parser parse the options.
+ *
+ * @param object $parser Option parser
+ *
+ * @return object Parsed command line parameters
+ */
+ protected function parseParameters(\Console_CommandLine $parser)
+ {
+ try {
+ $result = $parser->parse();
+
+ if ($result->options['configfile'] !== null) {
+ $this->config->cfgFiles = array($result->options['configfile']);
+ }
+
+ $this->config->daysNext = $result->options['daysNext'];
+ $this->config->daysPrev = $result->options['daysPrev'];
+ $this->config->renderer = $result->options['renderer'];
+ $this->config->stopOnEmpty = $result->options['stopOnEmpty'];
+ $this->config->setDate($result->options['date']);
+ if (isset($result->options['ansi'])) {
+ $this->config->ansi = $result->options['ansi'];
+ }
+ return $result;
+ } catch (\Exception $exc) {
+ $this->preRenderParameterError();
+ $parser->displayError($exc->getMessage());
+ }
+ }
+
+ /**
+ * Output the events
+ *
+ * @param array $arEvents Event objects to render
+ *
+ * @return void
+ */
+ protected function render($arEvents)
+ {
+ $r = $this->getRenderer();
+ $r->config = $this->config;
+
+ if ($this->config->stopOnEmpty && count($arEvents) == 0) {
+ $r->handleStopOnEmpty();
+ return;
+ }
+ $r->renderAndOutput($arEvents);
+ }
+
+ /**
+ * Load the configured renderer
+ *
+ * @return Renderer Renderer instance
+ */
+ protected function getRenderer()
+ {
+ $renderer = ucfirst($this->config->renderer);
+ if ($renderer == 'Htmltable') {
+ $renderer = 'HtmlTable';
+ }
+ $class = '\\bdrem\\Renderer_' . $renderer;
+ return new $class();
+ }
+
+ /**
+ * Handle any commands given on the CLI
+ *
+ * @param object $res Command line parameters and options
+ *
+ * @return void
+ */
+ protected function handleCommands($res)
+ {
+ }
+
+ /**
+ * Do something before a parameter parsing error is shown
+ *
+ * @return void
+ */
+ protected function preRenderParameterError()
+ {
+ }