class Fontist::SystemFont

Public Class Methods

expand_paths(paths) click to toggle source
# File lib/fontist/system_font.rb, line 36
def self.expand_paths(paths)
  paths.map do |path|
    require "etc"
    passwd = Etc.getpwuid
    username = passwd ? passwd.name : Etc.getlogin

    username ? path.gsub("{username}", username) : path
  end
end
find(font) click to toggle source
# File lib/fontist/system_font.rb, line 50
def self.find(font)
  new(font: font).find
end
find_styles(font, style) click to toggle source
# File lib/fontist/system_font.rb, line 54
def self.find_styles(font, style)
  new(font: font, style: style).find_styles
end
font_paths() click to toggle source
# File lib/fontist/system_font.rb, line 10
def self.font_paths
  system_font_paths + fontist_font_paths
end
fontist_font_paths() click to toggle source
# File lib/fontist/system_font.rb, line 46
def self.fontist_font_paths
  Dir.glob(Fontist.fonts_path.join("**"))
end
load_system_font_paths() click to toggle source
# File lib/fontist/system_font.rb, line 18
def self.load_system_font_paths
  os = Fontist::Utils::System.user_os.to_s
  templates = system_config["system"][os]["paths"]
  patterns = expand_paths(templates)

  Dir.glob(patterns)
  # File::FNM_CASEFOLD is officially ignored -- see https://ruby-doc.org/core-3.1.1/Dir.html#method-c-glob
  # "Case sensitivity depends on your system"
end
new(font:, style: nil) click to toggle source
# File lib/fontist/system_font.rb, line 5
def initialize(font:, style: nil)
  @font = font
  @style = style
end
reset_system_font_paths_cache() click to toggle source
# File lib/fontist/system_font.rb, line 32
def self.reset_system_font_paths_cache
  @system_font_paths = nil
end
system_config() click to toggle source
# File lib/fontist/system_font.rb, line 28
def self.system_config
  YAML.load_file(Fontist.system_file_path)
end
system_font_paths() click to toggle source
# File lib/fontist/system_font.rb, line 14
def self.system_font_paths
  @system_font_paths ||= load_system_font_paths
end

Public Instance Methods

find() click to toggle source
# File lib/fontist/system_font.rb, line 58
def find
  styles = find_styles
  return unless styles

  styles.map { |x| x[:path] }
end
find_styles() click to toggle source
# File lib/fontist/system_font.rb, line 65
def find_styles
  find_by_index
end