decatur-vote / diffs-viewer
一个小型库,用于查看差异,由taeluf/liaison和decatur-vote/diffs-db构建
v1.0.x-dev
2023-11-01 15:09 UTC
Requires
- decatur-vote/diffs-db: v1.0.x-dev
- taeluf/liaison: v0.6.x-dev
Requires (Dev)
- taeluf/code-scrawl: v0.8.x-dev
- taeluf/tester: v0.3.x-dev
This package is auto-updated.
Last update: 2024-09-30 01:50:59 UTC
README
差异查看器
这是DecaturVote.com的差异查看器。使用Liaison构建。差异由decatur-vote/diffs-db和decatur-vote/text-diff管理。
安装
composer require decatur-vote/diffs-viewer v1.0.x-dev
或者在您的composer.json中
{"require":{ "decatur-vote/diffs-viewer": "v1.0.x-dev"}}
路由
默认基本URL为/diff/。(我认为Package::base_url可以更改,但我不确定如何更改,因为Liaison没有文档说明。)
/diff/{uuid}/- 显示特定源uuid的差异。如果$integration->can_access_diff($diff)返回false,则不会显示更多差异或全文。如果第一个差异无法访问,则原始文本也不会显示。/diff/admin/- 查看可用差异列表(按源uuid分组)。只有当$integration->canViewAdminPages()返回true时才可查看/diff/diffs.css- 查看差异的基本CSS。当请求/diff/{uuid}/时将自动添加。
使用方法
要设置查看器:使用Liaison设置它,调整样式,并添加一个用于所需回调的Integration类。
注意:设置decatur-vote/diffs-db以实际存储和管理您的差异,以便可以查看。
使用Liaison设置
<?php
$viewer_app = new \Lia\Package\Server($lia, 'decatur-vote:diffs-viewer', dirname(__DIR__).'/src/');
$viewer_app->integration = new \MyIntegrationClass();
设置集成
定义MyIntegrationClass。它必须实现src/IntegrationInterface.php:(这是一个来自我们测试的简单版本)
<?php
namespace DecaturVote\DiffsViewer\Test;
class Integration implements \DecaturVote\DiffsViewer\IntegrationInterface {
protected \PDO $pdo;
public function __construct(\PDO $pdo){
$this->pdo = $pdo;
}
public function getPdo(): \PDO{
return $this->pdo;
}
public function canViewAdminPages(): bool {
return true;
}
public function get_current_text(string $uuid): string {
return file_get_contents(__DIR__.'/../input/text-'.$uuid.'.txt');
}
public function can_access_diff(\DecaturVote\DiffDb\TextDiff $diff): bool {
return true;
}
public function clean_diff_opps(string $diff_ops): string {
return $diff_ops;
}
public function clean_text(string $text): string{
return str_replace("\n", "\n<br>",$text);
}
public function diffs_will_display(\Lia $lia): void {
// $lia->addResourceFile('path/to/styles.css');
}
}
样式
内建的唯一样式是用于差异列表的white-space:pre。请参阅src/public/diffs.css并根据需要覆盖样式
/** Container for displaying diffs */
.DiffList {
}
/** the full text for the current iteration */
.DiffList .full_text {
}
/** The diff operations */
.DiffList .changes {
white-space: pre;
}
测试
设置MySQL测试设置
在DiffsViewer根目录下创建文件mysql_settings.json,并用您的开发环境设置填充
警告:运行测试将删除您数据库中的所有文本差异
{
"database": "dbname",
"host": "localhost",
"user": "user_name",
"password": "bad_password"
}
然后您需要运行vendor/bin/phptest server,访问本地主机URL,然后转到/diff/admin/
截图
这些截图没有额外的样式或页面主题。
/diff/admin/:
/diff/{uuid}/: