skyree/document-hash-indexer

将 csv 或 json 文档作为键值对索引到 yaml 文件中

v0.1 2019-12-09 18:54 UTC

This package is auto-updated.

Last update: 2024-09-10 06:04:07 UTC


README

此库允许您从 csv 文件或 json 字符串列表生成哈希值的索引。

结果是可以在快速比较中轻松使用的 yaml 文件,以便发现更改、添加和删除。

先决条件

  • php 7.1
  • ext-json

安装

从您的项目运行 composer require skyree/document-hash-indexer

入门

只需实例化一个 HashIndexer 并使用所需键运行 hash 方法即可。

示例

$hashIndexer = new HashIndexer(new JsonParser(), new LazyErrorHandler());
$outputFile = $hashIndexer->hash('file.json', 'foo');
echo file_get_contents($outputFile);

假设 file.json 包含以下内容

{"foo": "aaa", "bar": [{"a":  1, "b": 2}]}
{"foo": "bbb", "bar": [{"y":  4, "z": 5}]}

将得到以下结果

aaa: 7dc9c52dbf3e5a436ac2a40affed4d16
bbb: 288a8a3a1c2a8a370ea20b88b9b0f426

重要提示:如描述中所述,对于 json 文档,预期输入是 json 字符串列表,而不是格式正确的 json 对象。

重要提示 2:请确保您的输入文档具有唯一键(csv 列的值都不同或每行的值都不同的 json 节点),否则生成的 yaml 将无效,因为不允许重复。

解析器

此库附带 2 个解析器

  • ParserJson
  • ParserCsv

您可以通过实现 ParserInterface 创建和使用自己的解析器

错误处理器

这些处理器用于在行中找不到键时提供行为;此库附带 2 个处理器

  • LazyErrorHandler基本上忽略错误
  • ThresholdErrorHandler允许最多 n 个错误,然后中断

您可以通过实现 ErrorHandlerInterface 创建和使用自己的处理器

Symfony 集成

此库可以轻松地定义为一个或多个服务

Skyree\DocumentHashIndexer\Parser\JsonParser: ~

Skyree\DocumentHashIndexer\Parser\CsvParser: ~

Skyree\DocumentHashIndexer\ErrorHandler\LazyErrorHandler: ~

my_project.json_hash_indexer:
    class: Skyree\DocumentHashIndexer\HashIndexer
    arguments:
        $parser: '@Skyree\DocumentHashIndexer\Parser\JsonParser'
        $errorHandler: '@Skyree\DocumentHashIndexer\ErrorHandler\LazyErrorHandler'

my_project.csv_hash_indexer:
    class: Skyree\DocumentHashIndexer\HashIndexer
    arguments:
        $parser: '@Skyree\DocumentHashIndexer\Parser\CsvParser'
        $errorHandler: '@Skyree\DocumentHashIndexer\ErrorHandler\LazyErrorHandler'