protected function execute(InputInterface $input, OutputInterface $output) { $statsTable = $this->doExecute($input, $output); if (!$statsTable instanceof StatsTable) { throw new RuntimeException('StatsTable expected'); } $dumper = null; if ($filename = $input->getOption('xls')) { $excelDumperOptions = array(); if (method_exists($this, 'getExcelDumperOptions')) { $excelDumperOptions = $this->getExcelDumperOptions(); } $dumper = new ExcelDumper($excelDumperOptions); } elseif ($filename = $input->getOption('csv')) { $csvDumperOptions = array(); if (method_exists($this, 'getCSVDumperOptions')) { $csvDumperOptions = $this->getCSVDumperOptions(); } $dumper = new CSVDumper($csvDumperOptions); } elseif ($filename = $input->getOption('html')) { $htmlDumperOptions = array(); if (method_exists($this, 'getHTMLDumperOptions')) { $htmlDumperOptions = $this->getHTMLDumperOptions(); } $dumper = new HTMLDumper($htmlDumperOptions); } if (null !== $dumper) { $contents = $dumper->dump($statsTable); if ($filename == '-') { $output->write($contents); } else { file_put_contents($filename, $contents); } } else { $tableHelper = new TableHelper(); $tableHelper->setHeaders($statsTable->getHeaders()); // Dump from CSV $dumper = new CSVDumper(); $dumper->enableHeaders(false); $dumper->enableAggregation(false); $data = $dumper->dump($statsTable); $fp = fopen('php://temp', 'rw'); fwrite($fp, $data); fseek($fp, 0, SEEK_SET); while ($line = fgetcsv($fp)) { $tableHelper->addRow($line); } if ($statsTable->getAggregations()) { $tableHelper->addRow($statsTable->getAggregations()); } $tableHelper->render($output); } }
public function testFormats() { $csvDumper = new CSVDumper(); $csvDumper->setLocale(''); $csvDumper->enableAggregation(false); $csvDumper->enableHeaders(false); // DATE $this->assertEquals("2014-01-01\n2014-01-01\n", $csvDumper->dump(new StatsTable(array(array('date' => '2014-01-01'), array('date' => new \DateTime('2014-01-01'))), array(), array(), array('date' => Format::DATE)))); // DATETIME $this->assertEquals("\"2014-01-01 00:00:00\"\n\"2014-01-01 00:00:00\"\n", $csvDumper->dump(new StatsTable(array(array('date' => '2014-01-01 00:00:00'), array('date' => new \DateTime('2014-01-01 00:00:00'))), array(), array(), array('date' => Format::DATETIME)))); // INTEGER $this->assertEquals("132\n133\n", $csvDumper->dump(new StatsTable(array(array('test' => 132), array('test' => 133.3)), array(), array(), array('test' => Format::INTEGER)))); // FLOAT2 $this->assertEquals("132.00\n133.35\n", $csvDumper->dump(new StatsTable(array(array('test' => 132), array('test' => 133.351)), array(), array(), array('test' => Format::FLOAT2)))); // MONEY $this->assertEquals("\"132 €\"\n\"133 €\"\n", $csvDumper->dump(new StatsTable(array(array('test' => 132), array('test' => 133.351)), array(), array(), array('test' => Format::MONEY)))); // MONEY2 $this->assertEquals("\"132.00 €\"\n\"133.35 €\"\n", $csvDumper->dump(new StatsTable(array(array('test' => 132), array('test' => 133.351)), array(), array(), array('test' => Format::MONEY2)))); // PCT $this->assertEquals("\"132 %\"\n\"133 %\"\n", $csvDumper->dump(new StatsTable(array(array('test' => 132), array('test' => 133.351)), array(), array(), array('test' => Format::PCT)))); // PCT2 $this->assertEquals("\"132.00 %\"\n\"133.35 %\"\n", $csvDumper->dump(new StatsTable(array(array('test' => 132), array('test' => 133.351)), array(), array(), array('test' => Format::PCT2)))); // String $this->assertEquals("132\n133.351\n", $csvDumper->dump(new StatsTable(array(array('test' => 132), array('test' => 133.351)), array(), array(), array('test' => Format::STRING)))); $csvDumper->enableAggregation(true); $csvDumper->enableHeaders(true); $this->assertEquals("Date,Hits\n2014-01-01,3\nTotal,3\n", $csvDumper->dump(new StatsTable(array(array('date' => '2014-01-01', 'hits' => 3)), array('date' => 'Date', 'hits' => 'Hits'), array('date' => 'Total', 'hits' => 3)))); }