perl - 如何实现自定义 Perl::PrereqScanner::NotQuiteLite 解析器
问题描述
尝试编写自定义解析器来查找通过DBIx::Class load_components
加载的模块,如下所示:
# lib/DBIC.pm
package DBIC;
use 5.026;
use Perl::PrereqScanner::NotQuiteLite::Util;
sub register {
return { use => { 'DBIx::Class::Core' => 'parse_dbic' } };
}
sub parse_dbic {
die 'We never reach this point';
}
1;
测试它:
# t/dbic.t
use 5.026;
use Test2::V0 -target => 'DBIC';
use Perl::PrereqScanner::NotQuiteLite;
my $scanner = Perl::PrereqScanner::NotQuiteLite->new( parsers => [':bundled', '+DBIC'] );
my $string = <<'EOF';
package My::Schema;
use base 'DBIx::Class::Core';
__PACKAGE__->load_components('UUIDColumns');
EOF
subtest 'DBIC custom parser' => sub {
is( $scanner->scan_string($string)->requires->as_string_hash,
{ 'base' => 0,
'DBIx::Class::Core' => 0,
'DBIx::Class::UUIDColumns' => 0,
},
'should find dependencies declared via "load_components"',
);
};
done_testing;
查看了其他解析器,包括:
从实现看来,上述实现应该会导致parse_dbic
被调用。
是否缺少一些应该触发函数被调用的东西?
解决方案
推荐阅读
- wso2 - 如何在容器环境中更改 WSO2 API Manager 3.1.0 中的日志级别?
- sql - 从开始日期到结束日期的每个日期的行
- html - 如何为特定文件夹编写异常
- java - 由于 [ERR 0512] 由于 Websphere 9 中的样式表错误,XsltPayloadTransformer 的 Bean 创建问题无法继续
- python - 按值过滤和除列
- django - 来自数据库的 Django 管理面板选择
- php - 用php解析谷歌提要文件中的节点?
- java - Spring Boot 中与 Apache Kafka 的 Json 消息通信
- terminal - 在 gdb 中产生字符的箭头键
- python - “SeriesGroupBy”对象没有属性“_aggregate_item_by_item”