consolidation/filter-via-dot-access-data

此项目使用 dflydev/dot-access-data 为使用注解命令 / Robo 构建的应用提供简单的输出过滤功能。

2.0.2 2021-12-30 03:56 UTC

README

此项目使用dflydev/dot-access-data为使用annotated-command / Robo构建的应用提供简单的输出过滤功能。

ci scrutinizer codecov License

概览

此项目提供了一个简单的逻辑表达式评估器,可以与dflydev/dot-access-data结合使用,以过滤掉你可能作为 RowsOfFields 对象返回或嵌套 yaml/json 数组的排序结果。

API

要在你的注解命令感知应用(见g1a/starter)中使用此过滤器,请确保使用以下方式注册过滤钩子:

$commandClasses = [ 
    \Consolidation\Filter\Hooks\FilterHooks::class,   // Filter hooks
    \MyApp\Commands\MyCommands::class,                // Commandfiles for your application
];
$runner = new \Robo\Runner($commandClasses);

然后,任何返回 RowsOfFields 数据(见consolidation/output-formatters)或数组的命令都可以通过在命令方法上标注@filter-output简单地利用输出过滤器功能。

    /**
     * Convert a command from one format to another, potentially with filtering.
     *
     * @command example
     * @filter-output
     * @return array
     */
    public function example(array $parameters, $options = ['format' => 'yaml'])
    {
        return $this->doSomething($parameters);
    }

以这种方式标注命令将自动将--filter[=FILTER]选项附加到命令上。然后可以通过提供简单的表达式来过滤命令的输出

$ mycmd example p1 p2 --filter='color=red'

可以通过*=操作符进行包含比较

$ mycmd example p1 p2 --filter='color*=red'

最后,还可以通过~*进行正则表达式比较

$ mycmd example p1 p2 --filter='color~=#^red.*#'

过滤器根据对每个元素提供的表达式评估的结果决定是否包含或排除每个顶级元素

  • 可以测试嵌套数据元素,例如通过attributes.color=red
  • 可以使用简单的布尔逻辑,例如color=red&shape=round

不支持括号。

入门指南

要本地构建此项目,请按照以下步骤操作。

先决条件

安装依赖项

composer install

如果你希望为此项目构建 phar,请通过以下方式安装 box phar 构建器:

composer phar:install-tools

运行测试

可以通过一些简单的 composer 脚本来本地运行测试套件

部署

按照以下步骤进行部署:

  • 编辑 VERSION 文件以包含要发布的版本,并提交更改。
  • 运行 composer release

贡献

有关向提交拉取请求的详细信息,请参阅CONTRIBUTING.md

版本控制

我们使用SemVer进行版本控制。有关可用版本,请参阅发布页面。

作者

请参阅参与此项目的贡献者名单。

许可证

此项目受 MIT 许可证的许可 - 有关详细信息,请参阅LICENSE文件。