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