Class: Fontist::Import::Files::FontDetector

Inherits:
Object
  • Object
show all
Defined in:
lib/fontist/import/files/font_detector.rb

Constant Summary collapse

REQUIREMENTS =
{ file: FileRequirement.new }.freeze
FONT_LABELS =
["OpenType font data",
"TrueType Font data"].freeze
COLLECTION_LABELS =
["OpenType font collection data",
"TrueType font collection data"].freeze
FONT_EXTENSIONS =
{
  "OpenType font data" => "otf",
  "TrueType Font data" => "ttf",
  "OpenType font collection data" => "ttc",
  "TrueType font collection data" => "ttc",
}.freeze

Class Method Summary collapse

Class Method Details

.detect(path) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
# File 'lib/fontist/import/files/font_detector.rb', line 22

def self.detect(path)
  brief = file_brief(path)

  if brief.start_with?(*FONT_LABELS)
    :font
  elsif brief.start_with?(*COLLECTION_LABELS)
    :collection
  else
    :other
  end
end

.file_brief(path) ⇒ Object



44
45
46
# File 'lib/fontist/import/files/font_detector.rb', line 44

def self.file_brief(path)
  REQUIREMENTS[:file].call(path)
end

.standard_extension(path) ⇒ Object



34
35
36
37
38
39
40
41
42
# File 'lib/fontist/import/files/font_detector.rb', line 34

def self.standard_extension(path)
  brief = file_brief(path)

  FONT_EXTENSIONS.each do |label, extension|
    return extension if brief.start_with?(label)
  end

  raise Errors::UnknownFontTypeError.new(path)
end