- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试制作一个 Pod::Simple::HTML 的简单子(monad)类用于 Pod::Simple::HTMLBatch .我希望使用 POD::Weaver 对所有 POD 进行预处理.但是,我无法找到我应该使用哪些 API/命令来使用 Pod::Weaver 处理字符串文档。完成我想要的基本大纲是这样的:
use strict;
use warnings;
use Pod::Simple::HTMLBatch;
my $batchconv = Pod::Simple::HTMLBatch->new;
$batchconv->html_render_class('My::Pod');
$batchconv->batch_convert( ['path/to/code'], 'path/to/output' );
package My::Pod;
use Pod::Weaver;
use parent qw(Pod::Simple::HTML);
sub parse_file {
my ($self, $in_file) = @_;
my $new_doc = 'Pod::Weaver transformed pod here'
return $self->SUPER::parse_string_document($new_doc);
}
有没有人做过类似的事情?谁能告诉我如何使用 Pod:Weaver 转换 $in_file
,它可以是 .pm
或 .pod
文件?
最佳答案
好吧,事实证明这比预期的要难得多,而且这可能是个坏主意。我们真正需要的是一个将 Pod::Elemental 文档转换为 (X)HTML(5) 的新实用程序,它与 Pod::Simple::(X)HTML 兼容(以便我们可以继续使用旧的 CSS 样式)。如果有人写/找到合适的模块并在此处发布,我将接受另一个答案。
这就是我所做的。我不得不继承 POD::Simple::Search因为它使用不包含与 Pod::Weaver 一起使用的 =method
之类的正则表达式来检查 POD 文件。对于每个文件,我必须创建一个 PPI 文档并剥离 POD,然后连接 POD 并将其制作成 Pod::Elemental 文档。 Pod::Elemental::PerlMunger 就是这样做的,而 Dist::Zilla 就是这样做的。
package My::Pod;
use strict;
use warnings;
use Pod::Weaver;
use Pod::Elemental;
use Software::License::Perl_5;
use PPI;
use List::MoreUtils qw(any);
use parent qw(Pod::Simple::HTML);
my $weaver = Pod::Weaver->new_with_default_config;
my $license = Software::License::Perl_5->new({
holder => 'DFKI',
});
sub parse_file {
my ($self, $in_file) = @_;
my $doc = get_doc($in_file);
my $document = $weaver->weave_document({
pod_document => $doc->{pod},
ppi_document => $doc->{ppi},
authors => ['Nathan Glenn <garfieldnate@gmail.com>'],
license => $license,
});
return $self->SUPER::parse_string_document($document->as_pod_string);
}
#return {ppi, pod}
#Most of this taken from Pod::Elemental::PerlMunger
sub get_doc {
my ($file_name) = @_;
my $ppi_document = PPI::Document->new($file_name);
confess(PPI::Document->errstr) unless $ppi_document;
my @pod_tokens = map {"$_"} @{ $ppi_document->find('PPI::Token::Pod') || [] };
$ppi_document->prune('PPI::Token::Pod');
my $finder = sub {
my $node = $_[1];
return 0 unless any { $node->isa($_) }
qw( PPI::Token::Quote PPI::Token::QuoteLike PPI::Token::HereDoc );
return 1 if $node->content =~ /^=[a-z]/m;
return 0;
};
if ($ppi_document->find_first($finder)) {
warn "can't get POD from $file_name: there is POD inside string literals";
}
my $pod_str = join "\n", @pod_tokens;
my $pod_document = Pod::Elemental->read_string($pod_str);
return {ppi => $ppi_document, pod => $pod_document};
}
# search package to tell Pod::Simple::HTMLBatch that everything has POD
package My::Pod::Search;
use parent qw(Pod::Simple::Search);
#override this method to allow whatever kinds of POD commands (=method, etc.)
#mostly copied from Pod::Simple::Search
sub contains_pod {
my($self, $file) = @_;
my $verbose = $self->{'verbose'};
# check for one line of POD
$verbose > 1 and print " Scanning $file for pod...\n";
unless( open(MAYBEPOD,"<$file") ) {
print "Error: $file is unreadable: $!\n";
return undef;
}
local $_;
while( <MAYBEPOD> ) {
# a more forgiving pod regex for things like =method
if(m/^=(.+)\b/s) {
close(MAYBEPOD) || die "Bizarre error closing $file: $!\nAborting";
chomp;
$verbose > 1 and print " Found some pod ($_) in $file\n";
return 1;
}
}
close(MAYBEPOD) || die "Bizarre error closing $file: $!\nAborting";
$verbose > 1 and print " No POD in $file, skipping.\n";
return 0;
}
package main;
my $batchconv = Pod::Simple::HTMLBatch->new;
$batchconv->html_render_class('My::Pod');
$batchconv->search_class('My::Pod::Search');
$batchconv->batch_convert( ['path/to/code'], 'path/to/output' );
关于html - 在使用 Pod::Simple::HTML 之前使用 Pod::Weaver 预处理 POD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19461000/
kubernetes的新手,希望了解使用不同kubernetes对象的最佳实践,并且很难理解“Pods”和“Static Pods”在功能上的主要区别(如果有)吗? 主要问题如下: 问题1:如果有功能
以下是 pods 文件的截图,其中不包含 AFNetworking 库。当我在终端中运行命令 pod install 时,它安装了 AFNetworking 库版本 3.0.1。我无法理解为什么会这样
在通过 pod lib create projectName 创建的目录中执行 pod init 是否受支持?它似乎对我不起作用,但否则如何指定他们正在创建的 pod 的上游依赖项? pod inst
我正在尝试制作一个 Pod::Simple::HTML 的简单子(monad)类用于 Pod::Simple::HTMLBatch .我希望使用 POD::Weaver 对所有 POD 进行预处理.但
根据定义here , POD 是一个简单的类,没有用户定义的构造函数、非静态成员,并且只包含简单的数据类型。 问题是,下面这两个类是否等同于 POD 类型(就内存占用而言): class pod {
使用 Airflow 在 AWS EKS 上运行 KubernetesPodOperator 获取 kubernetes.client.rest.ApiException: (400),指出版本\"v
据我了解,当 POD 与服务对话时,IP 表已由 CNI 提供商更新(这可能特定于某些但不是所有 CNI 提供商)。 iptables 基本上提供了一个虚拟 IP,然后循环或分发(以某种方式)到后端临
我有一个 pod 需要将数据持久保存到 pod 外部的位置。我认为persistentVolume 是一个好主意。名为 writerPod 的 pod 需要对该卷进行读写访问。 多个其他 Pod(我称
我想知道,如果 HPA 考虑一个 pod 中多个容器的 CPU 利用率的平均值,以便向上/向下扩展数量。 pod 。例如,如果我为具有 2 个容器的部署(pod)指定如下所示的 HPA。为了让 HPA
我有以下情况: 我有几个微服务,现在只有两个是相关的。 - Web 套接字服务 API - 调度服务 我们有 3 个用户,我们将分别称为 1、2 和 3。这些用户将自己连接到我们后端的 Web 套接字
我已经注意到,当使用kubectl时,您几乎可以互换使用 pod 和 pods 。是否有任何实例可以使用一个实例而不是另一个实例来获得不同的结果,或者您可以只使用其中一个而不用担心呢? 例如: kub
我尝试使用命令 pod update 更新我的 podfile但它需要永远。 我也按照这个问题做了所有的步骤 cocoapods - 'pod install' takes forever但什么都没有
我正在设置一个 Kubernetes 主节点。 只是主节点,暂时没有工作节点。 使用 this tutorial. 完成设置,没有任何问题现在, $kubectl get pods -o wide -
是否可以在 pod install 期间让一个 Pod 保持不变和pod update ? pod update 不是一个选项。 最佳答案 您实际上可以使用pod update [NAMES...]来
基本上,我有一个部署,它创建了 3 个自动扩展的容器:PHP-FPM、NGINX 和包含应用程序的容器,所有这些都设置了 secret 、服务和入口。该应用程序还在 PHP-FPM 和 NGINX 之
在为Kubernetes创建/添加节点时,我们还必须创建Canal pod。 当前,kubernetes在尝试调度Pod之前不会等待Canal Pod准备就绪,从而导致失败(错误如下) Error s
我正在寻找一个选项来从部署/复制中删除 pod 而不删除它。我找到了一个很好的解决方案 using selector and labels here ,但在我的情况下这是不可能的,因为我不是 pod/
来自 PodInterface两个操作Delete和 Evict似乎具有相同的效果:删除旧 Pod 并创建一个新 Pod。 如果两个操作效果一样,为什么删除一个Pod并创建一个新的Pod需要两个API
Kubernetes版本1.12.3。 kubectl排水是先移开 pods 还是先创建 pods 。 最佳答案 您可以在节点上执行维护(例如内核升级,硬件维护等)之前,使用kubectlrain安全
有没有办法通过主机名访问 pod? 我有一个主机名:my-pod-1需要使用主机名连接到另一个 pod:my-pod-2 . 在没有服务的情况下实现这一目标的最佳方法是什么? 最佳答案 通过您的描述,
我是一名优秀的程序员,十分优秀!