正在获取所包含文件的 {docdatetime}
我正在使用AsciiDoc构建一个由多名贡献者共同协作的复杂文档,我想记录每个章节的最后修改日期。为此,我为每个章节创建了一个文件,并把它们全部包含在一个 top.adoc 文件中。然而,{docdatetime} 得到的却是顶层文件的最后修改时间。
是否有变通的方法,可以获取在使用 {docdatetime} 的那个文件的最后修改时间?
解决方案
这可以通过一个小脚本来实现,该脚本会挂钩到每个include文件并定义一个 {incdatetime}
require 'asciidoctor'
Asciidoctor::Extensions.register do
include_processor do
process do |document, reader, target, attributes|
inc_path = document.normalize_system_path target, reader.dir, nil, target_name: 'include file'
next unless File.exist?(inc_path)
content = File.read(inc_path)
incdatetime = File.mtime(inc_path).utc.strftime('%Y-%m-%dT%H:%M:%SZ')
content = ":incdatetime: #{incdatetime}\n\n#{content}"
reader.push_include content, inc_path, target
true
end
end
end
然后,我只需要像下面这样编译:
bundle exec asciidoctor-pdf -r ./incdatetime.rb ...
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。