mirror of
https://github.com/Icinga/icinga-php-thirdparty.git
synced 2025-08-23 10:38:18 +02:00
243 lines
4.9 KiB
PHP
243 lines
4.9 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
include __DIR__ . '/demo_base.php';
|
|
|
|
use Jfcherng\Diff\DiffHelper;
|
|
use Jfcherng\Diff\Factory\RendererFactory;
|
|
|
|
?>
|
|
<!DOCTYPE html>
|
|
<html>
|
|
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<title>jfcherng/php-diff - Examples</title>
|
|
|
|
<!-- Prism -->
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1/themes/prism-okaidia.min.css" />
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1/plugins/line-numbers/prism-line-numbers.min.css" />
|
|
|
|
<style type="text/css">
|
|
html {
|
|
font-size: 13px;
|
|
}
|
|
.token.coord {
|
|
color: #6cf;
|
|
}
|
|
.token.diff.bold {
|
|
color: #fb0;
|
|
font-weight: normal;
|
|
}
|
|
|
|
<?= DiffHelper::getStyleSheet(); ?>
|
|
</style>
|
|
</head>
|
|
|
|
<body>
|
|
<h1>None-level Diff</h1>
|
|
<?php
|
|
|
|
// demo the no-inline-detail diff
|
|
$inlineResult = DiffHelper::calculate(
|
|
$oldString,
|
|
$newString,
|
|
'Inline',
|
|
$diffOptions,
|
|
['detailLevel' => 'none'] + $rendererOptions,
|
|
);
|
|
|
|
echo $inlineResult;
|
|
|
|
?>
|
|
|
|
<h1>Line-level Diff (Default)</h1>
|
|
<?php
|
|
|
|
// demo the word-level diff
|
|
$inlineResult = DiffHelper::calculate(
|
|
$oldString,
|
|
$newString,
|
|
'Inline',
|
|
$diffOptions,
|
|
['detailLevel' => 'line'] + $rendererOptions,
|
|
);
|
|
|
|
echo $inlineResult;
|
|
|
|
?>
|
|
|
|
<h1>Word-level Diff</h1>
|
|
<?php
|
|
|
|
// demo the word-level diff
|
|
$inlineResult = DiffHelper::calculate(
|
|
$oldString,
|
|
$newString,
|
|
'Inline',
|
|
$diffOptions,
|
|
['detailLevel' => 'word'] + $rendererOptions,
|
|
);
|
|
|
|
echo $inlineResult;
|
|
|
|
?>
|
|
|
|
<h1>Character-level Diff</h1>
|
|
<?php
|
|
|
|
// demo the character-level diff
|
|
$inlineResult = DiffHelper::calculate(
|
|
$oldString,
|
|
$newString,
|
|
'Inline',
|
|
$diffOptions,
|
|
['detailLevel' => 'char'] + $rendererOptions,
|
|
);
|
|
|
|
echo $inlineResult;
|
|
|
|
?>
|
|
|
|
<h1>Side by Side Diff</h1>
|
|
<?php
|
|
|
|
// generate a side by side diff
|
|
$sideBySideResult = DiffHelper::calculateFiles(
|
|
$oldFile,
|
|
$newFile,
|
|
'SideBySide',
|
|
$diffOptions,
|
|
$rendererOptions,
|
|
);
|
|
|
|
echo $sideBySideResult;
|
|
|
|
?>
|
|
|
|
<h1>Inline Diff</h1>
|
|
<?php
|
|
|
|
// generate an inline diff
|
|
$inlineResult = DiffHelper::calculateFiles(
|
|
$oldFile,
|
|
$newFile,
|
|
'Inline',
|
|
$diffOptions,
|
|
$rendererOptions,
|
|
);
|
|
|
|
echo $inlineResult;
|
|
|
|
?>
|
|
|
|
<h1>Combined Diff</h1>
|
|
<?php
|
|
|
|
// generate a combined diff
|
|
$sideBySideResult = DiffHelper::calculateFiles(
|
|
$oldFile,
|
|
$newFile,
|
|
'Combined',
|
|
$diffOptions,
|
|
$rendererOptions,
|
|
);
|
|
|
|
echo $sideBySideResult;
|
|
|
|
?>
|
|
|
|
<h1>Unified Diff</h1>
|
|
<pre><code class="language-diff line-numbers"><?php
|
|
|
|
// generate a unified diff
|
|
$unifiedResult = DiffHelper::calculateFiles(
|
|
$oldFile,
|
|
$newFile,
|
|
'Unified',
|
|
$diffOptions,
|
|
$rendererOptions,
|
|
);
|
|
|
|
echo htmlspecialchars($unifiedResult);
|
|
|
|
?></code></pre>
|
|
|
|
<h1>Context Diff</h1>
|
|
<pre><code class="language-diff line-numbers"><?php
|
|
|
|
// generate a context diff
|
|
$contextResult = DiffHelper::calculateFiles(
|
|
$oldFile,
|
|
$newFile,
|
|
'Context',
|
|
$diffOptions,
|
|
$rendererOptions,
|
|
);
|
|
|
|
echo htmlspecialchars($contextResult);
|
|
|
|
?></code></pre>
|
|
|
|
<?php
|
|
|
|
// change JSON output settings for better human reading
|
|
$rendererOptions['outputTagAsString'] = true;
|
|
$rendererOptions['jsonEncodeFlags'] |= \JSON_PRETTY_PRINT;
|
|
|
|
?>
|
|
|
|
<h1>Text JSON Diff</h1>
|
|
<pre><code class="language-json line-numbers"><?php
|
|
|
|
// generate a plain text JSON diff
|
|
$jsonResult = DiffHelper::calculateFiles(
|
|
$oldFile,
|
|
$newFile,
|
|
'JsonText',
|
|
$diffOptions,
|
|
$rendererOptions,
|
|
);
|
|
|
|
echo htmlspecialchars($jsonResult);
|
|
|
|
?></code></pre>
|
|
|
|
<h1>HTML JSON Diff</h1>
|
|
<pre><code class="language-json line-numbers"><?php
|
|
|
|
// generate a HTML JSON diff
|
|
$jsonResult = DiffHelper::calculateFiles(
|
|
$oldFile,
|
|
$newFile,
|
|
'JsonHtml',
|
|
$diffOptions,
|
|
$rendererOptions,
|
|
);
|
|
|
|
echo htmlspecialchars($jsonResult);
|
|
|
|
?></code></pre>
|
|
|
|
<h1>HTML Diff from the Result of JSON Diff</h1>
|
|
<?php
|
|
|
|
$jsonArray = json_decode($jsonResult, true);
|
|
|
|
$htmlRenderer = RendererFactory::make('Inline', $rendererOptions);
|
|
$inlineResult = $htmlRenderer->renderArray($jsonArray);
|
|
|
|
echo $inlineResult;
|
|
|
|
?>
|
|
|
|
<!-- Prism -->
|
|
<script src="https://cdn.jsdelivr.net/npm/prismjs@1/prism.min.js"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/prismjs@1/components/prism-diff.min.js"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/prismjs@1/components/prism-json.min.js"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/prismjs@1/plugins/line-numbers/prism-line-numbers.min.js"></script>
|
|
</body>
|
|
|
|
</html>
|