Class: Fontist::MacosImportSource

Inherits:
ImportSource
  • Object
show all
Defined in:
lib/fontist/macos_import_source.rb

Overview

Import source for macOS supplementary fonts

Tracks the specific framework version, catalog posting date, and asset ID for fonts imported from Apple’s macOS font catalogs.

Instance Method Summary collapse

Instance Method Details

#==(other) ⇒ Boolean Also known as: eql?

Equality check based on differentiation key

Parameters:

  • other (Object)

    The object to compare

Returns:

  • (Boolean)

    true if objects are equal



89
90
91
92
93
94
# File 'lib/fontist/macos_import_source.rb', line 89

def ==(other)
  return false unless other.is_a?(MacosImportSource)

  framework_version == other.framework_version &&
    asset_id&.downcase == other.asset_id&.downcase
end

#compatible_with_macos?(macos_version) ⇒ Boolean

Checks if this import source is compatible with a specific macOS version

Parameters:

  • macos_version (String)

    The macOS version to check

Returns:

  • (Boolean)

    true if compatible



59
60
61
62
# File 'lib/fontist/macos_import_source.rb', line 59

def compatible_with_macos?(macos_version)
  MacosFrameworkMetadata.compatible_with_macos?(framework_version,
                                                macos_version)
end

#descriptionString

Gets the description for this framework

Returns:

  • (String)

    The framework description



81
82
83
# File 'lib/fontist/macos_import_source.rb', line 81

def description
  MacosFrameworkMetadata.description(framework_version)
end

#differentiation_keyString?

Returns the asset ID in lowercase for consistent differentiation

Returns:

  • (String, nil)

    Lowercased asset ID or nil



23
24
25
# File 'lib/fontist/macos_import_source.rb', line 23

def differentiation_key
  asset_id&.downcase
end

#max_macos_versionString?

Gets the maximum macOS version for this framework

Returns:

  • (String, nil)

    The maximum macOS version or nil if unlimited



51
52
53
# File 'lib/fontist/macos_import_source.rb', line 51

def max_macos_version
  MacosFrameworkMetadata.max_macos_version(framework_version)
end

#min_macos_versionString?

Gets the minimum macOS version for this framework

Returns:

  • (String, nil)

    The minimum macOS version or nil



44
45
46
# File 'lib/fontist/macos_import_source.rb', line 44

def min_macos_version
  MacosFrameworkMetadata.min_macos_version(framework_version)
end

#outdated?(new_source) ⇒ Boolean

Checks if this import source is older than the provided new source

Parameters:

Returns:

  • (Boolean)

    true if this source is outdated



31
32
33
34
35
36
37
38
39
# File 'lib/fontist/macos_import_source.rb', line 31

def outdated?(new_source)
  return false unless new_source.is_a?(MacosImportSource)
  return false unless posted_date && new_source.posted_date

  Time.parse(posted_date) < Time.parse(new_source.posted_date)
rescue StandardError => e
  Fontist.ui.error("Error comparing import sources: #{e.message}")
  false
end

#parser_classString

Gets the parser class name for this framework

Returns:

  • (String)

    The fully qualified parser class name



74
75
76
# File 'lib/fontist/macos_import_source.rb', line 74

def parser_class
  MacosFrameworkMetadata.parser_class(framework_version)
end

#to_sString

Returns a human-readable string representation

Returns:

  • (String)

    String representation for debugging/logging



67
68
69
# File 'lib/fontist/macos_import_source.rb', line 67

def to_s
  "macOS Font#{framework_version} (posted: #{posted_date}, asset: #{asset_id})"
end