Class: Metanorma::Release::AssetProcessor
- Inherits:
-
Object
- Object
- Metanorma::Release::AssetProcessor
- Defined in:
- lib/metanorma/release/asset_processor.rb
Defined Under Namespace
Classes: ProcessResult
Constant Summary collapse
- CANONICALIZE_PATTERN =
/-ed\d+(\.\d+)?-/
Instance Method Summary collapse
-
#initialize(output_dir:, routing:, canonicalize: true) ⇒ AssetProcessor
constructor
A new instance of AssetProcessor.
- #process(zip_data, metadata) ⇒ Object
Constructor Details
#initialize(output_dir:, routing:, canonicalize: true) ⇒ AssetProcessor
Returns a new instance of AssetProcessor.
16 17 18 19 20 |
# File 'lib/metanorma/release/asset_processor.rb', line 16 def initialize(output_dir:, routing:, canonicalize: true) @output_dir = output_dir @routing = routing @canonicalize = canonicalize end |
Instance Method Details
#process(zip_data, metadata) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/metanorma/release/asset_processor.rb', line 22 def process(zip_data, ) files = [] Dir.mktmpdir do |tmp_dir| zip_path = File.join(tmp_dir, 'archive.zip') File.binwrite(zip_path, zip_data) Zip::File.open(zip_path) do |zip_file| zip_file.each do |entry| next if entry.directory? raw_name = File.basename(entry.name) file_name = @canonicalize ? canonicalize_name(raw_name) : raw_name relative_path = @routing.compute_path(file_name, ) dest_path = File.join(@output_dir, relative_path) FileUtils.mkdir_p(File.dirname(dest_path)) entry.extract(dest_path) { true } files << DocumentFile.new(name: file_name, path: relative_path) end end end ProcessResult.new(files: files, channels: ['channels']) end |