class Fontist::Formula
Constants
- NAMESPACES
Public Class Methods
Source
# File lib/fontist/formula.rb, line 96 def self.all formulas = Dir[Fontist.formulas_path.join("**/*.yml").to_s].map do |path| Formula.from_file(path) end FormulaCollection.new(formulas) end
Source
# File lib/fontist/formula.rb, line 104 def self.all_keys Dir[Fontist.formulas_path.join("**/*.yml").to_s].map do |path| path.sub("#{Fontist.formulas_path}/", "").sub(".yml", "") end end
Source
# File lib/fontist/formula.rb, line 110 def self.find(font_name) Indexes::FontIndex.from_file.load_formulas(font_name).first end
Source
# File lib/fontist/formula.rb, line 161 def self.find_by_font_file(font_file) key = Indexes::FilenameIndex.from_file .load_index_formulas(File.basename(font_file)) .flat_map(&:name) .first find_by_key(key) end
Source
# File lib/fontist/formula.rb, line 144 def self.find_by_key(key) path = Fontist.formulas_path.join("#{key}.yml") return unless File.exist?(path) from_file(path) end
Source
# File lib/fontist/formula.rb, line 140 def self.find_by_key_or_name(name) find_by_key(name) || find_by_name(name) end
Source
# File lib/fontist/formula.rb, line 151 def self.find_by_name(name) key = name_to_key(name) find_by_key(key) end
Source
# File lib/fontist/formula.rb, line 118 def self.find_fonts(font_name) formulas = Indexes::FontIndex.from_file.load_formulas(font_name) formulas.map do |formula| formula.all_fonts.select do |f| f.name.casecmp?(font_name) end end.flatten end
Source
# File lib/fontist/formula.rb, line 114 def self.find_many(font_name) Indexes::FontIndex.from_file.load_formulas(font_name) end
Source
# File lib/fontist/formula.rb, line 128 def self.find_styles(font_name, style_name) formulas = Indexes::FontIndex.from_file.load_formulas(font_name) formulas.map do |formula| formula.all_fonts.map do |f| f.styles.select do |s| f.name.casecmp?(font_name) && s.type.casecmp?(style_name) end end end.flatten end
Source
# File lib/fontist/formula.rb, line 170 def self.from_file(path) unless File.exist?(path) raise Fontist::Errors::FormulaCouldNotBeFoundError, "Formula file not found: #{path}" end content = File.read(path) from_yaml(content).tap do |formula| formula.path = path formula.name = titleize(formula.key_from_path) if formula.name.nil? end end
Source
# File lib/fontist/formula.rb, line 157 def self.name_to_key(name) name.downcase.gsub(" ", "_") end
Source
# File lib/fontist/formula.rb, line 184 def self.titleize(str) str.split("/").map do |part| part.tr("_", " ").split.map(&:capitalize).join(" ") end.join("/") end
Source
# File lib/fontist/formula.rb, line 92 def self.update_formulas_repo Update.call end
Public Instance Methods
Source
# File lib/fontist/formula.rb, line 241 def all_fonts Array(fonts) + collection_fonts end
Source
# File lib/fontist/formula.rb, line 245 def collection_fonts Array(font_collections).flat_map do |c| c.fonts.flat_map do |f| f.styles.each do |s| s.font = c.filename s.source_font = c.source_filename end f end end end
Source
# File lib/fontist/formula.rb, line 194 def downloadable? !resources.nil? && !resources.empty? end
Source
# File lib/fontist/formula.rb, line 223 def file_size return nil if resources.nil? || resources.empty? resources.first.file_size end
Source
# File lib/fontist/formula.rb, line 229 def font_by_name(name) all_fonts.find do |font| font.name.casecmp?(name) end end
Source
# File lib/fontist/formula.rb, line 235 def fonts_by_name(name) all_fonts.select do |font| font.name.casecmp?(name) end end
Source
# File lib/fontist/formula.rb, line 208 def key_from_path return "" unless @path escaped = Regexp.escape("#{Fontist.formulas_path}/") @path.sub(Regexp.new("^#{escaped}"), "").sub(/\.yml$/, "").to_s end
Source
# File lib/fontist/formula.rb, line 215 def license open_license || requires_license_agreement end
Source
# File lib/fontist/formula.rb, line 219 def license_required? requires_license_agreement ? true : false end
Source
# File lib/fontist/formula.rb, line 198 def source return nil if resources.empty? resources.first.source end
Source
# File lib/fontist/formula.rb, line 257 def style_override(font) all_fonts .map(&:styles) .flatten .detect { |s| s.family_name == font }&.override || {} end