File "demo_web.php"
Full Path: /home/humancap/cl.humancap.com.my/vendor/jfcherng/php-diff/example/demo_web.php
File size: 5.61 KB
MIME-type: text/x-php
Charset: utf-8
<?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>