module MojoMagick
  class Font
    attr_accessor :name, :family, :style, :stretch, :weight, :glyphs

    def valid?
      !name.nil?
    end

    def initialize(property_hash = {})
      property_hash.symbolize_keys!
      %i[name family style stretch weight glyphs].each do |f|
        setter = "#{f}="
        send(setter, property_hash[f])
      end
    end

    def self.all
      ImageMagick::Font.all.map { |font_info| Font.new(font_info) }
    end
  end
end