lib/fontist/import/recursive_extraction.rb in fontist-1.8.3 vs lib/fontist/import/recursive_extraction.rb in fontist-1.8.4

- old
+ new

@@ -17,11 +17,11 @@ @font_files = [] @collection_files = [] end def extension - File.extname(filename(@archive)).sub(/^\./, "") + fetch_extension(@archive) end def font_files ensure_extracted @font_files @@ -42,10 +42,14 @@ @operations.size == 1 ? @operations.first : @operations end private + def fetch_extension(file) + File.extname(filename(file)).sub(/^\./, "") + end + def filename(file) if file.respond_to?(:original_filename) file.original_filename else File.basename(file) @@ -80,19 +84,29 @@ extractor.extract end # rubocop:disable Metrics/MethodLength def choose_extractor(archive) - case filename(archive) - when /\.msi$/i + case fetch_extension(archive).downcase + when "msi" Extractors::OleExtractor.new(archive) - when /\.cab$/i + when "cab" Extractors::CabExtractor.new(archive) - when /\.exe$/i + when "exe" extractor = Extractors::SevenZipExtractor.new(archive) extractor.try ? extractor : Extractors::CabExtractor.new(archive) - else + when "zip" Extractors::ZipExtractor.new(archive) + when "rpm" + Extractors::RpmExtractor.new(archive) + when "gz" + Extractors::GzipExtractor.new(archive) + when "cpio" + Extractors::CpioExtractor.new(archive) + when "tar" + Extractors::TarExtractor.new(archive) + else + raise Errors::UnknownArchiveError, "Could not unarchive `#{filename(archive)}`." end end # rubocop:enable Metrics/MethodLength def save_operation(extractor)