Passed
Push — master ( e9b4be...fdfd44 )
by Paul
01:35
created

FontExtractor.extract()   A

Complexity

Conditions 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
dl 0
loc 5
ccs 3
cts 3
cp 1
crap 1
rs 9.4285
c 1
b 0
f 0
1 1
require_relative "file_system"
2
3 1
module Resume
4 1
  module CLI
5 1
    module FontExtractor
6 1
      module_function
7
8 1
      def extract(font)
9 1
        Zip::File.open(FileSystem.tmpfile_path(font[:filename])) do |file|
10 1
          extract_file(font, file)
11
        end
12
      end
13
14 1
      def extract_file(font, file)
15 1
        file.each do |entry|
16 2
          extract_entry(font[:files], entry)
17
        end
18
      end
19 1
      private_class_method :extract_file
20
21 1
      def extract_entry(files, entry)
22 2
        files.each do |_, filename|
23 3
          next unless entry.name.match(filename)
24
          # `true` in the block ensures any existing files are overwritten
25 2
          entry.extract(FileSystem.tmpfile_path(filename)) { true }
26 2
          break
27
        end
28
      end
29 1
      private_class_method :extract_entry
30
    end
31
  end
32
end
33