1
0
Fork 0
util-linux/tools/asciidoctor-includetracker.rb
Daniel Baumann c36e531662
Adding upstream version 2.41.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-21 11:26:35 +02:00

45 lines
1.2 KiB
Ruby

# Copyright (C) 2023 Thomas Weißschuh <thomas@t-8ch.de>
# Extensions for asciidoctor to write dependency files for include directives.
require 'asciidoctor/extensions'
module IncludeTracker
class Preprocessor < Asciidoctor::Extensions::Preprocessor
def process document, reader
document.attributes["include_dependencies"] = []
reader
end
end
class IncludeProcessor < Asciidoctor::Extensions::IncludeProcessor
def process doc, reader, target, attributes
docdir = doc.attributes["docdir"]
path = target
file = File.expand_path path, docdir
data = File.read file
reader.push_include data, file, path, 1, attributes
doc.attributes["include_dependencies"] << file
reader
end
end
class Postprocessor < Asciidoctor::Extensions::Postprocessor
def process document, output
outfile = document.attributes["outfile"]
fail if !outfile
File.open outfile + '.deps', 'w' do |f|
f.write outfile + ": " +
document.attributes["include_dependencies"].join(' ')
end
output
end
end
Asciidoctor::Extensions.register do
preprocessor Preprocessor
include_processor IncludeProcessor
postprocessor Postprocessor
end
end