Page MenuHomeDevCentral

D2505.id6388.diff
No OneTemporary

D2505.id6388.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,61 @@
class HTMLOutput extends Output {
- public function render () : string {
- return "";
+ private function makeId ($name) : string {
+ return urlencode(strtolower(str_replace(' ', '-', $name)));
+ }
+
+ private static function encode (string $text) : string {
+ return htmlspecialchars($text);
}
+ public function render () : string {
+ $report = $this->report;
+ $send = [];
+ $title = $report->title;
+ $send[] =
+ '<h1 id="' . $this->makeId($title) . '">' . self::encode($title)
+ . '</h1>';
+
+ foreach ($report->sections as $section) {
+ $title = $section->title;
+ $send[] =
+ '<h2 id="' . $this->makeId($title) . '">' .
+ self::encode($title) . '</h2>';
+ foreach ($section->entries as $entry) {
+ $title = $entry->title;
+ $send[] = '<h3 id="' . $this->makeId($title) . '">' .
+ self::encode($title) . '</h3>';
+
+ $text = explode("\n\n", $entry->text);
+
+ foreach ($text as $value) {
+ $send[] = '<p>' . self::encode($value) . '</p>';
+ }
+ }
+ }
+ $send[] = '<hr>';
+
+ $send[] = '<h2 id="report-properties">Report properties</h2>';
+ $send[] = '<table>';
+ $send[] = str_repeat(" ", 4) . '<tbody>';
+
+ $properties = $report->properties;
+
+ foreach ($properties as $key => $value) {
+ $send[] = str_repeat(" ", 4) . '<tr>';
+ $send[] = str_repeat(" ", 8) .
+
+ '<th>' . self::encode($key) . '</th>';
+ $send[] = str_repeat(" ", 8) .
+ '<td>' . self::encode($value) . '</td>';
+
+ $send[] = str_repeat(" ", 4) . '</tr>';
+ }
+ $send[] = str_repeat(" ", 4) . '</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,51 @@
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/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>
@@ -24,9 +12,9 @@
<p>Because there are other sneakers than Air Max.</p>
<h3 id="air-force-1">Air Force 1</h3>
<p>« Air Force 1. Zéro fan, que des fanatiques. » -- LTA</p>
-<h2 id="👟">👟</h2>
+<h2 id="%F0%9F%91%9F">👟</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>

File Metadata

Mime Type
text/plain
Expires
Sat, Nov 16, 09:44 (21 h, 20 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2247409
Default Alt Text
D2505.id6388.diff (4 KB)

Event Timeline