Page MenuHomeDevCentral

D2527.id6374.diff
No OneTemporary

D2527.id6374.diff

diff --git a/src/Output/HTMLOutput.php b/src/Output/HTMLOutput.php
--- a/src/Output/HTMLOutput.php
+++ b/src/Output/HTMLOutput.php
@@ -4,8 +4,47 @@
class HTMLOutput extends Output {
- public function render () : string {
- return "";
+ private function makeId($name) : string {
+ return strtolower(str_replace(' ', '-', $name));
}
+ public function render () : string {
+ $report = $this->report;
+ $send = [];
+ $title = $report->title;
+ $send[] = '<h1 id="'.$this->makeId($title).'">'.$title.'</h1>';
+
+ foreach ($report->sections as $key => $section) {
+ $title = $section->title;
+ $send[] ='<h2 id="'.$this->makeId($title).'">'.$title.'</h2>';
+ foreach ($section->entries as $key => $entry) {
+ $title = $entry->title;
+ $send[] = '<h3 id="'.$this->makeId($title).'">'.$title.'</h3>';
+
+ $text = explode("\n\n", $entry->text);
+
+ foreach ($text as $key => $value) {
+ $send[] = '<p>'.$value.'</p>';
+ }
+ }
+ }
+ $send[] = '<hr>';
+
+ $send[] = '<h2 id="report-properties">Report properties</h2>';
+ $send[] = '<table>';
+ $send[] = ' <tbody>';
+
+ $properties = $report->properties;
+
+ foreach ($properties as $key => $value) {
+ $send[] = ' <tr>';
+ $send[] = ' <th>'.$key.'</th>';
+ $send[] = ' <td>'.$value.'</td>';
+ $send[] = ' </tr>';
+ }
+ $send[] = ' </tbody>';
+ $send[] = '</table>';
+ $send[] = '';
+ return implode("\n", $send);
+ }
}
diff --git a/src/Output/MarkdownOutput.php b/src/Output/MarkdownOutput.php
--- a/src/Output/MarkdownOutput.php
+++ b/src/Output/MarkdownOutput.php
@@ -5,6 +5,47 @@
class MarkdownOutput extends Output {
public function render () : string {
- return "";
+
+ $report = $this->report;
+ $send = [];
+ $send[] = '# '.$report->title;
+ $send[] = '';
+ foreach ($report->sections as $key => $section) {
+ $send[] ='## '. $section->title;
+ $send[] = '';
+ foreach ($section->entries as $key => $entry) {
+
+ $send[] = '### '.$entry->title;
+ $send[] = '';
+ $send[] = $entry->text;
+ $send[] = '';
+ }
+ }
+
+ $send[] = '---';
+ $send[] = '';
+ $properties = $report->properties;
+ $propertyMaxLength = 0;
+ $maxValue = 0;
+ foreach ($properties as $key => $value) {
+ $propertyMaxLength = max($propertyMaxLength, strlen($key));
+ $maxValue = max($maxValue, strlen($value));
+ }
+ if($propertyMaxLength < 8){ $propertyMaxLength = 8;
+};
+
+ $send[] = '| Property'.str_repeat(' ', $propertyMaxLength-8).' | '
+ .str_repeat(' ', $maxValue).' |';
+
+ $send[] = '|'.str_repeat('-', $propertyMaxLength+2).'|'
+ .str_repeat('-', $maxValue+2).'|';
+
+ foreach ($properties as $key => $value) {
+ $send[] = '| '.$key.str_repeat(' ', $propertyMaxLength-strlen($key)).' | '
+ .$value.str_repeat(' ', $maxValue-strlen($value)).' |';
+ }
+
+ $send[] = '';
+ return implode("\n", $send);
}
}
diff --git a/src/Output/XMLOutput.php b/src/Output/XMLOutput.php
new file mode 100644
--- /dev/null
+++ b/src/Output/XMLOutput.php
@@ -0,0 +1,54 @@
+<?php
+
+
+
+namespace Keruald\Reporting\Output;
+
+
+class XMLOutput extends Output {
+
+ public function render() : string {
+ $report = $this->report;
+ $send = [];
+ $send[] = '<?xml version="1.0" encoding="UTF-8" ?>';
+ $send[] = '<root>';
+ $send[] = ' <T1>'.$report->title.'</T1>';
+
+ foreach ($report->sections as $key => $section) {
+ $send[] =' <T2>'. $section->title.'</T2>';
+ foreach ($section->entries as $key => $entry) {
+
+ $send[] = ' <T3>'.$entry->title.'</T3>';
+
+ $text = explode("\n\n", $entry->text);
+
+ foreach ($text as $key => $value) {
+ $send[] = ' <p>'.$value.'</p>';
+ }
+ }
+ }
+
+ $send[] = '';
+ $send[] = ' <T1>Properties</T1>';
+ $send[] = '';
+ $send[] = ' <tableau>';
+
+ $properties = $report->properties;
+
+ foreach ($properties as $key => $value) {
+ $send[] = ' <ligne>';
+ $send[] = ' <colonne>'.$key.'</colonne>';
+ $send[] = ' <colonne>'.$value.'</colonne>';
+ $send[] = ' </ligne>';
+ }
+ $send[] = ' </tableau>';
+ $send[] = '';
+ $send[] = '</root>';
+ $send[] = '';
+
+
+
+ return implode("\n", $send);
+ }
+
+}
diff --git a/tests/Output/XMLOutputTest.php b/tests/Output/XMLOutputTest.php
new file mode 100644
--- /dev/null
+++ b/tests/Output/XMLOutputTest.php
@@ -0,0 +1,38 @@
+<?php
+
+namespace Keruald\Reporting\Tests\Output;
+
+
+use Keruald\Reporting\Output\XMLOutput;
+use Keruald\Reporting\Report;
+
+use Keruald\Reporting\Tests\WithSampleReport;
+use PHPUnit\Framework\TestCase;
+
+class XMLOutputTest extends TestCase {
+ use WithSampleReport;
+
+ ///
+ /// Initialization
+ //
+
+ public Report $report;
+
+ protected function setUp () : void {
+ $this->report = $this->buildSampleReport();
+ }
+
+ ///
+ /// Tests
+ //
+
+ public function testRender () : void {
+ $actual = XMLOutput::for($this->report)
+ ->render();
+
+ $expected = file_get_contents($this->getDataDir() . "/report.xml");
+
+ $this->assertEquals($expected, $actual);
+ }
+
+}
diff --git a/tests/data/report.html b/tests/data/report.html
--- a/tests/data/report.html
+++ b/tests/data/report.html
@@ -1,15 +1,3 @@
-<!doctype html>
-<html lang="en">
-<head>
- <meta charset="UTF-8">
- <meta name="viewport"
- content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
- <meta http-equiv="X-UA-Compatible" content="ie=edge">
- <meta name="X-Report-Date" content="9999-99-99">
- <meta name="X-Report-Topic" content="Urban culture">
- <title>Sneakers</title>
-</head>
-<body>
<h1 id="sneakers">Sneakers</h1>
<h2 id="air-max">Air Max</h2>
<h3 id="air-max-90">Air Max 90</h3>
@@ -26,7 +14,7 @@
<p>« Air Force 1. Zéro fan, que des fanatiques. » -- LTA</p>
<h2 id="👟">👟</h2>
<hr>
-<h2 id="ReportProperties">Report properties</h2>
+<h2 id="report-properties">Report properties</h2>
<table>
<tbody>
<tr>
@@ -39,5 +27,3 @@
</tr>
</tbody>
</table>
-</body>
-</html>
diff --git a/tests/data/report.xml b/tests/data/report.xml
new file mode 100644
--- /dev/null
+++ b/tests/data/report.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<root>
+ <T1>Sneakers</T1>
+ <T2>Air Max</T2>
+ <T3>Air Max 90</T3>
+ <p>One of the more icon color is the infrared.</p>
+ <T3>Air Max 95</T3>
+ <p>Launched in 1995, designed by Sergio Lozano.</p>
+ <T3>Air Max 97</T3>
+ <p>Well highlighted Air bubble.</p>
+ <p>Inspired by mountain bikes, while an urban legend quotes Japan bullet trains as inspiration.</p>
+ <T2>Other Nike Air</T2>
+ <T3>Introduction</T3>
+ <p>Because there are other sneakers than Air Max.</p>
+ <T3>Air Force 1</T3>
+ <p>« Air Force 1. Zéro fan, que des fanatiques. » -- LTA</p>
+ <T2>👟</T2>
+
+ <T1>Properties</T1>
+
+ <tableau>
+ <ligne>
+ <colonne>Date</colonne>
+ <colonne>9999-99-99</colonne>
+ </ligne>
+ <ligne>
+ <colonne>Topic</colonne>
+ <colonne>Urban culture</colonne>
+ </ligne>
+ </tableau>
+
+</root>

File Metadata

Mime Type
text/plain
Expires
Sat, Nov 16, 12:53 (21 h, 16 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2247555
Default Alt Text
D2527.id6374.diff (7 KB)

Event Timeline