class Fontist::Indexes::BaseIndex

Public Class Methods

from_yaml() click to toggle source
# File lib/fontist/indexes/base_index.rb, line 6
def self.from_yaml
  @from_yaml ||= begin
    unless Dir.exist?(Fontist.formulas_repo_path)
      raise Errors::MainRepoNotFoundError.new(
        "Please fetch formulas with `fontist update`.",
      )
    end

    rebuild unless File.exist?(path)

    data = YAML.load_file(path)
    new(data)
  end
end
new(data = {}) click to toggle source
# File lib/fontist/indexes/base_index.rb, line 35
def initialize(data = {})
  @index = {}

  data.each_pair do |key, paths|
    paths.each do |path|
      add_index_formula(key, IndexFormula.new(path))
    end
  end
end
path() click to toggle source
# File lib/fontist/indexes/base_index.rb, line 21
def self.path
  raise NotImplementedError, "Please define path of an index"
end
rebuild() click to toggle source
# File lib/fontist/indexes/base_index.rb, line 29
def self.rebuild
  index = new
  index.build
  index.to_yaml
end
reset_cache() click to toggle source
# File lib/fontist/indexes/base_index.rb, line 25
def self.reset_cache
  @from_yaml = nil
end

Public Instance Methods

add_formula(_formula) click to toggle source
# File lib/fontist/indexes/base_index.rb, line 51
def add_formula(_formula)
  raise NotImplementedError, "Please define how to add formula to an index, use #add_index_formula"
end
add_index_formula(key_raw, index_formula) click to toggle source
# File lib/fontist/indexes/base_index.rb, line 55
def add_index_formula(key_raw, index_formula)
  key = normalize_key(key_raw)
  @index[key] ||= []
  @index[key] << index_formula unless @index[key].include?(index_formula)
end
build() click to toggle source
# File lib/fontist/indexes/base_index.rb, line 45
def build
  Formula.all.each do |formula|
    add_formula(formula)
  end
end
load_formulas(key) click to toggle source
# File lib/fontist/indexes/base_index.rb, line 61
def load_formulas(key)
  index_formulas(key).map(&:to_full)
end
load_index_formulas(key) click to toggle source
# File lib/fontist/indexes/base_index.rb, line 65
def load_index_formulas(key)
  index_formulas(key)
end
to_h() click to toggle source
# File lib/fontist/indexes/base_index.rb, line 75
def to_h
  @index.map do |key, index_formulas|
    [key, index_formulas.map(&:to_s)]
  end.to_h
end
to_yaml() click to toggle source
# File lib/fontist/indexes/base_index.rb, line 69
def to_yaml
  dir = File.dirname(self.class.path)
  FileUtils.mkdir_p(dir) unless File.exist?(dir)
  File.write(self.class.path, YAML.dump(to_h))
end