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)